0
点赞
收藏
分享

微信扫一扫

实验2 类与对象

正义的杰克船长 2022-03-22 阅读 102
java

Java作为一种面向对象语言。支持以下基本概念:

  • 多态
  • 继承
  • 封装
  • 抽象
  • 对象
  • 实例
  • 方法
  • 重载

本节我们重点研究对象和类的概念。

  • 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
  • :类是一个模板,它描述一类对象的行为和状态。

下图中男孩(boy)女孩(girl)类(class),而具体的每个人为该类的对象(object)

实验目的

(1)掌握Java类的结构、类的定义、方法和属性的定义以及对象的实现;

(2)掌握类及其成员修饰符的使用;掌握构造函数的使用;方法的参数传递和返回值的用法。

实验内容

(1)编写3个基本类: Triangle, Ladder和Circle,分别用来刻画“三角形”、“梯形”和“圆形”类; 1个主类: Compute,负责计算每个形状的面积或周长。

具体要求:

  • Triangle 定义3个变量:边长;和1个求周长的方法。
  • public class Triangle {
            private double a;
            private double b;
            private double c;
            Triangle(double a,double b,double c){
                this.a=a;
                this.b=b;
                this.c=c;
            }
            Triangle(){
            }
    
            public void setA(double a) {
                this.a = a;
            }
    
            public void setB(double b) {
                this.b = b;
            }
    
            public void setC(double c) {
                this.c = c;
            }
    
            public void getlong(){
                System.out.print(a+b+c);
            }
        }
    }
    

  • Ladder  定义3个变量:上底,下底和高;定义1个求面积的方法。
  • public class Ladder {
        private double up;
        private double down;
        private double heigh;
        Ladder(double up,double down,double heigh){
            this.up=up;
            this.down=down;
            this.heigh=heigh;
        }
        Ladder(){
        }
    
        public void setUp(double up) {
            this.up = up;
        }
    
        public void setDown(double down) {
            this.down = down;
        }
    
        public void setHeigh(double heigh) {
            this.heigh = heigh;
        }
        public void getmeasure(){
            System.out.print((up+down)*heigh/2);
        }
    }
    

  • Circle   定义1个变量:半径;定义2个方法:求面积、求周长。
  • public class Circle {
        private double R;
        Circle(double r){
            R=r;
        }
        Circle(){
        }
    
        public void setR(double r) {
            R = r;
        }
    
        public void getlong(){
            System.out.print(2*Math.PI*R);
        }
        public void getmeasure(){
            System.out.print(Math.PI*R*R);
        }
    }
    

  • 3个基本类都要定义相应的构造方法,对变量进行初始化。
  • public class Computer {
        public static void main(String[] args) {
            Triangle triangle = new Triangle(10,10,10);
            Ladder ladder = new Ladder(5,6,7);
            Circle circle = new Circle(3);
            System.out.print("\n三角形周长:\n");
            triangle.getlong();
            System.out.print("\n梯形面积:\n");
            ladder.getmeasure();
            System.out.print("\n圆形形周长:\n");
            circle.getlong();
            System.out.print("\n圆形面积:\n");
            circle.getmeasure();
        }
    }
    

(2)编写一个账户类Account,它包括:一个名为id的int型账号码属性,一个名为balance的double型的账号余额属性,定义一个类型为java.util.Date的属性dateCreated,用于记录账号的创建日期。同时,定义无参的构造函数,一个名为withDraw的方法从账号提取特定数目的金额,一个名为deposit的方法向账号存入特定数目的金额。请编写测试程序,测试各个方法。

import java.util.Date;

public class Account {
    private int id;
    private double balance;
    private java.util.Date dateCreated;
    Account(int id,double balance){
        this.id=id;
        this.balance=balance;
        this.dateCreated=new Date();
    }

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

    public void setBalance(double balance) {
        this.balance = balance;
    }

    public void setDateCreated(Date dateCreated) {
        this.dateCreated = dateCreated;
    }

    public int getId() {
        return id;
    }

    public double getBalance() {
        return balance;
    }

    public Date getDateCreated() {
        return dateCreated;
    }

    public void withDraw(double sum){
        balance-=sum;
    }

    public void deposit(double sum){
        balance+=sum;
    }

    public static void main(String[] args){
        Account me=new Account(123,999);
        me.deposit(100);
        System.out.print("ID:\n");
        System.out.print(me.getId());
        System.out.print("\n当前余额为:\n");
        System.out.print(me.getBalance());
        System.out.print("\n时间:\n");
        System.out.print(me.getDateCreated());
        System.out.print("\n");
        me.withDraw(30);
        System.out.print("\n当前余额为:\n");
        System.out.print(me.getBalance());
    }
}

(3)编写一个封装学生的类Student,能够描述学生的“学号”、“ 姓名”、“性别”、“年龄”、“平均成绩”等基本属性,及获取属性、修改属性的方法和打印学生基本信息的print()方法。要求生成两个学生对象,在构造方法中进行初始化,并打印每个学生的基本信息。

public class Student {
    private int ID;
    private String name;
    private String gender;
    private int age;
    private double Averagescore;

    Student(int ID,String name,String gender,int age,double Averaescore) {
        this.ID=ID;
        this.name=name;
        this.gender=gender;
        this.age=age;
        this.Averagescore=Averaescore;
    }
    Student(){
    }

    public void setAveragescore(double averagescore) {
        Averagescore = averagescore;
    }

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

    public void setGender(String gender) {
        this.gender = gender;
    }

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

    public void setID(int ID) {
        this.ID = ID;
    }

    public String getName() {
        return name;
    }

    public int getID() {
        return ID;
    }

    public String getGender() {
        return gender;
    }

    public int getAge() {
        return age;
    }

    public double getAveragescore() {
        return Averagescore;
    }
    public void print(){
        System.out.printf("姓名:%s  学号:%d  性别:%s  年龄:%d  平均成绩:%.1f",name,ID,gender,age,Averagescore);
    }

    public static void main(String[] args) {
        Student 张三 = new Student(2203082,"张三","男",20,100);
        Student 李四 = new Student(1234567,"李四","男",10,100);
        张三.print();
        System.out.print("\n");
        李四.print();

    }
}
举报

相关推荐

0 条评论