欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > java >内容正文

java

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

发布时间:2024/8/1 java 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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方法@Overridepublic 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方法@Overridepublic 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方法@Overridepublic 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方法@Overridepublic String toString(){return "Test02_Faculty -- " + name;} }

Test02_Staff.java:Staff类

public class Test02_Staff extends Test02_Employee{// 头衔String title;// 重写toString方法@Overridepublic 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());} }

总结

以上是生活随笔为你收集整理的Java黑皮书课后题第11章:11.2(Person Student Employee Faculty Staff类)设计一个名为Person的类及其两个名为Student和Employee的子类的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。