aboutsummaryrefslogtreecommitdiff
path: root/classes.puml
blob: 194ef7b4c0df65f66fd9216813e910b3349dabf9 (plain)
  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. package Person {
  7. abstract Person {
  8. + name: String
  9. }
  10. abstract Employee extends Person {
  11. + {static} ssn: int
  12. + email: String
  13. }
  14. class Tap extends Employee
  15. class Vip extends Employee
  16. class Dean extends Vip
  17. class ResearchAssociate extends Vip {
  18. + field: String
  19. }
  20. class Supervisor extends ResearchAssociate
  21. class Lecturer extends ResearchAssociate
  22. class Student extends Person
  23. }
  24. package Org {
  25. abstract Org {
  26. + name: String
  27. }
  28. interface Place {
  29. + address: String
  30. }
  31. class University implements Place
  32. class University extends Org
  33. class Faculty extends Org
  34. Faculty --* University
  35. Faculty "1" *- Person.Dean
  36. class Institute implements Place
  37. class Institute extends Org
  38. Institute --* Faculty
  39. Institute *- Person.ResearchAssociate
  40. }
  41. package Activity {
  42. abstract Activity {
  43. + name: String
  44. }
  45. abstract Project extends Activity {
  46. + dateBegin: date
  47. + dateEnd: date
  48. + hours: VipHours[]
  49. }
  50. Project *- Person.ResearchAssociate
  51. (Project, Person.ResearchAssociate) .. VipHours
  52. class VipHours {
  53. + person: Vip
  54. + hours: int
  55. }
  56. class Course extends Project {
  57. + {static} id: int
  58. + lecturer: Lecturer
  59. + ects: int
  60. }
  61. Course *-- Person.Lecturer
  62. class StudentProject extends Project {
  63. + supervisor: Supervisor
  64. + ects: int
  65. }
  66. StudentProject *-- Person.Supervisor
  67. class Programme {
  68. + student: Student
  69. + activities: Activity[]
  70. + addActivity(): void
  71. + valid()
  72. }
  73. Programme *- Course
  74. Programme *- StudentProject
  75. Programme "1" *-- Person.Student
  76. }
  77. package Bachelorizer {
  78. class Bachelorizer {
  79. + programmes: Programme[]
  80. + addProgramme(): void
  81. }
  82. Activity.Programme --* Bachelorizer
  83. }
  84. @enduml