计算机科学与技术学院实验报告(电子版)
课程: Java程序设计实验   
实验名称
面向对象编程(二)
指导老师
 
   
 
实验地点
实验日期
成绩
一、实验内容:
1.多态在工资系统中的应用。给出一个根据雇员类型利用多态性完成工资单计算的程序。定义一个类Employee作为超类,Employee的子类有Boss(每星期发给他固定工资,而不计工作时间)、PieceWorker(按其生产的产品数发放工资)、HourlyWorker(根据工作时间长短发放工资)。对所有雇员类型都使用earnings()方法完成其工资单的计算,但每个人挣的工资按他所属的雇员类计算,所有雇员类都是从超类Employee派出生的。所以在超类中声明earnings()方法,该方法没有实质性工作,而是在每个子类都提供恰当的earnings()方法的重写。为了计算雇员的工资,程序仅使用雇员对象的一个超类引导并调用earnings()方法。
2.接口的编写
定义一个接口Shape用于描述图形,具有计算其面积和周长的两个抽象方法GetArea()GetLength()。定义一个最终类Circle实现接口Shape,增加了一个描述半径的属性radius及带参的构造函数用于该类对象的初始化操作,同时实现了Shape接口中的两个抽象方法来计算圆的面积和周长定义一个最终类Rectangle实现接口Shape,增加了两个属性lengthwidth用于描述矩形的长和宽及带参的构造函数用于完成对该类对象的初始化,同时实现了Shape接口中的两个抽象方法来计算矩形的面积和周长。
定义主类分别创建CircleRectangle类对象,打印面积和周长。
二、实验目的:
1.理解类的继承和多态,熟练掌握 OOP 方式进行程序设计的方法。
2.掌握接口的编写及使用。
3.理解抽象类与最终类。
三、涉及实验的相关情况介绍(包含使用软件或实验设备等情况):
软件环境:Uedit+MSDOS
四、程序清单与测试数据:
试验一:
package h;
//定义超类Employee
abstract class Employee {
    public abstract double earnings();
}
//定义子类Boss
class Boss extends Employee {
    private double money;
    private int week;
    public Boss() {
    };
    public double getMoney() {
        return money;
    }
    public void setMoney(double money) {
        this.money = money;
    }
    public int getWeek() {
        return week;
    }
    public void setWeek(int week) {
        this.week = week;
    }
   
    public double earnings() {
        return week * money;
    }
}
//定义子类PieceWorker
class PieceWorker extends Employee {
    public double getMoney() {
        return money;
    }
    public void setMoney(double money) {
        this.money = money;
    }
    public int getNum() {
        return num;
    }
    public void setNum(int num) {
        this.num = num;
    }
    private double money;
    private int num;
    PieceWorker() {
    };
    public double earnings() {
        return num * money;
    }
}
//定义子类HourlyWorker
class HourlyWorker extends Employee {
    private int time;
    private double money;
    HourlyWorker() {
    }
    public int getTime() {
        return time;
    }
    public void setTime(int time) {
        this.time = time;
    }
    public double getMoney() {
        return money;
    }
    public void setMoney(double money) {
        this.money = money;
    }
    public double earnings() {
        return money * time;
    }
}
public class Money {
    public static void main(String[] args) {
        Boss b = new Boss();
        b.setWeek(3);
        b.setMoney(5000);
        PieceWorker p= new PieceWorker();
        p.setMoney(3);
        p.setNum(100);
        HourlyWorker h = new HourlyWorker();
        h.setMoney(20);
        h.setTime(9);
        Employee boss = b;
        Employee pie =p;
        Employee hour = h;
        System.out.println("Boss工资:"+boss.earnings());
        System.out.println("PieceWorker工资:radius软件"+pie.earnings());
        System.out.println("HourlyWorker工资:"+hour.earnings());
    }
}
2.接口的编写
package h;
import java.util.*;
//定义接口
interface Shape {
    double GetArea();
    double GetLength();
}
//圆类,实现接口
class Circle implements Shape {
    private double radius;
    public Circle() {
    }
    public Circle(double radius) {
        this.radius = radius;
    }
    public double GetArea() {
        return Math.PI * 2 * radius;
    }
    public double GetLength() {
        return Math.PI * Math.pow(radius, 2);
    }
}
//矩形类,实现接口Shape
class Rectangle implements Shape {
    private double length;
    private double width;
    public Rectangle() {
    }
    public Rectangle(double length, double width) {
        this.length = length;
        this.width = width;
    }
    public double GetArea() {
        return (length * width) * 2;
    }
    public double GetLength() {
        return length * width;
    }
}
public class Represent {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入圆的半径:");
        Shape c = new Double());
        System.out.println("圆的面积为:"+c.GetArea()+"    圆的周长为:"+c.GetLength());
        System.out.println("请输入矩形的长和宽:");
        Shape r = new Double(),sc.nextDouble());
        System.out.println("矩形的面积为:"+r.GetArea()+"矩形的周长为:"+r.GetLength());
    }
}
五、实验结果、分析、体会等:
试验一:
试验二:
分析与体会??

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。