diff --git a/uml/classdiagram.dot b/uml/classdiagram.dot deleted file mode 100644 index 8aa62f5..0000000 --- a/uml/classdiagram.dot +++ /dev/null @@ -1,111 +0,0 @@ -digraph LodgeReservationSystem { - // Graph attributes - rankdir=TB; - node [shape=record, fontname="Arial", fontsize=10]; - edge [fontname="Arial", fontsize=9]; - - // Package clustering - subgraph cluster_data { - label="lodge.data"; - style=filled; - color=lightgrey; - - // Data classes - Address [label="{Address|+ street: String\l+ city: String\l+ state: String\l+ zip: String\l|+ Address(String, String, String, String)\l+ getters/setters\l+ hashCode(): int\l+ equals(Object): boolean\l+ toString(): String\l}"]; - - EmailAddress [label="{EmailAddress|+ email_address: String\l|+ EmailAddress(String)\l+ getEmail_address(): String\l+ setEmail_address(String): void\l+ hashCode(): int\l+ equals(Object): boolean\l+ toString(): String\l}"]; - - // Enums - KitchenTypeEnum [label="{KitchenTypeEnum|\<\\>|None\lKitchenette\lFullKitchen\l}"]; - - ReservationStatusEnum [label="{ReservationStatusEnum|\<\\>|Draft\lCanceled\lCompleted\l}"]; - - // Exceptions - DuplicateObjectException [label="{DuplicateObjectException|extends RuntimeException|+ DuplicateObjectException()\l+ DuplicateObjectException(String)\l}"]; - - IllegalOperationException [label="{IllegalOperationException|extends RuntimeException|+ IllegalOperationException()\l+ IllegalOperationException(String)\l}"]; - - subgraph cluster_account { - label="lodge.reservation"; - style=filled; - color="#e9d5ba"; - Account [label="{Account|+ account_number: String\l+ phone_number: String\l+ mailing_address: Address\l+ email_address: EmailAddress\l- reservations: AccountReservationList\l|+ Account()\l+ Account(String, String, Address, EmailAddress)\l+ Account(String, Address, EmailAddress)\l+ add(Reservation): boolean\l+ findReservation(String): Reservation\l+ getAllReservations(): ListIterator\\l+ update(Account): void\l+ toString(): String\l+ static Write(Account): void\l}"]; - - AccountList [label="{AccountList|extends ArrayList\|+ static accountSerial(...): String\l+ add(Account): boolean\l+ save(Account): void\l+ find(String): Account\l+ getListOfReservations(): List\\l+ showReservationList(): void\l}"]; - - } - - subgraph cluster_reservation { - label="lodge.reservation"; - style=filled; - color=lightblue; - - // Interface - IReservation [label="{IReservation|\<\\>|+ ReservationType(): String\l+ static copy(String): Reservation\l+ getReservation_number(): String\l+ getAccountNumber(): String\l+ getPhysical_address(): Address\l+ getPricePerNight(): float\l+ calculatePrice(): float\l+ checkValid(): boolean\l}"]; - - // Abstract class - Reservation [label="{Reservation|\<\\>|# 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# numberOfBedRooms: Integer\l# numberOfBathRooms: Integer\l# numberOfFloors: Integer\l# squareFeet: Integer\l# price: Float\l# accountNumber: String\l|# Reservation()\l+ getters/setters\l+ Write(Reservation): void\l+ Change(Reservation, ReservationStatusEnum): void\l+ update(Reservation): void\l+ abstract ReservationType(): String\l}"]; - - // Reservation List - AccountReservationList [label="{AccountReservationList|extends ArrayList\|- static reservationSerial(Reservation): String\l+ add(IReservation): boolean\l+ find(String): Reservation\l+ update(AccountReservationList): void\l+ toString(): String\l}"]; - - } - } - - - - subgraph cluster_reservationsystem { - label="lodge.reservationsystem"; - style=filled; - color=lightyellow; - - // Concrete reservation classes - CabinReservation [label="{CabinReservation|+ CabinReservation()\l+ CabinReservation(Address)\l+ ReservationType(): String\l+ checkValid(): boolean\l+ getPricePerNight(): float\l+ calculatePrice(): float\l}"]; - - HotelReservation [label="{HotelReservation|+ HotelReservation()\l+ HotelReservation(Address)\l+ static copy(String): Reservation\l+ ReservationType(): String\l+ checkValid(): boolean\l+ getPricePerNight(): float\l+ calculatePrice(): float\l}"]; - - HouseReservation [label="{HouseReservation|+ HouseReservation()\l+ HouseReservation(Address)\l+ static copy(String): Reservation\l+ ReservationType(): String\l+ checkValid(): boolean\l+ getPricePerNight(): float\l+ calculatePrice(): float\l}"]; - - AccomodationManager [label="{AccomodationManager|- accounts: AccountList\l|+ AccomodationManager(String)\l+ setDataStoreRoot(String): void\l+ loadAll(): void\l+ load(Path): void\l+ retrieveLoadedAccounts(): List\\l+ retrieveAccount(String): Account\l+ AddAccount(Account): void\l+ UpdateAccount(Account): void\l+ newAccount(...): Account\l+ addReservation(Account, Reservation): boolean\l+ findReservation(String): Reservation\l+ getReservationList(): List\\l+ showReservationList(): void\l}"]; - - DataRepository [label="{DataRepository|\<\\>|- directoryPath: String\l- static instance: DataRepository\l|+ static getInstance(): DataRepository\l+ static setDataStoreRoot(String): void\l+ static getPath(): String\l+ static Reservation(String): Reservation\l+ static WalkFileSystemTree(...): void\l+ static LoadAccount(Path): Account\l}"]; - } - - subgraph cluster_lodge { - label="lodge"; - style=filled; - color=lightcoral; - - TestReservations [label="{TestReservations|+ static main(String[]): void\l+ static class getRepositoryConfig\l}"]; - } - - // Inheritance relationships - Reservation -> IReservation [arrowhead=empty, style=dashed, label="implements"]; - CabinReservation -> Reservation [arrowhead=empty, label="extends"]; - HotelReservation -> Reservation [arrowhead=empty, label="extends"]; - HouseReservation -> Reservation [arrowhead=empty, label="extends"]; - - // Composition relationships - Account -> AccountReservationList [arrowhead=diamond, label="contains"]; - Account -> Address [arrowhead=diamond, label="mailing_address"]; - Account -> EmailAddress [arrowhead=diamond, label="email_address"]; - AccountList -> Account [arrowhead=odiamond, label="contains 0..*"]; - AccountReservationList -> IReservation [arrowhead=odiamond, label="contains 0..*"]; - Reservation -> Address [arrowhead=diamond, label="physical_address\nmailing_address"]; - Reservation -> KitchenTypeEnum [arrowhead=diamond, label="kitchen"]; - Reservation -> ReservationStatusEnum [arrowhead=diamond, label="reservation_status"]; - AccomodationManager -> AccountList [arrowhead=diamond, label="accounts"]; - - // Dependencies - AccomodationManager -> DataRepository [arrowhead=open, style=dashed, label="uses"]; - DataRepository -> Account [arrowhead=open, style=dashed, label="creates"]; - DataRepository -> CabinReservation [arrowhead=open, style=dashed, label="creates"]; - DataRepository -> HotelReservation [arrowhead=open, style=dashed, label="creates"]; - DataRepository -> HouseReservation [arrowhead=open, style=dashed, label="creates"]; - TestReservations -> AccomodationManager [arrowhead=open, style=dashed, label="uses"]; - TestReservations -> CabinReservation [arrowhead=open, style=dashed, label="creates"]; - TestReservations -> HotelReservation [arrowhead=open, style=dashed, label="creates"]; - TestReservations -> HouseReservation [arrowhead=open, style=dashed, label="creates"]; - AccountReservationList -> DuplicateObjectException [arrowhead=open, style=dashed, label="throws"]; - Reservation -> IllegalOperationException [arrowhead=open, style=dashed, label="throws"]; -} diff --git a/uml/classdiagram.svg b/uml/classdiagram.svg deleted file mode 100644 index d7c043c..0000000 --- a/uml/classdiagram.svg +++ /dev/null @@ -1,468 +0,0 @@ - - - - - - - - -lodge.data - - - - -lodge.reservation - - - - -lodge.reservation - - - - -lodge.reservationsystem - - - - -lodge - - - - - -Address - -+ street: String -+ city: String -+ state: String -+ zip: String - -+ Address(String, String, String, String) -+ getters/setters -+ hashCode(): int -+ equals(Object): boolean -+ toString(): String - - - - - -EmailAddress - -+ email_address: String - -+ EmailAddress(String) -+ getEmail_address(): String -+ setEmail_address(String): void -+ hashCode(): int -+ equals(Object): boolean -+ toString(): String - - - - - -KitchenTypeEnum - -<<enumeration>> - -None -Kitchenette -FullKitchen - - - - - -ReservationStatusEnum - -<<enumeration>> - -Draft -Canceled -Completed - - - - - -DuplicateObjectException - -extends RuntimeException - -+ DuplicateObjectException() -+ DuplicateObjectException(String) - - - - - -IllegalOperationException - -extends RuntimeException - -+ IllegalOperationException() -+ IllegalOperationException(String) - - - - - -Account - -+ account_number: String -+ phone_number: String -+ mailing_address: Address -+ email_address: EmailAddress -- reservations: AccountReservationList - -+ Account() -+ Account(String, String, Address, EmailAddress) -+ Account(String, Address, EmailAddress) -+ add(Reservation): boolean -+ findReservation(String): Reservation -+ getAllReservations(): ListIterator<IReservation> -+ update(Account): void -+ toString(): String -+ static Write(Account): void - - - - - - -mailing_address - - - - - - -email_address - - - - - -AccountReservationList - -extends ArrayList<IReservation> - -- static reservationSerial(Reservation): String -+ add(IReservation): boolean -+ find(String): Reservation -+ update(AccountReservationList): void -+ toString(): String - - - - - - -contains - - - - - -AccountList - -extends ArrayList<Account> - -+ static accountSerial(...): String -+ add(Account): boolean -+ save(Account): void -+ find(String): Account -+ getListOfReservations(): List<? extends IReservation> -+ showReservationList(): void - - - - - - -contains 0..* - - - - - -IReservation - -<<interface>> - -+ ReservationType(): String -+ static copy(String): Reservation -+ getReservation_number(): String -+ getAccountNumber(): String -+ getPhysical_address(): Address -+ getPricePerNight(): float -+ calculatePrice(): float -+ checkValid(): boolean - - - - - -Reservation - -<<abstract>> - -# type: char -# reservation_number: String -# physical_address: Address -# mailing_address: Address -# reservation_start_date: ZonedDateTime -# reservation_end_date: ZonedDateTime -# reservation_status: ReservationStatusEnum -# kitchen: KitchenTypeEnum -# numberOfBeds: Integer -# numberOfBedRooms: Integer -# numberOfBathRooms: Integer -# numberOfFloors: Integer -# squareFeet: Integer -# price: Float -# accountNumber: String - -# Reservation() -+ getters/setters -+ Write(Reservation): void -+ Change(Reservation, ReservationStatusEnum): void -+ update(Reservation): void -+ abstract ReservationType(): String - - - - - - -physical_address -mailing_address - - - - - - -kitchen - - - - - - -reservation_status - - - - - - -throws - - - - - - -implements - - - - - - -throws - - - - - - -contains 0..* - - - - - -CabinReservation - -+ CabinReservation() -+ CabinReservation(Address) -+ ReservationType(): String -+ checkValid(): boolean -+ getPricePerNight(): float -+ calculatePrice(): float - - - - - - -extends - - - - - -HotelReservation - -+ HotelReservation() -+ HotelReservation(Address) -+ static copy(String): Reservation -+ ReservationType(): String -+ checkValid(): boolean -+ getPricePerNight(): float -+ calculatePrice(): float - - - - - - -extends - - - - - -HouseReservation - -+ HouseReservation() -+ HouseReservation(Address) -+ static copy(String): Reservation -+ ReservationType(): String -+ checkValid(): boolean -+ getPricePerNight(): float -+ calculatePrice(): float - - - - - - -extends - - - - - -AccomodationManager - -- accounts: AccountList - -+ AccomodationManager(String) -+ setDataStoreRoot(String): void -+ loadAll(): void -+ load(Path): void -+ retrieveLoadedAccounts(): List<Account> -+ retrieveAccount(String): Account -+ AddAccount(Account): void -+ UpdateAccount(Account): void -+ newAccount(...): Account -+ addReservation(Account, Reservation): boolean -+ findReservation(String): Reservation -+ getReservationList(): List<? extends IReservation> -+ showReservationList(): void - - - - - - -accounts - - - - - -DataRepository - -<<singleton>> - -- directoryPath: String -- static instance: DataRepository - -+ static getInstance(): DataRepository -+ static setDataStoreRoot(String): void -+ static getPath(): String -+ static Reservation(String): Reservation -+ static WalkFileSystemTree(...): void -+ static LoadAccount(Path): Account - - - - - - -uses - - - - - - -creates - - - - - - -creates - - - - - - -creates - - - - - - -creates - - - - - -TestReservations - -+ static main(String[]): void -+ static class getRepositoryConfig - - - - - - -creates - - - - - - -creates - - - - - - -creates - - - - - - -uses - - - \ No newline at end of file diff --git a/uml/classdiagram1.dot b/uml/classdiagram1.dot deleted file mode 100755 index e23bb51..0000000 --- a/uml/classdiagram1.dot +++ /dev/null @@ -1,110 +0,0 @@ -digraph ClassDiagram { - graph [ - rankdir="TB", - splines=ortho, - nodesep=1.0, - ranksep=1.2 - ]; - node [ - shape=record, - style=filled, - fillcolor=lightyellow, - fontname="Helvetica,Arial,sans-serif" - ]; - edge [ - fontname="Helvetica,Arial,sans-serif" - ]; - - // --- Interfaces --- - IReservation [ - label="{interface\nIReservation|+ ReservationType(): String\l+ checkValid(): boolean\l+ calculatePrice(): float\l+ getReservation_number(): String\l+ getPhysical_address(): Address\l+ getAccountNumber(): String\l}", - fillcolor=palegreen - ]; - - // --- Abstract Classes --- - Reservation [ - label="{abstract\nReservation|+ {abstract} ReservationType(): String\l+ Write(Reservation): void\l+ Change(Reservation, ReservationStatusEnum): void\l+ update(Reservation): void\l+ calculatePrice(): float\l+ setMailing_address(Address): void\l+ setNumberOfBeds(int): void\l+ setNumberOfFloors(int): void\l+ setNumberOfBedRooms(int): void\l+ setSquareFeet(int): void\l+ setReservation_start_date(ZonedDateTime): void\l+ setReservation_end_date(ZonedDateTime): void\l}", - fontstyle=italic - ]; - - // --- Concrete Classes --- - AccomodationManager [ - label="{AccomodationManager|+ AccomodationManager(String)\l+ loadAll(): void\l+ retrieveAccount(String): Account\l+ retrieveLoadedAccounts(): AccountList\l+ newAccount(String, Address, EmailAddress): Account\l+ AddAccount(Account): void\l+ UpdateAccount(Account): void\l+ addReservation(Account, Reservation): boolean\l+ showReservationList(): void\l}" - ]; - - DataRepository [ - label="{DataRepository (Singleton)|+ {static} getInstance(): DataRepository\l+ {static} setDataStoreRoot(String): void\l+ {static} WalkFileSystemTree(AccomodationManager, Path): void\l+ {static} LoadAccount(Path): Account\l}", - fillcolor=orchid - ]; - - Account [ - label="{Account|+ add(Reservation): boolean\l+ findReservation(String): Reservation\l+ getAllReservations(): Iterator\l+ getAccount_number(): String\l+ {static} Write(Account): void\l}" - ]; - - AccountList [ - label="{AccountList|+ add(Account): boolean\l+ find(String): Account\l+ save(Account): void\l}" - ]; - - AccountReservationList [ - label="{AccountReservationList|+ add(IReservation): boolean\l+ find(String): Reservation\l}" - ]; - - HotelReservation [ - label="{HotelReservation|+ HotelReservation(Address)\l+ calculatePrice(): float\l}" - ]; - CabinReservation [ - label="{CabinReservation|+ CabinReservation(Address)\l+ calculatePrice(): float\l}" - ]; - HouseReservation [ - label="{HouseReservation|+ HouseReservation(Address)\l+ calculatePrice(): float\l}" - ]; - - TestReservations [ - label="{TestReservations|+ {static} main(String[]): void\l}" - ]; - - "TestReservations.getRepositoryConfig" [ - label="{static class\ngetRepositoryConfig|+ {static} getPath(): String\l}" - ]; - - // --- Data/Enum/Exception Classes --- - Address [label="{Address|+ Address(String, String, String, String)\l}", fillcolor=lightblue]; - EmailAddress [label="{EmailAddress|+ EmailAddress(String)\l}", fillcolor=lightblue]; - ReservationStatusEnum [label="{enum\nReservationStatusEnum}", fillcolor=lightgray]; - DuplicateObjectException [label="{exception\nDuplicateObjectException}", fillcolor=lightpink]; - - // --- Relationships --- - - // Inheritance / Implementation - Reservation -> IReservation [arrowhead=empty, style=dashed, label="implements"]; - HotelReservation -> Reservation [arrowhead=empty, label="extends"]; - CabinReservation -> Reservation [arrowhead=empty, label="extends"]; - HouseReservation -> Reservation [arrowhead=empty, label="extends"]; - - // Composition / Aggregation - AccomodationManager -> AccountList [arrowhead=diamond, label="has a"]; - AccountList -> Account [arrowhead=diamond, label="0..*"]; - Account -> AccountReservationList [arrowhead=diamond, label="has a"]; - AccountReservationList -> IReservation [arrowhead=diamond, label="0..*"]; - Account -> Address [arrowhead=odiamond, label="mailing"]; - Account -> EmailAddress [arrowhead=odiamond]; - Reservation -> Address [arrowhead=odiamond, label="physical/mailing"]; - - // Dependencies - TestReservations -> AccomodationManager [arrowhead=vee, style=dashed, label="uses"]; - TestReservations -> "TestReservations.getRepositoryConfig" [arrowhead=vee, style=dashed, label="uses"]; - TestReservations -> HotelReservation [arrowhead=vee, style=dashed, label="creates"]; - TestReservations -> CabinReservation [arrowhead=vee, style=dashed, label="creates"]; - TestReservations -> HouseReservation [arrowhead=vee, style=dashed, label="creates"]; - TestReservations -> Account [arrowhead=vee, style=dashed, label="uses"]; - TestReservations -> Address [arrowhead=vee, style=dashed, label="creates"]; - TestReservations -> EmailAddress [arrowhead=vee, style=dashed, label="creates"]; - TestReservations -> DuplicateObjectException [arrowhead=vee, style=dashed, label="catches"]; - - AccomodationManager -> DataRepository [arrowhead=vee, style=dashed, label="uses"]; - AccomodationManager -> Account [arrowhead=vee, style=dashed, label="manages"]; - - Account -> DataRepository [arrowhead=vee, style=dashed, label="uses for Write()"]; - Reservation -> DataRepository [arrowhead=vee, style=dashed, label="uses for Write()"]; - Reservation -> ReservationStatusEnum [arrowhead=vee, style=dashed, label="uses"]; -} diff --git a/uml/classdiagram1.svg b/uml/classdiagram1.svg deleted file mode 100755 index 404bebb..0000000 --- a/uml/classdiagram1.svg +++ /dev/null @@ -1,323 +0,0 @@ - - - - - - -ClassDiagram - - - -IReservation - -interface -IReservation - -+ ReservationType(): String -+ checkValid(): boolean -+ calculatePrice(): float -+ getReservation_number(): String -+ getPhysical_address(): Address -+ getAccountNumber(): String - - - -Reservation - -Reservation - - - -Reservation->IReservation - - -implements - - - -DataRepository - -DataRepository - - - -Reservation->DataRepository - - -uses for Write() - - - -Address - -Address - -+ Address(String, String, String, String) - - - -Reservation->Address - - -physical/mailing - - - -ReservationStatusEnum - -enum -ReservationStatusEnum - - - -Reservation->ReservationStatusEnum - - -uses - - - -AccomodationManager - -AccomodationManager - -+ AccomodationManager(String) -+ loadAll(): void -+ retrieveAccount(String): Account -+ retrieveLoadedAccounts(): AccountList -+ newAccount(String, Address, EmailAddress): Account -+ AddAccount(Account): void -+ UpdateAccount(Account): void -+ addReservation(Account, Reservation): boolean -+ showReservationList(): void - - - -AccomodationManager->DataRepository - - -uses - - - -Account - -Account - - - -AccomodationManager->Account - - -manages - - - -AccountList - -AccountList - -+ add(Account): boolean -+ find(String): Account -+ save(Account): void - - - -AccomodationManager->AccountList - - -has a - - - -Account->DataRepository - - -uses for Write() - - - -AccountReservationList - -AccountReservationList - -+ add(IReservation): boolean -+ find(String): Reservation - - - -Account->AccountReservationList - - -has a - - - -Account->Address - - -mailing - - - -EmailAddress - -EmailAddress - -+ EmailAddress(String) - - - -Account->EmailAddress - - - - - -AccountList->Account - - -0..* - - - -AccountReservationList->IReservation - - -0..* - - - -HotelReservation - -HotelReservation - -+ HotelReservation(Address) -+ calculatePrice(): float - - - -HotelReservation->Reservation - - -extends - - - -CabinReservation - -CabinReservation - -+ CabinReservation(Address) -+ calculatePrice(): float - - - -CabinReservation->Reservation - - -extends - - - -HouseReservation - -HouseReservation - -+ HouseReservation(Address) -+ calculatePrice(): float - - - -HouseReservation->Reservation - - -extends - - - -TestReservations - -TestReservations - - - -TestReservations->AccomodationManager - - -uses - - - -TestReservations->Account - - -uses - - - -TestReservations->HotelReservation - - -creates - - - -TestReservations->CabinReservation - - -creates - - - -TestReservations->HouseReservation - - -creates - - - -TestReservations.getRepositoryConfig - -TestReservations.getRepositoryConfig - - - -TestReservations->TestReservations.getRepositoryConfig - - -uses - - - -TestReservations->Address - - -creates - - - -TestReservations->EmailAddress - - -creates - - - -DuplicateObjectException - -exception -DuplicateObjectException - - - -TestReservations->DuplicateObjectException - - -catches - - - diff --git a/uml/classdiagram3.dot b/uml/classdiagram3.dot new file mode 100755 index 0000000..a4c8fdd --- /dev/null +++ b/uml/classdiagram3.dot @@ -0,0 +1,129 @@ +digraph G { + fontname = "Bitstream Vera Sans" + fontsize = 8 + + node [ + fontname = "Bitstream Vera Sans" + fontsize = 8 + shape = "record" + ] + + edge [ + fontname = "Bitstream Vera Sans" + fontsize = 8 + ] + + rankdir = BT + + // Interfaces + IReservation [ + label = "{<>\nIReservation|+ ReservationType()\l+ checkValid()\l+ calculatePrice()\l+ getReservation_number()\l+ getAccountNumber()\l+ getPhysical_address()\l}" + style=filled, fillcolor=lightblue + ]; + + // Abstract Classes + Reservation [ + label = "{<>\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- ...\l- price: Float\l- accountNumber: String\l|+ getReservation_number()\l+ setReservation_number()\l+ ...\l+ Write()\l+ Change()\l+ update()\l# ReservationType()\l}" + style=filled, fillcolor=lightgrey + ]; + + // Concrete Classes + HotelReservation [ + label = "{HotelReservation|+ calculatePrice()\l+ checkValid()\l+ ReservationType()\l}" + ]; + HouseReservation [ + label = "{HouseReservation|+ calculatePrice()\l+ checkValid()\l+ ReservationType()\l}" + ]; + CabinReservation [ + label = "{CabinReservation|+ calculatePrice()\l+ checkValid()\l+ ReservationType()\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+ ...\l}" + ]; + + AccountList [ + label = "{AccountList|+ add(Account)\l+ save(Account)\l+ find(String)\l+ getListOfReservations()\l}" + ]; + + AccountReservationList [ + label = "{AccountReservationList|+ add(IReservation)\l+ find(String)\l+ update(...)\l}" + ]; + + AccomodationManager [ + label = "{AccomodationManager|- accounts: AccountList\l|+ loadAll()\l+ retrieveAccount(String)\l+ AddAccount(Account)\l+ addReservation(Account, Reservation)\l+ findReservation(String)\l}" + ]; + + DataRepository [ + label = "{<>\nDataRepository|- instance: DataRepository\l- directoryPath: String\l|+ getInstance()\l+ setDataStoreRoot(String)\l+ getPath()\l+ Reservation(String)\l+ WalkFileSystemTree(...)\l+ LoadAccount(Path)\l}" + ]; + + TestReservations [ + label = "{TestReservations|+ main(String[])\l}" + ]; + + // Data/Value Objects + Address [ + label = "{Address|- street: String\l- city: String\l- state: String\l- zip: String\l}" + shape=box, style=filled, fillcolor=beige + ]; + EmailAddress [ + label = "{EmailAddress|- email: String\l}" + shape=box, style=filled, fillcolor=beige + ]; + + // Enums + KitchenTypeEnum [ + label = "{<>\nKitchenTypeEnum|None\l|Kitchenette\l|FullKitchen\l}" + shape=box, style=filled, fillcolor=lightyellow + ]; + ReservationStatusEnum [ + label = "{<>\nReservationStatusEnum|Draft\l|Completed\l|Canceled\l}" + shape=box, style=filled, fillcolor=lightyellow + ]; + + // Relationships + + // Inheritance + edge [arrowhead=empty, style=solid]; + HotelReservation -> Reservation; + HouseReservation -> Reservation; + CabinReservation -> Reservation; + AccountList -> "java.util.ArrayList" [style=dashed, label="extends"]; + AccountReservationList -> "java.util.ArrayList" [style=dashed, label="extends"]; + + // Implementation + edge [arrowhead=empty, style=dashed]; + Reservation -> IReservation; + + // Composition + edge [arrowhead=diamond, style=solid]; + AccomodationManager -> AccountList [label="1..1 accounts"]; + Account -> AccountReservationList [label="1..1 reservations"]; + Account -> Address [label="1..1 mailing_address"]; + Account -> EmailAddress [label="1..1 email_address"]; + + // Aggregation + edge [arrowhead=odiamond, style=solid]; + AccountReservationList -> IReservation [label="0..*"]; + AccountList -> Account [label="0..*"]; + Reservation -> Address [label="0..2\n(physical, mailing)"]; + + // Dependency + edge [arrowhead=vee, style=dashed]; + AccomodationManager -> DataRepository [label="uses"]; + AccomodationManager -> Account; + TestReservations -> AccomodationManager [label="uses"]; + TestReservations -> HotelReservation [label="creates"]; + TestReservations -> HouseReservation [label="creates"]; + TestReservations -> CabinReservation [label="creates"]; + DataRepository -> AccomodationManager [label="uses"]; + DataRepository -> Account [label="creates"]; + DataRepository -> HotelReservation [label="creates"]; + DataRepository -> HouseReservation [label="creates"]; + DataRepository -> CabinReservation [label="creates"]; + Account -> DataRepository [label="uses"]; + Reservation -> DataRepository [label="uses"]; + Reservation -> KitchenTypeEnum [label="uses"]; + Reservation -> ReservationStatusEnum [label="uses"]; +} diff --git a/uml/sequencediagram.dot b/uml/sequencediagram.dot deleted file mode 100644 index e69de29..0000000