/ classes.puml
classes.puml
 1  @startuml
 2  ' mimick visual style of UML @ Classroom <10.1007/978-3-319-12742-2>
 3  skinparam packageStyle file
 4  hide circle
 5  skinparam classAttributeIconSize 0
 6  
 7  package Person {
 8  
 9  abstract Person <<abstract>> {
10  + name: String
11  }
12  
13  class ResearchAssociate extends Person {
14  + field: String
15  }
16  
17  class Student extends Person
18  
19  }
20  
21  package Activity {
22  
23  abstract Activity <<abstract>> {
24  + name: String
25  }
26  
27  class Course extends Activity {
28  + {static} id: int
29  + lecturer: ResearchAssociate
30  + ects: int
31  }
32  Course "1..*" *-- Person.ResearchAssociate
33  
34  class StudentProject extends Activity {
35  + supervisor: ResearchAssociate
36  + ects: int
37  }
38  StudentProject "1" *-- Person.ResearchAssociate
39  
40  }
41  
42  package Bachelorizer {
43  
44  class Programme {
45  + student: Student
46  + activities: Activity[]
47  + addActivity(): void
48  + valid()
49  }
50  Programme o-- Activity.Course
51  Programme o-- Activity.StudentProject
52  Programme "1" *-- Person.Student
53  
54  class Bachelorizer {
55  + programme: Programme
56  }
57  Bachelorizer -- Programme
58  
59  }
60  
61  @enduml