面向对象--练习题

练习题

 

/*

    定义一个类Demo,其中定义一个求两个数据和的方法,定义一个测试了Test,进行测试。
*/

class Demo {
    //第一种方式:
//    public int sum() {
//        int a = 11;
//        int b = 22;
//        int c = a + b;
//        return c;
//    }


    //第二种方式:
    //通过第一种方式实现了我们题目的需求
    //但是不好,因为加法的数值写固定了,所以不好
    //改进:可以将来传两个值进来
    public int sum(int x, int y) {
        return x + y;
    }

    //第二种方式对然相比较于第一种方式来说,虽然我们可以进行手动传入参数,但是
    //实现的过程并没有用到面向对象的封装的知识
    //我们可以尝试将两个参数定义为成员变量

    //第三种方式:
//    private int a;
//    private int b;
//
//    public int sum(int a,int b){
//        this.a = a;
//        this.b = b;
//        return (this.a+this.b);
//    }

    //问题:哪一种方式实现该问题的最优解?
    //其实,我们在面对业务问题的时候,什么时候考虑使用面向对象的思想
    //或者换句话说,什么情况下,将我们问题中的参数定义成成员变量呢?
    //只有当我们题目中参数与该类形成属性和行为的关系的时候,才定义成成员变量
    //因为类是用来描述现实世界事物的,
    //所以也就说成员变量是用来描述类
    //所以,这道题,第二种方式是最优解。

}

public class Test1 {
    public static void main(String[] args) {
        //创建对象
        Demo d = new Demo();
        int sum = d.sum(65,70);
        System.out.println(sum);

    }

}

 

/*
        定义一个长方形类,定义 求周长和面积的方法,
        然后定义一个测试了Test2,进行测试。

        长方形周长:(长+宽)* 2
        长方形的面积:长 * 宽

*/

class Rectangle {
    private int length;
    private int width;

    Rectangle() {

    }

    Rectangle(int length, int width) {
        if (length > width) {
            this.length = length;
            this.width = width;
        } else {
            this.length = width;
            this.width = length;
        }

    }

    public void setLength(int length) {
        this.length = length;
    }

    public int getLength() {
        return length;
    }

    public void setWidth(int width) {
        this.width = width;
    }

    public int getWidth() {
        return width;
    }

    public int getPerimeter() {
        return (length + width) * 2;
    }

    public int getArea() {
        return length * width;
    }

}


public class Test2 {
    public static void main(String[] args) {
        //使用带参数的构造方法创建对象
        Rectangle r1 = new Rectangle(10, 20);
        System.out.println("长方形的长为:" + r1.getLength());
        System.out.println("长方形的宽为:" + r1.getWidth());
        System.out.println("长方形的面积为:" + r1.getArea());
        System.out.println("长方形的周长为:" + r1.getPerimeter());

    }
}

 

/*
        定义一个员工类,自己分析出几个成员,
        然后给出成员变量,构造方法,getXxx()/setXxx()方法,
        以及一个显示所有成员信息的方法。并测试。


        员工:
            属性:工号,姓名,年龄,薪水
            行为:敲代码,吃饭,喝水

*/

class Staff {
    private String id;
    private String name;
    private int age;
    private int salary;

    Staff() {

    }

    Staff(String id, String name, int age, int salary) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.salary = salary;
    }


    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getSalary() {
        return salary;
    }

    public void setSalary(int salary) {
        this.salary = salary;
    }


    //以及一个显示所有成员信息的方法
    public void show() {
        System.out.println("工号:" + id + ",姓名:" + name + ",年龄:" + age + ",薪水:" + salary);
    }

}


public class Test3 {
    public static void main(String[] args) {
        //使用带参数的构造方法创建对象
        Staff s = new Staff("SJ005","王友虎",18,1000000);

        s.show();

    }
}

 

/*
        定义一个类MyMath,提供基本的加减乘除功能,然后进行测试

        导包import语句在所有的class之前
*/


import java.util.Scanner;

class MyMath {
    //加法功能
    public int add(int a, int b) {
        return a + b;
    }

    //减法功能
    public int sub(int a, int b) {
        return a - b;
    }

    //乘法功能
    public int mul(int a, int b) {
        return a * b;
    }

    //除法功能
    public double div(int a, int b) {
        return (a * 1.0) / b;
    }
}


public class Test4 {
    public static void main(String[] args) {
        MyMath compute = new MyMath();
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入第一个数据num1:");
        int num1 = sc.nextInt();
        System.out.println("请输入第二个数据num2:");
        int num2 = sc.nextInt();

        System.out.println("num1+num2=" + compute.add(num1, num2));
        System.out.println("num1-num2=" + compute.sub(num1, num2));
        System.out.println("num1*num2=" + compute.mul(num1, num2));
        System.out.println("num1/num2=" + compute.div(num1, num2));

    }
}

 

posted @ 2021-12-04 22:03  赤兔胭脂小吕布  阅读(65)  评论(0)    收藏  举报