@startuml

class Person {
+ name
+ age
+ emailAddress
+ sendEmail()
+ receiveEmail()
}

class Email {
+ title
+ attachment
+ content
}

class UniversityEmployee {
+ employeeID
+ receivePayment()
}

class Payment {
+ amount
}

class Department {
+ name
}

class Student {
+ matriculationNumber
+ visitLecture()
+ attendCourse()
+ takeExam()
}

class Professor {
+ researchField
+ holdLecture()
+ maintainCourse()
+ gradeExam()
}

class Lecture {
+ topic
}

class Course {
+ title
}

class Exam {
+ point
}

Person <|-- UniversityEmployee
Person <|-- Student
UniversityEmployee <|-- Professor
Department *-- UniversityEmployee
Course *-- Lecture
Course *-- Exam
Person "1..1" -- "0..*" Email: send
Person "0..*" -- "0..*" Email: receive
UniversityEmployee "1..1" -- "0..*" Payment: receive
Student "0..*" -- "0..*" Lecture: visit
Student "0..*" -- "0..*" Course: attend
Student "0..*" -- "0..*" Exam: take
Professor "1..1" -- "0..*" Lecture: hold
Professor "1..1" -- "0..*" Course: maintain
Professor "1..1" -- "0..*" Exam: grade

@enduml