package models.deltaAlgebra;
import java.util.ArrayList;
import java.util.List;
public class DeltaSum extends DeltaCombination {
private List<DeltaExpression> components;
public DeltaSum(DeltaExpression left, DeltaExpression right) {
this.components = new ArrayList<>();
this.components.add(left);
this.components.add(right);
}
public DeltaSum(List<DeltaExpression> components) {
this.components = components;
}
public DeltaSum add(DeltaExpression expression) {
components.add(expression);
return this;
}
@Override
public List<Delta> decompose() {
List<Delta> deltas = new ArrayList<>();
for (DeltaExpression component : components) {
deltas.addAll(component.decompose());
}
return deltas;
}
@Override
public DeltaSum copy() {
return new DeltaSum(new ArrayList<>(components));
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || !(o instanceof DeltaSum)) return false;
DeltaSum another = (DeltaSum) o;
return components.equals(another.components);
}
@Override
public int hashCode() {
return components.hashCode();
}
public String toString() {
String str = "";
String operator = "";
for (DeltaExpression component : components) {
str += operator + component.toString();
operator = " + ";
}
return str;
}
}