Problema 35
import java.util.ArrayList;
import java.util.Iterator;
abstract class Task{
public abstract int execute();
}
class SimpleTask extends Task{
private int timpExecutie;
public SimpleTask(int timpExecutie){
this.timpExecutie=timpExecutie;
}
public void changeTime(int timpExecutie){
this.timpExecutie=timpExecutie;
}
public int execute(){
return this.timpExecutie;
}
public String toString(){
return "SimpleTask("+this.timpExecutie+")";
}
}
class ConditionalTask extends Task{
private Task task1, task2;
public ConditionalTask(Task task1, Task task2){
this.task1=task1;
this.task2=task2;
}
public int execute(){
if(Math.random()<0.5)
return 5+task1.execute();
else
return 5+task2.execute();
}
public String toString() {
return "ContitionalTask( "+task1.toString()+", "+task2.toString()+")";
}
}
class BlockTask extends Task{
private ArrayList<Task> tasks=new ArrayList<>();
public void insert(Task task){
if(task==null){
throw new NullPointerException("Task-ul nu poate fi null");
}
else{
tasks.add(task);
}
}
public int execute(){
int sum=0;
for(Task task:tasks){
sum=sum+task.execute();
}
return sum;
}
public String toString() {
StringBuilder result=new StringBuilder();
result.append("Block(");
Iterator<Task> it=tasks.iterator();
result.append(it.next().toString());
while(it.hasNext()){
result.append(",").append(it.next().toString());
}
result.append(")");
return result.toString();
}
}
public class Main {
public static void main(String[] args) {
Task block=new BlockTask();
((BlockTask)block).insert(new SimpleTask(5));
((BlockTask)block).insert(new SimpleTask(4));
Task task=new ConditionalTask(new SimpleTask(155),block);
System.out.println(task);
System.out.println(task.execute());
}
}