栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java黑皮书课后题第11章:11.2(Person Student Employee Faculty Staff类)设计一个名为Person的类及其两个名为Student和Employee的子类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java黑皮书课后题第11章:11.2(Person Student Employee Faculty Staff类)设计一个名为Person的类及其两个名为Student和Employee的子类

Java黑皮书课后题第11章:11.2(Person Student Employee Faculty Staff类)
  • 题目
  • 缺陷
  • UML图
  • 代码
    • Test02_MyDate.java:用于参考的MyDate
    • Test02_Person.java:Person类
    • Test02_Student.java: Student类
    • Test02_Employee.java:Employee类
    • Test02_Faculty.java:Faculty类
    • Test02_Staff.java:Staff类
    • Test02.java:测试程序所在类

题目

11.2(Person、Student、Employee、Faculty和Staff类)设计一个名为Person的类及其两个名为Student和Employee的子类。Employee类又有子类:教员类Faculty和职员类Staff。每个人都有姓名、地址、电话号码和电子邮件地址。学生有班级状态(大一、大二、大三或大四)。将这些状态定义为常量。一个雇员涉及办公室、工资和受聘日期。使用编程练习题10.14中定义的MyDate类为受聘日期创建一个对象。教员有办公时间和级别。职员有头衔。重写每个类中的toString方法,显示相应的类名和人名。
画出这些类的UML图并实现这些类。编写一个测试程序,创建Person、Studet、Employee、Faculty和Staff,并且调用他们的toString方法,显示响应的类名和人名
画出这些类的UML图并实现这些类。编写一个测试程序,创建Person Student Employee Faculty和Staff,并调用它们的toString方法

缺陷

题目很冗长,但介绍还不全
各个方法有getter and setter、构造器方法没有、输出语句格式是什么……这些都没说
全凭感觉

UML图

博主刚刚入门UML,还会有很多问题,欢迎大佬指正

代码 Test02_MyDate.java:用于参考的MyDate

点击这里浏览编程练习题10.14中定义的MyDate类

import java.util.GregorianCalendar;

public class Test02_MyDate {
    int year, month, day;   // 月从0开始

    public Test02_MyDate(){
        GregorianCalendar gc = new GregorianCalendar();
        year = gc.get(GregorianCalendar.YEAR);
        month = gc.get(GregorianCalendar.MONTH);
        day = gc.get(GregorianCalendar.DAY_OF_MONTH);
    }

    public Test02_MyDate(long l){
        GregorianCalendar gc = new GregorianCalendar();
        gc.setTimeInMillis(l);
        year = gc.get(GregorianCalendar.YEAR);
        month = gc.get(GregorianCalendar.MONTH);
        day = gc.get(GregorianCalendar.DAY_OF_MONTH);
    }

    public Test02_MyDate(int year, int month, int day){
        this.year = year;
        this.month = month;
        this.day = day;
    }

    public void setDate(long elapsedTime){
        GregorianCalendar gc = new GregorianCalendar();
        gc.setTimeInMillis(elapsedTime + toCalender(year, month, day));
        year = gc.get(GregorianCalendar.YEAR);
        month = gc.get(GregorianCalendar.MONTH);
        day = gc.get(GregorianCalendar.DAY_OF_MONTH);
    }
    public long toCalender(int year, int month, int day){
        day += year * 365;
        switch (month){
            case 11: day += 31;
            case 10: day += 30;
            case 9: day += 31;
            case 8: day += 30;
            case 7: day += 31;
            case 6: day += 31;
            case 5: day += 30;
            case 4: day += 31;
            case 3: day += 30;
            case 2: day += 31;
            case 1: day += 28;
        }
        return (long) day * 24 * 60 * 60 * 1000;
    }
}
Test02_Person.java:Person类
public class Test02_Person {
    int name, address, phoneNumber, email;

    // 重写toString方法
    @Override
    public String toString(){
        return "Test02_Person -- " + name;
    }
}
Test02_Student.java: Student类
public class Test02_Student extends Test02_Person{
    static String dayi = "freshman";
    static String daer = "sophomore";
    static String dasan = "junior";
    static String dasi = "senior";

    // 重写toString方法
    @Override
    public String toString(){
        return "Test02_Student -- " + name;
    }
}
Test02_Employee.java:Employee类
import java.util.Date;

public class Test02_Employee extends Test02_Person{
    // 办公室
    String office;
    // 工资
    int salary;
    // 受聘日期
    Date dateOfEmploy;
    // 为受聘日期创建一个对象
    public static void main(String[] args) {
        Test02_MyDate my = new Test02_MyDate();
    }

    // 重写toString方法
    @Override
    public String toString(){
        return "Test02_Employee -- " + name;
    }
}
Test02_Faculty.java:Faculty类
import java.util.Date;

public class Test02_Faculty extends Test02_Employee{
    // 办公时间
    Date workTime;
    // 级别
    int level;
    // 重写toString方法
    @Override
    public String toString(){
        return "Test02_Faculty -- " + name;
    }
}
Test02_Staff.java:Staff类
public class Test02_Staff extends Test02_Employee{
    // 头衔
    String title;
    // 重写toString方法
    @Override
    public String toString(){
        return "Test02_Staff -- " + name;
    }
}
Test02.java:测试程序所在类
public class Test02 {
    public static void main(String[] args) {
        // 创建多个对象并调用toString方法
        Test02_Person p = new Test02_Person();
        System.out.println(p.toString());

        Test02_Student stu = new Test02_Student();
        System.out.println(stu.toString());

        Test02_Employee e = new Test02_Employee();
        System.out.println(e.toString());

        Test02_Faculty f = new Test02_Faculty();
        System.out.println(f.toString());

        Test02_Staff staff = new Test02_Staff();
        System.out.println(staff.toString());
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/361383.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号