Skip to content

Hydac

Domænemodel

uml
left to right direction

object Logbog {
	Registreringer
}

object Registrering {
	Dato
	Ankomst
	Afgang
}

object Medarbejder {
	Medarbejdernummer
	Navn
}

object Gæst {
	Navn
	Firma
	Ansvarlig Medarbejder
	Sikkerhedsfolder udleveret
}

Logbog "1" --- "0..*" Registrering
Registrering "1" --- "1..*" Medarbejder
Registrering "1" --- "0..*" Gæst
Medarbejder "1" --- "0..*" Gæst

Objektmodel

uml
left to right direction
skinparam Padding 10
skinparam rectangle {
  RoundCorner 100
}

rectangle "15/09-2025 \n 1 \n 8.00 \n ?" as Medarbejder

rectangle "Jens Hansen \n Intet firma \n 9.30 \n 10.00 \n Nej" as Gæst1
rectangle "Hans Jensen \n Firma1 \n 12.05 \n ? \n Ja" as Gæst2

Medarbejder -- Gæst1
Medarbejder -- Gæst2

Design klassediagram

uml
top to bottom direction

class Database {
	+ Employees : Employee[0..*] {readonly}
	+ LogBook : LogBook 
}

class LogBook {
	+ Date : DateTime {initOnly}
	+ Registrations : Registration[0..*] 
	
	+ <<constructor>> LogBook(date : DateTime)
	+ Register(person : Person)
}

class Registration {
	+ Person : Person {initOnly}	
	+ Arrival : DateTime {initOnly}
	+ Departure : DateTime
	  
	+ <<constructor>> Registration(person : Person)
	+ <<override>> ToString()
	+ Depart()
}

class Person {
	+ Identifier : Guid {readOnly}
	+ Name : String 
}

class Employee {
	+ EmployeeNumber : Integer {initOnly}
	+ <<constructor>> Employee(employeeNumber : Integer, name : String)
}

class Guest {
	+ GuestNumber : Integer {readOnly}
	+ Company : String
	+ ResponsibleEmployee : Employee
	
	+ <<constructor>> Guest(guest : Guest)
	- generateGuestNumber() : Integer
}

LogBook "1" --- "0..*" Registration
Registration "1" --- "1" Person
Person <--- Employee
Person <--- Guest
Database "1" --- "1" LogBook
Database "1" --- "0..*" Employee
uml
left to right direction

class Menu {
	+ Title : String {initOnly}
	+ Items : MenuItem[0..*] {initOnly}
	+ ParentMenu : Menu [0..1]  
	
	+ GetTitle() : String
	+ Show()
	- promptSelection() : Integer
	+ ExecuteSelection(selection : Integer)
}

class MenuItem {
	+ Title : String {initOnly}
	+ Action : Action
	
	+ <<constructor>> MenuItem(title : String, action : Action)
}

class MainMenu {
	+ <<constructor>> MainMenu()
	- showEmployeeMenu()
}

class EmployeeMenu {
	- employee : Employee
	- registration : Registration [0..1]
	  
	+ <<constructor>> EmployeeMenu(parentMenu : Menu, employee : Employee)
	- checkIn()
	- checkOut()
}

class GuestMenu {
	- employee : Employee
	- registration : Registration [0..1]
  
	+ <<constructor>> EmployeeMenu(parentMenu : Menu)
	- checkIn()
	- promptResponsibleEmployee() : Employee [0..1]
	- promptName() : String [0..1]
	- promptCompany() : String [0..1]
	- checkOut()
}

class OverviewMenu {
	+ <<constructor>> OverviewMenu(parentMenu : Menu)
	- todaysOverview()
}

Menu "1" --- "1" Menu
Menu "1" --- "0..*" MenuItem
Menu <--- MainMenu
Menu <--- EmployeeMenu
Menu <--- GuestMenu
Menu <--- OverviewMenu

Sekvensdiagram

PlantUML diagram
OperationmenuSelectGuest(), menuSelectEmployee()
Cross referenceUsecases: UC1, UC2
PreconditionMenu er vist
Gæst eller medarbejder ønsker at tjekke ind
PostconditionViser gæst eller medarbejder menu
OperationmenuSelectGuestCheckin()
Cross referenceUsecase: UC1
Domænemodel: Gæst objekt
PreconditionMenu er vist
Gæst ønsker at tjekke ind
Gæst menu er vist
PostconditionGæst instance bliver lavet
OperationmenuSelectEmployeeCheckin()
Cross referenceUsecase: UC2
Domænemodel: Medarbejder objekt
PreconditionMenu er vist
Medarbejder ønsker at tjekke ind
Medarbejder menu er vist
PostconditionMedarbejder instance bliver lavet
OperationinputData(name, company, responsibleEmployee)
Cross referenceUsecase: UC1
PreconditionMenu er vist
Gæst ønsker at tjekke ind
Gæst menu er vist
Gæst har valgt tjek-ind
PostconditionGæst data er blevet sat på Gæst instance
Association mellem gæst og medarbejder bliver skabt
OperationinputData(name or employeeNumber)
Cross referenceUsecase: UC2
PreconditionMenu er vist
Medarbejder ønsker at tjekke ind
Medarbejder menu er vist
Medarbejder har valgt tjek-ind
PostconditionMedarbejder data er blevet sat på Medarbejder instance