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的子类相关推荐

  1. Java黑皮书课后题第3章:3.26(使用操作符 ||和^)编写一个程序,提示用户输入一个整数值,然后判断它能否被5和6整除、能否被5或6整除、以及能否被5或6整除但不能被同时整除

    3.26(使用操作符&& ||和^)编写一个程序,提示用户输入一个整数值,然后判断它能否被5和6整除.能否被5或6整除.以及能否被5或6整除但不能被同时整除 题目 题目概述 运行示例 ...

  2. Java黑皮书课后题第3章:3.12(回文数字)编写一个程序,提示用户输入一个三位的整数,然后确定它是否是回文数

    3.12(回文数字)编写一个程序,提示用户输入一个三位的整数,然后确定它是否是回文数 题目 题目描述 示例 破题 代码 题目 题目描述 3.12(回文数字)编写一个程序,提示用户输入一个三位的整数,然 ...

  3. Java黑皮书课后题第8章:*8.22(偶数个1)编写一个程序,产生一个6*6的填满0和1的二维矩阵,显示该矩阵,检测是否每行以及每列中有偶数个1

    *8.22(偶数个1)编写一个程序,产生一个6*6的填满0和1的二维矩阵,显示该矩阵,检测是否每行以及每列中有偶数个1 题目 题目描述 破题 代码 题目 题目描述 8.22(偶数个1)编写一个程序,产 ...

  4. Java黑皮书课后题第4章:*4.25(生成车牌号码)假设一个车牌号码由三个大写字母和后面的四个数字组成。编写一个程序,生成一个车牌号码

    *4.25(生成车牌号码)假设一个车牌号码由三个大写字母和后面的四个数字组成.编写一个程序,生成一个车牌号码 题目 题目概述 破题 代码 题目 题目概述 *4.25(生成车牌号码)假设一个车牌号码由三 ...

  5. Java黑皮书课后题第10章:*10.5(显示素数因子)编写一个程序,提示用户输入一个正整数,然后以降序显示它的所有最小因子

    *10.5(显示素数因子)编写一个程序,提示用户输入一个正整数,然后以降序显示它的所有最小因子 题目 程序 破题 代码 Test5.java Test5_StackOfIntegers.java 运行 ...

  6. Java黑皮书课后题第8章:*8.31(几何:交点)编写一个方法,返回两条直线的交点。四个点存放在4*2的二维数组points中。编写一个程序,提示用户输入4个点,并显示交点

    *8.31(几何:交点)编写一个方法,返回两条直线的交点.四个点存放在4*2的二维数组points中.编写一个程序,提示用户输入4个点,并显示交点 题目 题目描述 破题 代码 本题运行实例 题目 题目 ...

  7. Java黑皮书课后题第7章:*7.28(数学:组合)编写一个程序,提示用户输入10个整数,然后显示从这10个数中选出两个数的所有组合

    7.28(数学:组合) 题目 题目描述 破题 代码 运行示例 题目 题目描述 *7.28(数学:组合)编写一个程序,提示用户输入10个整数,然后显示从这10个数中选出两个数的所有组合 破题 声明一个长 ...

  8. Java黑皮书课后题第7章:**7.17(对学生排序)编写一个程序,提示用户输入学生个数、学生姓名和他们的成绩,然后按照学生成绩的降序打印学生的姓名。假定姓名是不包含空格的字符,使用next()读取

    **7.17(对学生排序)编写一个程序,提示用户输入学生个数.学生姓名和他们的成绩,然后按照学生成绩的降序打印学生的姓名.假定姓名是不包含空格的字符,使用next方法读取 题目 题目描述 破题 代码 ...

  9. Java黑皮书课后题第4章:*4.2(几何:最大圆距离)最大圆面积是指球面上两个点间的距离。编写一个程序,提示用户以度为单位输入地球上两个点的经纬度,显示其最大圆距离值

    *4.2(几何:最大圆距离)最大圆面积是指球面上两个点间的距离.编写一个程序,提示用户以度为单位输入地球上两个点的经纬度,显示其最大圆距离值 题目 题目概述 破题 运行示例 代码 题目 题目概述 *4 ...

  10. Java黑皮书课后题第7章:**7.23(游戏:储物柜难题)一个学校有100个储物柜和100个学生。所有的储物柜在上学的第一天都是关着的。…在所有学生都经过教学楼并且改变柜子之后,哪些柜子是开着的?

    7.23(游戏:储物柜难题)一个学校有100个储物柜和100个学生.所有的储物柜在上学的第一天都是关着的.-在所有学生都经过教学楼并且改变柜子之后,哪些柜子是开着的? 题目 题目描述 破题 代码 运行 ...

最新文章

  1. EJS 什么是EJS后缀文件 EJS怎么用
  2. 使用 QEMU 进行系统仿真
  3. python是一种什么类型的编程语言-Python这么火,为什么说它不是未来的编程语言?...
  4. BUU——WMCTF2020 - easy_re
  5. 2016.01.05 论文参考文献
  6. POI实现读写内容到word中
  7. 一文读懂FM算法优势,并用python实现
  8. Java hibernate假外键_java – Hibernate:外键的列数错误
  9. Entity Framework Core 中文入门文档
  10. 著名音频库多角度对比(多平台可用)
  11. Redis的使用原理
  12. induced pluripotent stem cell (iPSC) 诱导性多能干细胞
  13. C++中for循环的5种语法
  14. QTP自动化测试进阶
  15. 定义struct出错指针不允许指向不完整类型_Go入门系列(三)复合数据类型
  16. python包的init文件_Python模块包中__init__.py文件的作用
  17. java有关物流管理的简历_Java开发实习生大学生简历模板
  18. 美国计算机专业nlp大学排名,美国人工智能专业排名前7的一流学府 看看哪所院校最令你心动吧!...
  19. [乐意黎原创]PHP 老司机指南
  20. matlab 找最小值位置,matlab 向量最小值位置

热门文章

  1. 用户登陆_「python学习笔记」用户登陆需求实现(for/if/str知识点)
  2. flask返回json数据到前端_小白学Flask第六天| abort函数、自定义错误方法、视图函数的返回值...
  3. 阿里云IoT Studio升级版新增解决方案引擎,大幅提升方案交付效率
  4. 秒懂云通信:选云通信到底哪家强?
  5. Tengine开源新特性:如何让HTTPS处理能力轻松翻倍?
  6. 浅谈RTS游戏网络同步:3种同步机制模式的实现
  7. IL2CPP的优化 : Devirtualization 去虚拟化
  8. pyecharts基础系列总结(含全系列文章路径)
  9. Linux操作系统知识
  10. GTID的常见错误和处理方法