Files
reservationsystem/uml/classdiagram3.dot

101 lines
4.3 KiB
Plaintext
Raw Normal View History

2025-09-24 18:38:07 -04:00
digraph G {
2025-09-24 19:49:53 -04:00
fontname="Bitstream Vera Sans"
fontsize=8
2025-09-24 18:38:07 -04:00
node [
2025-09-24 19:49:53 -04:00
fontname="Bitstream Vera Sans"
fontsize=8
shape=record,
2025-09-24 18:38:07 -04:00
]
edge [
2025-09-24 19:49:53 -04:00
fontname="Bitstream Vera Sans"
fontsize=8
2025-09-24 18:38:07 -04:00
]
// Interfaces
IReservation [
2025-09-24 19:49:53 -04:00
label="{<<Interface>>\nIReservation|+ ReservationType(): String\l+ getReservation_number(): String\l+ getAccountNumber(): String\l+ getPhysical_address(): Address\l+ calculatePrice(): float\l+ checkValid(): boolean\l}"
]
2025-09-24 18:38:07 -04:00
// Abstract Classes
Reservation [
2025-09-24 19:49:53 -04:00
label="{Abstract\nReservation|- type: char\l- reservation_number: String\l- physical_address: Address\l- mailing_address: Address\l- reservation_start_date: ZonedDateTime\l- reservation_end_date: ZonedDateTime\l- reservation_status: ReservationStatusEnum\l- kitchen: KitchenTypeEnum\l- numberOfBeds: Integer\l- price: Float\l# accountNumber: String\l|+ setReservation_number(String): void\l+ getReservation_number(): String\l+ setAccountNumber(String): void\l+ getAccountNumber(): String\l+ Write(Reservation): void\l+ Change(Reservation, ReservationStatusEnum): void\l+ update(Reservation): void\l+ calculatePrice(): float\l+ ReservationType(): String\l}"
]
2025-09-24 18:38:07 -04:00
// Concrete Classes
HotelReservation [
2025-09-24 19:49:53 -04:00
label="{HotelReservation|+ ReservationType(): String\l+ checkValid(): boolean\l+ calculatePrice(): float\l}"
]
2025-09-24 18:38:07 -04:00
HouseReservation [
2025-09-24 19:49:53 -04:00
label="{HouseReservation|+ ReservationType(): String\l+ checkValid(): boolean\l+ calculatePrice(): float\l}"
]
2025-09-24 18:38:07 -04:00
CabinReservation [
2025-09-24 19:49:53 -04:00
label="{CabinReservation|+ ReservationType(): String\l+ checkValid(): boolean\l+ calculatePrice(): float\l}"
]
2025-09-24 18:38:07 -04:00
Account [
2025-09-24 19:49:53 -04:00
label="{Account|- account_number: String\l- phone_number: String\l- mailing_address: Address\l- email_address: EmailAddress\l- reservations: AccountReservationList\l|+ add(Reservation): boolean\l+ Write(Account): void\l+ findReservation(String): Reservation\l+ getAllReservations(): ListIterator<IReservation>\l}"
]
2025-09-24 18:38:07 -04:00
AccomodationManager [
2025-09-24 19:49:53 -04:00
label="{AccomodationManager|- accounts: AccountList\l|+ loadAll(): void\l+ retrieveAccount(String): Account\l+ AddAccount(Account): void\l+ UpdateAccount(Account): void\l+ addReservation(Account, Reservation): boolean\l+ findReservation(String): Reservation\l}"
]
2025-09-24 18:38:07 -04:00
DataRepository [
2025-09-24 19:49:53 -04:00
label="{<<Singleton>>\nDataRepository|- directoryPath: String\l|+ setDataStoreRoot(String): void\l+ getPath(): String\l+ Reservation(String): Reservation\l+ LoadAccount(Path): Account\l- loadReservation(...): void\l}"
]
2025-09-24 18:38:07 -04:00
Address [
2025-09-24 19:49:53 -04:00
label="{Address|- street: String\l- city: String\l- state: String\l- zip: String\l}"
]
2025-09-24 18:38:07 -04:00
EmailAddress [
2025-09-24 19:49:53 -04:00
label="{EmailAddress|- email_address: String\l}"
]
TestReservations [
label="{TestReservations|+ main(String[]): void\l}"
]
2025-09-24 18:38:07 -04:00
2025-09-24 19:49:53 -04:00
// Enumerations
2025-09-24 18:38:07 -04:00
ReservationStatusEnum [
2025-09-24 19:49:53 -04:00
label="{<<Enumeration>>\nReservationStatusEnum|Draft\lCanceled\lCompleted\l}"
]
2025-09-24 18:38:07 -04:00
2025-09-24 19:49:53 -04:00
KitchenTypeEnum [
label="{<<Enumeration>>\nKitchenTypeEnum|None\lKitchenette\lFullKitchen\l}"
]
2025-09-24 18:38:07 -04:00
2025-09-25 17:56:58 -04:00
AccountList [
label="{AccountList|+ add(Account): boolean\l+ save(Account): void\l+ find(String): Account\l}"
]
AccountReservationList [
label="{AccountReservationList|+ add(IReservation): boolean\l+ find(String): Reservation\l+ update(AccountReservationList): void\l}"
]
2025-09-24 19:49:53 -04:00
// Relationships
edge [arrowhead=empty, arrowtail=none]
2025-09-24 18:38:07 -04:00
HotelReservation -> Reservation;
HouseReservation -> Reservation;
CabinReservation -> Reservation;
2025-09-24 19:49:53 -04:00
edge [arrowhead=empty, arrowtail=odiamond]
AccomodationManager -> AccountList [label="1"];
Account -> Address [label="1..2"];
Account -> EmailAddress [label="1"];
Account -> AccountReservationList [label="1"];
Reservation -> Address [label="2"];
Reservation -> ReservationStatusEnum [label="1"];
Reservation -> KitchenTypeEnum [label="1"];
edge [arrowhead=odiamond, arrowtail=diamond]
AccountList -> Account [arrowtail=odiamond,label="0..*"];
2025-09-24 18:38:07 -04:00
AccountReservationList -> IReservation [label="0..*"];
2025-09-24 19:49:53 -04:00
edge [arrowhead=vee, style=dashed]
Reservation -> IReservation [arrowtail=empty, style=dashed, dir=back, arrowhead=none];
2025-09-24 18:38:07 -04:00
AccomodationManager -> DataRepository [label="uses"];
}