diff --git a/src/main/java/_4/_1/Function.java b/src/main/java/_4/_1/Function.java new file mode 100644 index 0000000..0483344 --- /dev/null +++ b/src/main/java/_4/_1/Function.java @@ -0,0 +1,23 @@ +package _4._1; + +public abstract class Function { + + protected Function predecessor; + + public Function() { + this.predecessor = null; + } + + public Function(Function predecessor) { + this.predecessor = predecessor; + } + + public double calculate(double x) { + if(this.predecessor == null) { + return this.apply(x); + } + return this.predecessor.calculate(x); + } + + protected abstract double apply(double x); +} diff --git a/src/main/java/_4/_1/SineFunction.java b/src/main/java/_4/_1/SineFunction.java new file mode 100644 index 0000000..c2d6ace --- /dev/null +++ b/src/main/java/_4/_1/SineFunction.java @@ -0,0 +1,16 @@ +package _4._1; + +public class SineFunction extends Function { + public SineFunction() { + super(); + } + + public SineFunction(Function predecessor) { + super(predecessor); + } + + @Override + public double apply(double x) { + return Math.sin(x); + } +} diff --git a/src/main/java/_4/_1/SquareFunction.java b/src/main/java/_4/_1/SquareFunction.java new file mode 100644 index 0000000..f07e58b --- /dev/null +++ b/src/main/java/_4/_1/SquareFunction.java @@ -0,0 +1,16 @@ +package _4._1; + +public class SquareFunction extends Function { + public SquareFunction() { + super(); + } + + public SquareFunction(Function predecessor) { + super(predecessor); + } + + @Override + protected double apply(double x) { + return x * x; + } +}