AMTK404

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

目标:理解JAVA“基于契约”编程的思想
项目:定义一个类,能够完成两个功能:
1、加法:1+2+5+7
2、减法:10-3-2-1-5
package counter;
class MyAdd implements IAdd{
    @Override
    public int add(int num1, int num2) {
        return num1 + num2;
    }
}
class MySub implements ISub{
    @Override
    public int sub(int num1, int num2) {
        return num1 - num2;
    }
}

public class Start {
    public static void main(String[] args) {
        //方法一
        int add = MyMath1.add(1,2,3,4,5);
        int sub = MyMath1.sub(10,5,4,1);
        System.out.println("add="+add);
        System.out.println("sub="+sub);
        System.out.println("--------------------");
        //方法二
        MyMath2 myMath2 = new MyMath2(4,6);
        System.out.println("加法"+myMath2.add());
        System.out.println("减法"+myMath2.sub());
        System.out.println("--------------------");
        //方法三
        MyMath3 myMath3 = new MyMath3();
        int sum1 = myMath3.add(1,2);
        int sum2 = myMath3.sub(2,1);
        System.out.println("接口实现加法="+sum1);
        System.out.println("接口实现减法="+sum2);
        System.out.println("--------------------");
        //方法四
        MyAdd myAdd = new MyAdd();
        MySub mySub = new MySub();
        MyMath4 myMath4 = new MyMath4(myAdd,mySub);
        System.out.println("组合编程加法1="+myMath4.add(5,5));
        System.out.println("组合编程减法1="+myMath4.sub(5,5));
        System.out.println("--------------------");
        //方法五
        MyMath5 myMath5 = new MyMath5(myAdd,mySub);
        System.out.println("组合编程加法2="+myMath5.add(5,5));
        System.out.println("组合编程减法2="+myMath5.sub(5,5));
        System.out.println("--------------------");
    }
}
版本1、用函数库开发算法 :
操作:
*、定义MyMath1类
*、定义静态加法:int add(int,int...)
*、定义静态减法:int sub(int,int...)
*、main方法中调用
package counter;

public class MyMath1 {
    public MyMath1(){}
    public static int add(int...data){
        int sum = 0;
        for (int i=0;i<data.length;i++){
            sum += data[i];
        }
        return sum;
    }
    public static int sub(int...data){
        int sum =data[0];
        for (int i=1;i< data.length;i++){
            sum -= data[i];
        }
        return sum;
    }
}
版本2、用定义类的方法
*、定义MyMath2类
*、定义两个私有成员:int num1,int[]num2。
*、定义非空构造函数对num1和num2赋值。
*、定义方法:int add();int sub()。注意此时方法没有参数。
*、main方法中调用。
package counter;

public class MyMath2 {
    private int num1,num2;
    public MyMath2(){}
    public MyMath2(int num1,int num2){
        this.num1 = num1;
        this.num2 = num2;
    }
    public int add(){
        int sum;
        sum = num1 + num2;
        return sum;
    }
    public int sub(){
        int sum;
        sum = num1 - num2;
        return sum;
    }
}
版本3、用定义接口的方法
*、定义加法IAdd接口,方法:int add(int,int...)
*、定义减法ISub接口,方法:int sub(int,int...)
*、定义MyMath3类,同时实现加法和减少接口。
*、main方法中调用。
package counter;

public class MyMath3 implements IAdd, ISub {
    public MyMath3(){}

    @Override
    public int add(int num1,int num2) {
        return num1 + num2;
    }

    @Override
    public int sub(int num1,int num2) {
       return num1 - num2;
    }
}
interface IAdd {
    int add(int num1,int num2);
}
interface ISub {
    int sub(int num1,int num2);
}

版本5、用定义接口的方法-组合编程2
*、定义加法IAdd接口,方法:int add(int,int...)
*、定义减法ISub接口,方法:int sub(int,int...)
*、定义加法实现类MyAdd,实现加法接口
*、定义减法实现类MySub,实现减法接口
*、定义MyMath5类,注意也要实现加法和减法接口。
*、定义成员:
        IAdd addMember;
        ISub subMember;
*、定构造方法,对两个成员进行赋值。
*、实现加法接口:调用addMember完成加法。
*、实现减法接口:调用subMember完成减法。
*、main方法中调用。
package counter;

public class MyMath4 implements IAdd,ISub {
   private IAdd addMember;
   private ISub subMember;
   public MyMath4(){}
   public MyMath4(IAdd addMember,ISub subMember){
       this.addMember = addMember;
       this.subMember = subMember;
   }

    @Override
    public int add(int num1, int num2) {
        return this.addMember.add(num1, num2);
    }

    @Override
    public int sub(int num1, int num2) {
        return this.subMember.sub(num1, num2);
    }
}
版本4、用定义接口的方法-组合编程1
*、定义加法IAdd接口,方法:int add(int,int...)
*、定义减法ISub接口,方法:int sub(int,int...)
*、定义加法实现类MyAdd,实现加法接口
*、定义减法实现类MySub,实现减法接口
*、定义MyMath4类,定义成员:
                    IAdd addMember;
                    ISub subMember;
*、定构造方法,对两个成员进行赋值。
*、main方法中调用。
package counter;

public class MyMath5 {
    private IAdd addMember;
    private ISub subMember;
    public MyMath5(){}
    public MyMath5(IAdd addMember,ISub subMember){
        this.addMember = addMember;
        this.subMember = subMember;
    }
    public int add(int num1,int num2){
        return num1 + num2;
    }
    public int sub(int num1,int num2){
        return  num1 - num2;
    }
}

 

posted on 2022-05-24 20:19  AMTK  阅读(114)  评论(0)    收藏  举报