summaryrefslogtreecommitdiff
path: root/assignments/3/question-6.puml
blob: 8edc8f33853a7b0ca852617bfc0b87e9005e461f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
@startuml
Airplane "*" -- "1" Employee : serviceableBy >
Airplane "*" -- "1" Hanger : storedIn >
Airplane "*" -- "1" Person : ownedBy >
Airplane "*" -- "1" Pilot : flyableBy >
Hanger "*" -- "1" Employee : managedBy >
Maintenance "*" -- "0..1"  Employee : performedBy >
Maintenance "*" -- "0..1" Airplane : performedOn >
Person <|-- Corporation
Person <|-- Employee
Person <|-- Pilot

class Airplane {
  {field} capacity
  {field} modelNumber
  {field} registrationNumber
  {field} weight
  {method} boolean storedIn(hanger)
  {method} Maintenance mostRecentMaintenance()
  {method} Date nextMaintenanceDueOn()
  {method} void storeIn(hanger)
}

class Maintenance {
  {field} workCode
  {field} startedAt
  {field} endedAt
  {method} Duration hours()
}

class Hanger {
  {field} number
  {field} capacity
  {field} location
  {method} boolean isFull()
  {method} boolean hasCapacityFor(airplane)
}

interface Person {
  {field} name
  {field} address
  {field} telephoneNumber
  {field} socialInsuranceNumber
}

class Pilot {
  {field} licenseNumber
  {field} restrictions
  {method} boolean canFly(airplane)
  {method} void fly(airplane)
}

class Employee {
  {field} salary
  {field} shift
  {method} boolean canService(airplane)
  {method} boolean hasServiced(airplane)
  {method} void beginMaintenanceOf(airplane)
}

class Corporation {
}

@enduml