66 lines
4.0 KiB
Plaintext
66 lines
4.0 KiB
Plaintext
|
|
digraph ReservationSystemClassDiagram {
|
||
|
|
rankdir=BT;
|
||
|
|
splines=ortho;
|
||
|
|
node [shape=record, style=rounded, fontname="Helvetica"];
|
||
|
|
edge [fontname="Helvetica"];
|
||
|
|
|
||
|
|
// --- Interfaces ---
|
||
|
|
IReservation [label="{«interface»\nIReservation|+ ReservationType()\l+ checkValid()\l+ calculatePrice()\l+ getPricePerNight()\l...}", style=dashed];
|
||
|
|
|
||
|
|
// --- Abstract Classes ---
|
||
|
|
Reservation [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- price: Float\l- accountNumber: String\l|+ Write(Reservation)\l+ Change(Reservation, ReservationStatusEnum)\l+ ReservationType()\l...}"];
|
||
|
|
|
||
|
|
// --- Concrete Classes ---
|
||
|
|
TestReservations [label="{TestReservations|+ main(String[])\l- Test_AddAccount(...)\l- Test_AddReservation(...)\l}"];
|
||
|
|
AccomodationManager [label="{AccomodationManager|- accounts: AccountList\l|+ loadAll()\l+ retrieveAccount(String)\l+ AddAccount(Account)\l+ UpdateAccount(Account)\l+ newAccount(...)\l+ addReservation(Account, Reservation)\l...}"];
|
||
|
|
DataRepository [label="{DataRepository|- directoryPath: String\l- instance: DataRepository\l+ getInstance()\l+ WalkFileSystemTree(...)\l+ LoadAccount(Path)\l+ Reservation(String)\l...}"];
|
||
|
|
Account [label="{Account|- account_number: String\l- phone_number: String\l- mailing_address: Address\l- email_address: EmailAddress\l- reservations: AccountReservationList\l|+ add(Reservation)\l+ Write(Account)\l+ findReservation(String)\l...}"];
|
||
|
|
AccountList [label="{AccountList|+ add(Account)\l+ find(String)\l+ save(Account)\l...}"];
|
||
|
|
AccountReservationList [label="{AccountReservationList|+ add(IReservation)\l+ find(String)\l...}"];
|
||
|
|
HotelReservation [label="{HotelReservation|+ ReservationType()\l+ checkValid()\l+ calculatePrice()\l...}"];
|
||
|
|
CabinReservation [label="{CabinReservation|+ ReservationType()\l+ checkValid()\l+ calculatePrice()\l...}"];
|
||
|
|
HouseReservation [label="{HouseReservation|+ ReservationType()\l+ checkValid()\l+ calculatePrice()\l...}"];
|
||
|
|
Address [label="{Address|- street: String\l- city: String\l- state: String\l- zip: String\l}"];
|
||
|
|
EmailAddress [label="{EmailAddress|- email: String\l}"];
|
||
|
|
|
||
|
|
// --- Enums ---
|
||
|
|
ReservationStatusEnum [label="{«enumeration»\nReservationStatusEnum|Draft\lCompleted\lCanceled\l}", style=filled, fillcolor=lightgrey];
|
||
|
|
KitchenTypeEnum [label="{«enumeration»\nKitchenTypeEnum|None\lKitchenette\lFullKitchen\l}", style=filled, fillcolor=lightgrey];
|
||
|
|
|
||
|
|
// --- Inheritance & Implementation ---
|
||
|
|
edge [arrowhead=empty, style=solid];
|
||
|
|
HotelReservation -> Reservation;
|
||
|
|
CabinReservation -> Reservation;
|
||
|
|
HouseReservation -> Reservation;
|
||
|
|
|
||
|
|
edge [arrowhead=empty, style=dashed];
|
||
|
|
Reservation -> IReservation;
|
||
|
|
|
||
|
|
// --- Aggregation & Composition ---
|
||
|
|
edge [arrowhead=diamond, style=solid, label="1"];
|
||
|
|
AccomodationManager -> AccountList [label="1..*", headlabel="manages"];
|
||
|
|
Account -> AccountReservationList [label="1..*", headlabel="has"];
|
||
|
|
Account -> Address [label="1", headlabel="mailing"];
|
||
|
|
Account -> EmailAddress [label="1"];
|
||
|
|
Reservation -> Address [label="0..2", headlabel="physical/mailing"];
|
||
|
|
Reservation -> ReservationStatusEnum [label="1"];
|
||
|
|
Reservation -> KitchenTypeEnum [label="1"];
|
||
|
|
AccountReservationList -> IReservation [arrowhead=odiamond, label="0..*"];
|
||
|
|
AccountList -> Account [arrowhead=odiamond, label="0..*"];
|
||
|
|
|
||
|
|
|
||
|
|
// --- Dependencies ---
|
||
|
|
edge [arrowhead=vee, style=dashed, label="«uses»"];
|
||
|
|
TestReservations -> AccomodationManager;
|
||
|
|
TestReservations -> HotelReservation;
|
||
|
|
TestReservations -> CabinReservation;
|
||
|
|
TestReservations -> HouseReservation;
|
||
|
|
AccomodationManager -> DataRepository;
|
||
|
|
|
||
|
|
DataRepository -> AccomodationManager;
|
||
|
|
DataRepository -> Account;
|
||
|
|
DataRepository -> Reservation;
|
||
|
|
Account -> DataRepository;
|
||
|
|
Reservation -> DataRepository;
|
||
|
|
}
|