- 题目
- 缺陷
- 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,还会有很多问题,欢迎大佬指正
点击这里浏览编程练习题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());
}
}



