interface math {double result(double x);//计算带入具体x的返回结果math set(double x);//不同计算增加的内容}public class project7 {public static void main(String[] args) {// x 当 x = 3System.out.println(new Function().result(3));// x+x 当 x = 4System.out.println(new Function().addition().result(4));// (x+x)*3 当 x = 5System.out.println(new Function().addition().multiplication(3).result(5));}
}//函数
class Function {private math function;double x;public double result(double x) {//带入值计算返回结果this.x = x;sult(x);}//创建函数public Function() {this.function = new Subject();}//传参的位常数 不传参的是自变量//加法public Function addition(double x) {function = new addition(function).set(x);return this;}public Function addition() {function = new addition(function).Add();return this;}//乘法public Function multiplication(double x) {function = new multiplication(function).set(x);return this;}public Function multiplication() {function = new multiplication(function).Add();return this;}//减法public Function subtraction (double x) {function = new subtraction(function).set(x);return this;}public Function subtraction () {function = new subtraction(function).Add();return this;}//除法public Function division(double x) {function = new division(function).set(x);return this;}public Function division() {function = new division(function).Add();return this;}}class Subject implements math {math target,X = null;double x;public Subject() { }public double result(double x) {return x;}public Subject(math target) {this.target = target;}public math set(double x) {this.x = x;return this;}private double R(double x) {sult(x);}//增加新变量public math Add(){X = new Subject();return this;}}class addition extends Subject {public addition(math target) {super(target);}public double result(double x) {sult(x) + ( X == null ? this.x : X.result(x) );}}class subtraction extends Subject {public subtraction(math target) {super(target);}public double result(double x) {sult(x) - ( X == null ? this.x : X.result(x) );}
}class multiplication extends Subject {public multiplication(math target) {super(target);}public double result(double x) {sult(x) * ( X == null ? this.x : X.result(x) );}
}class division extends Subject {public division(math target) {super(target);}public double result(double x) {sult(x) / ( X == null ? this.x : X.result(x) );}
}
成员变量target是一定存在的,X是后添加的函数可有可无
加减乘除为具体的装饰类
X == null ? this.x : X.result(x)
这个意思是判断有没有增加自变量,如果add的是自变量就让参数和X关联
如果添加的不是自变量add的就是常数,跟参数无关
具体函数
有点小毛病就是不能实现类似于
6 x 3 x + 2 frac{6x}{3x+2} 3x+26x
上下都是函数的
需要建立两个分子代理和分母代理才能间接实现
本文发布于:2024-01-29 19:00:52,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170652605617586.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |