@startuml

class Email{
  + title
  + attachment
  + content
}

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

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

class UniversityEmployee {
  + employeeID
  + receivePayment()
}

class Payment{
  + amount
}

class Department{
  + name
}

class ResearchAssistant{
  + checkExam()
  + assistProfessor()
}

class Lecture{
  + topic
}

class Course{
  + title
}

class Exam{
  + points
}

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


Person <|-- UniversityEmployee
UniversityEmployee <|-- Professor
UniversityEmployee <|-- ResearchAssistant
Person <|-- Student

Department *-- UniversityEmployee
Course *-- Lecture
Course *-- Exam

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

@enduml