8-1 接口-实验

 

使用面向对象程序设计方法完成如下设计:

设计复数类Complex,包含类成员变量实部和虚部,方法包括构造方法和输出复数的方法。

设计接口Computable,包含抽象方法compute(Complex a, Complex b)。

设计4个类Add、Sub、Mul和Div,分别实现接口Computable,完成复数的加、减、乘、除运算。

设计类Computer,包含方法useCompute(Computable c, Complex a, Complex b),进行运算并输出结果。

在主方法中调用Computer类的对象的useCompute()方法进行测试。

// 复数类  
public class Complex {  
    private double real;  
    private double imag;  
  
    public Complex(double real, double imag) {  
        this.real = real;  
        this.imag = imag;  
    }  
  
    public double getReal() {  
        return real;  
    }  
  
    public double getImag() {  
        return imag;  
    }  
  
    @Override  
    public String toString() {  
        return real + " + " + imag + "i";  
    }  
}  
  
// Computable接口  
public interface Computable {  
    Complex compute(Complex a, Complex b);  
}  
  
// 加法类  
public class Add implements Computable {  
    @Override  
    public Complex compute(Complex a, Complex b) {  
        return new Complex(a.getReal() + b.getReal(), a.getImag() + b.getImag());  
    }  
}  
  
// 减法类  
public class Sub implements Computable {  
    @Override  
    public Complex compute(Complex a, Complex b) {  
        return new Complex(a.getReal() - b.getReal(), a.getImag() - b.getImag());  
    }  
}  
  
// 乘法类  
public class Mul implements Computable {  
    @Override  
    public Complex compute(Complex a, Complex b) {  
        double real = a.getReal() * b.getReal() - a.getImag() * b.getImag();  
        double imag = a.getReal() * b.getImag() + a.getImag() * b.getReal();  
        return new Complex(real, imag);  
    }  
}  
  
// 除法类  
public class Div implements Computable {  
    @Override  
    public Complex compute(Complex a, Complex b) {  
        double denominator = b.getReal() * b.getReal() + b.getImag() * b.getImag();  
        double real = (a.getReal() * b.getReal() + a.getImag() * b.getImag()) / denominator;  
        double imag = (a.getImag() * b.getReal() - a.getReal() * b.getImag()) / denominator;  
        return new Complex(real, imag);  
    }  
}  
  
// Computer类  
public class Computer {  
    public void useCompute(Computable c, Complex a, Complex b) {  
        Complex result = c.compute(a, b);  
        System.out.println("Result: " + result);  
    }  
}  
  
// 主方法  
public class Main {  
    public static void main(String[] args) {  
        Complex a = new Complex(1, 2);  
        Complex b = new Complex(3, 4);  
  
        Computer computer = new Computer();  
  
        computer.useCompute(new Add(), a, b);     // 加法  
        computer.useCompute(new Sub(), a, b);     // 减法  
        computer.useCompute(new Mul(), a, b);     // 乘法  
        computer.useCompute(new Div(), a, b);     // 除法  
    }  
}

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值