定义普通人老师班主任学生学校这些类提供适当的成员变量成员方法用于描述其内部数据和行为特征并提供主类使之运行。要求程序有良好的封装性将不同类放在不同的包下面增加文档注释生成api文件
以下是普通人(Person)、老师(Teacher)、班主任(HeadTeacher)、学生(Student)、学校(School)这些类的定义。
Person类:
package com.example.school;
/**
* 普通人类,用于描述一个普通人的数据和行为特征
*/
public class Person {
private String name; // 姓名
private int age; // 年龄
private String gender; // 性别
/**
* 构造方法,用于创建一个普通人对象
* @param name 姓名
* @param age 年龄
* @param gender 性别
*/
public Person(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
// getter和setter方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
/**
* 打招呼的方法
*/
public void sayHello() {
System.out.println("大家好,我是" + name + ",今年" + age + "岁,是个" + gender + "的人。");
}
}
Teacher类:
package com.example.school;
/**
* 老师类,用于描述一个老师的数据和行为特征
*/
public class Teacher extends Person {
private String subject; // 所教科目
/**
* 构造方法,用于创建一个老师对象
* @param name 姓名
* @param age 年龄
* @param gender 性别
* @param subject 所教科目
*/
public Teacher(String name, int age, String gender, String subject) {
super(name, age, gender);
this.subject = subject;
}
// getter和setter方法
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
/**
* 上课的方法
*/
public void teach() {
System.out.println(name + "老师正在上" + subject + "课。");
}
}
HeadTeacher类:
package com.example.school;
import java.util.ArrayList;
/**
* 班主任类,用于描述一个班主任的数据和行为特征
*/
public class HeadTeacher extends Teacher {
private ArrayList<Student> students; // 管理的学生列表
/**
* 构造方法,用于创建一个班主任对象
* @param name 姓名
* @param age 年龄
* @param gender 性别
* @param subject 所教科目
*/
public HeadTeacher(String name, int age, String gender, String subject) {
super(name, age, gender, subject);
students = new ArrayList<>();
}
/**
* 添加一个学生到班级中
* @param student 要添加的学生对象
*/
public void addStudent(Student student) {
students.add(student);
}
/**
* 移除一个学生从班级中
* @param student 要移除的学生对象
*/
public void removeStudent(Student student) {
students.remove(student);
}
/**
* 给班级所有学生发送通知
* @param message 要发送的通知内容
*/
public void sendNotification(String message) {
for (Student student : students) {
student.receiveNotification(message);
}
}
}
Student类:
package com.example.school;
/**
* 学生类,用于描述一个学生的数据和行为特征
*/
public class Student extends Person {
private int grade; // 年级
private String clazz; // 班级
/**
* 构造方法,用于创建一个学生对象
* @param name 姓名
* @param age 年龄
* @param gender 性别
* @param grade 年级
* @param clazz 班级
*/
public Student(String name, int age, String gender, int grade, String clazz) {
super(name, age, gender);
this.grade = grade;
this.clazz = clazz;
}
// getter和setter方法
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
public String getClazz() {
return clazz;
}
public void setClazz(String clazz) {
this.clazz = clazz;
}
/**
* 接收通知的方法
* @param message 收到的通知内容
*/
public void receiveNotification(String message) {
System.out.println(name + "同学收到一条通知:" + message);
}
}
School类:
package com.example.school;
import java.util.ArrayList;
/**
* 学校类,用于描述一个学校的数据和行为特征
*/
public class School {
private String name; // 学校名称
private String location; // 学校位置
private ArrayList<Teacher> teachers; // 教师列表
private ArrayList<Student> students; // 学生列表
/**
* 构造方法,用于创建一个学校对象
* @param name 学校名称
* @param location 学校位置
*/
public School(String name, String location) {
this.name = name;
this.location = location;
teachers = new ArrayList<>();
students = new ArrayList<>();
}
// getter和setter方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
/**
* 添加一个教师到学校中
* @param teacher 要添加的教师对象
*/
public void addTeacher(Teacher teacher) {
teachers.add(teacher);
}
/**
* 移除一个教师从学校中
* @param teacher 要移除的教师对象
*/
public void removeTeacher(Teacher teacher) {
teachers.remove(teacher);
}
/**
* 添加一个学生到学校中
* @param student 要添加的学生对象
*/
public void addStudent(Student student) {
students.add(student);
}
/**
* 移除一个学生从学校中
* @param student 要移除的学生对象
*/
public void removeStudent(Student student) {
students.remove(student);
}
/**
* 获取学校所有教师的信息
*/
public void getTeachersInfo() {
System.out.println(name + "学校所有教师的信息如下:");
for (Teacher teacher : teachers) {
teacher.sayHello();
}
}
/**
* 获取学校所有学生的信息
*/
public void getStudentsInfo() {
System.out.println(name + "学校所有学生的信息如下:");
for (Student student : students) {
student.sayHello();
}
}
}
主类:
package com.example.school;
public class Main {
public static void main(String[] args) {
// 创建一个学校对象
School school = new School("XX中学", "XX市XX区XX路");
// 创建两个教师对象
Teacher teacher1 = new Teacher("张三", 30, "男", "数学");
Teacher teacher2 = new Teacher("李四", 35, "女", "语文");
// 把两个教师添加到学校中
school.addTeacher(teacher1);
school.addTeacher(teacher2);
// 创建一个班主任对象
HeadTeacher headTeacher = new HeadTeacher("王五", 40, "男", "英语");
// 把班主任添加到学校中
school.addTeacher(headTeacher);
// 创建两个学生对象
Student student1 = new Student("小明", 13, "男", 7, "1班");
Student student2 = new Student("小红", 14, "女", 8, "2班");
// 把两个学生添加到学校中
school.addStudent(student1);
school.addStudent(student2);
// 把两个学生添加到班级中
headTeacher.addStudent(student1);
headTeacher.addStudent(student2);
// 输出学校所有教师和学生的信息
school.getTeachersInfo();
school.getStudentsInfo();
// 老师上课
teacher1.teach();
teacher2.teach();
// 班主任发送通知
headTeacher.sendNotification("明天放假!");
}
}
原文地址: http://www.cveoy.top/t/topic/blbM 著作权归作者所有。请勿转载和采集!