@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 *-- Person.ResearchAssociate class StudentProject extends Activity { + supervisor: ResearchAssociate + ects: int } StudentProject *-- Person.ResearchAssociate class Programme { + student: Student + activities: Activity[] + addActivity(): void + valid() } Programme *- Course Programme *- StudentProject Programme "1" *-- Person.Student } package Bachelorizer { class Bachelorizer { + programme: Programme } Bachelorizer -- Activity.Programme } @enduml