@startuml ' mimick visual style of UML @ Classroom <10.1007/978-3-319-12742-2> skinparam packageStyle file hide circle skinparam classAttributeIconSize 0 package Person { abstract Person <> { + name: String } class ResearchAssociate extends Person { + field: String } class Student extends Person } package Activity { abstract Activity <> { + name: String } class Course extends Activity { + {static} id: int + lecturer: ResearchAssociate + ects: int } Course "1..*" *-- Person.ResearchAssociate class StudentProject extends Activity { + supervisor: ResearchAssociate + ects: int } StudentProject "1" *-- Person.ResearchAssociate } package Bachelorizer { class Programme { + student: Student + activities: Activity[] + addActivity(): void + valid() } Programme o-- Activity.Course Programme o-- Activity.StudentProject Programme "1" *-- Person.Student class Bachelorizer { + programme: Programme } Bachelorizer -- Programme } @enduml