classDiagram
class Person {
<<abstract>>
+String id
+String name
+Date dateOfBirth
+String email
+String phone
+getAge() int
}
class Student {
+String studentId
+Date enrollmentDate
+StudentStatus status
+Major major
+registerCourse(Course course)
+getGPA() double
}
class Teacher {
+String employeeId
+String department
+AcademicTitle title
+assignCourse(Course course)
+gradeStudent(Student student, Course course, double score)
}
class Course {
+String courseCode
+String courseName
+Integer credits
+Semester semester
+boolean addStudent(Student student)
+boolean removeStudent(Student student)
}
class Department {
+String deptCode
+String deptName
+Teacher chairperson
+List~Course~ offeredCourses
+addCourse(Course course)
+assignChairperson(Teacher teacher)
}
class Enrollment {
+Student student
+Course course
+Date enrollmentDate
+Double grade
+GradeStatus status
+calculateGradePoint() double
}
Person <|-- Student
Person <|-- Teacher
Student "1" --> "0..*" Enrollment
Course "1" --> "0..*" Enrollment
Teacher "1" --> "0..*" Course : teaches
Department "1" --> "0..*" Course : offers
Department "1" --> "0..*" Teacher : employs
Student "1" --> "1" Major : has
class Major {
+String code
+String name
+Department department
+List~Course~ requiredCourses
}