From b3a66024d053a977e845ccc759df8591da0a0954 Mon Sep 17 00:00:00 2001 From: Sherwin Price Date: Fri, 19 Sep 2025 15:32:40 -0400 Subject: [PATCH] doc update --- sdd/readme.docx | Bin 0 -> 120602 bytes uml/classdiagram.dot | 377 +++++++++++++++++------ uml/classdiagram.svg | 712 ++++++++++++++++++++++--------------------- 3 files changed, 641 insertions(+), 448 deletions(-) create mode 100644 sdd/readme.docx diff --git a/sdd/readme.docx b/sdd/readme.docx new file mode 100644 index 0000000000000000000000000000000000000000..092d63219604038e22ad6d094632cd30b4443786 GIT binary patch literal 120602 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 O5su9x|52;}z<&TpbvI1_ literal 0 HcmV?d00001 diff --git a/uml/classdiagram.dot b/uml/classdiagram.dot index c113ea9..b8208af 100644 --- a/uml/classdiagram.dot +++ b/uml/classdiagram.dot @@ -1,102 +1,293 @@ digraph LodgeReservationSystem { - // Graph attributes rankdir=TB; - node [shape=record, fontname="Arial", fontsize=10]; - edge [fontname="Arial", fontsize=8]; - - // Package: lodge.data - subgraph cluster_data { - label="lodge.data"; - style=filled; - color=lightgrey; - - // Core data classes - Account [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+ findReservation(String): Reservation\l+ getAllReservations(): ListIterator\\l+ update(Account): void\l+ Write(Account): void\l}"]; - - AccountList [label="{AccountList|extends ArrayList\|+ accountSerial(String, Address, EmailAddress): String\l+ add(Account): boolean\l+ find(String): Account\l+ save(Account): void\l+ getListOfReservations(): List\\l+ showReservationList(): void\l}"]; - - AccountReservationList [label="{AccountReservationList|extends ArrayList\|+ add(IReservation): boolean\l+ find(String): Reservation\l+ update(AccountReservationList): void\l+ toString(): String\l}"]; - - Address [label="{Address|+ street: String\l+ city: String\l+ state: String\l+ zip: String\l|+ getStreet(): String\l+ setStreet(String): void\l+ getCity(): String\l+ setCity(String): void\l+ getState(): String\l+ setState(String): void\l+ getZip(): String\l+ setZip(String): void\l+ equals(Object): boolean\l+ hashCode(): int\l+ toString(): String\l}"]; - - EmailAddress [label="{EmailAddress|+ email_address: String\l|+ getEmail_address(): String\l+ setEmail_address(String): void\l+ equals(Object): boolean\l+ hashCode(): int\l+ toString(): String\l}"]; - - DataRepository [label="{DataRepository|- directoryPath: String\l- instance: DataRepository\l|+ setDataStoreRoot(String): void\l+ getPath(): String\l+ Reservation(String): Reservation\l+ WalkFileSystemTree(AccomodationManager, Path): void\l+ LoadAccount(Path): Account\l}"]; - - // Enums - KitchenTypeEnum [label="{«enumeration»\lKitchenTypeEnum|None\lKitchenette\lFullKitchen\l}"]; - - ReservationStatusEnum [label="{«enumeration»\lReservationStatusEnum|Draft\lCanceled\lCompleted\l}"]; - - // Exceptions - DuplicateObjectException [label="{DuplicateObjectException|+ DuplicateObjectException()\l+ DuplicateObjectException(String)\l}"]; - - IllegalOperationException [label="{IllegalOperationException|+ IllegalOperationException()\l+ IllegalOperationException(String)\l}"]; - } - - // Package: lodge.reservation - subgraph cluster_reservation { - label="lodge.reservation"; - style=filled; - color=lightblue; - - IReservation [label="{«interface»\lIReservation|+ ReservationType(): String\l+ getReservation_number(): String\l+ getAccountNumber(): String\l+ getPhysical_address(): Address\l+ getPricePerNight(): float\l+ calculatePrice(): float\l+ checkValid(): boolean\l}"]; - - Reservation [label="{«abstract»\lReservation|# 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|+ getReservation_number(): String\l+ setReservation_number(String): void\l+ getAccountNumber(): String\l+ setAccountNumber(String): void\l+ getPhysical_address(): Address\l+ setPhysical_address(Address): void\l+ Write(Reservation): void\l+ Change(Reservation, ReservationStatusEnum): void\l+ update(Reservation): void\l+ ReservationType(): String\l}"]; - } - - // Package: lodge.reservationsystem - subgraph cluster_reservationsystem { - label="lodge.reservationsystem"; - style=filled; - color=lightyellow; - - AccomodationManager [label="{AccomodationManager|- accounts: AccountList\l|+ loadAll(): void\l+ load(Path): void\l+ retrieveLoadedAccounts(): List\\l+ retrieveAccount(String): Account\l+ AddAccount(Account): void\l+ UpdateAccount(Account): void\l+ newAccount(String, Address, EmailAddress): Account\l+ addReservation(Account, Reservation): boolean\l+ findReservation(String): Reservation\l+ getReservationList(): List\\l+ showReservationList(): void\l}"]; - - HotelReservation [label="{HotelReservation|extends Reservation|+ HotelReservation()\l+ HotelReservation(Address)\l+ copy(String): Reservation\l+ ReservationType(): String\l+ checkValid(): boolean\l+ getPricePerNight(): float\l+ calculatePrice(): float\l}"]; - - CabinReservation [label="{CabinReservation|extends Reservation|+ CabinReservation()\l+ CabinReservation(Address)\l+ ReservationType(): String\l+ checkValid(): boolean\l+ getPricePerNight(): float\l+ calculatePrice(): float\l}"]; - - HouseReservation [label="{HouseReservation|extends Reservation|+ HouseReservation()\l+ HouseReservation(Address)\l+ copy(String): Reservation\l+ ReservationType(): String\l+ checkValid(): boolean\l+ getPricePerNight(): float\l+ calculatePrice(): float\l}"]; - } - - // Test class - TestReservations [label="{TestReservations|+ main(String[]): void\l}"]; - - // Relationships - - // Composition relationships - Account -> AccountReservationList [label="1" arrowhead=diamond]; - Account -> Address [label="1" arrowhead=diamond]; - Account -> EmailAddress [label="1" arrowhead=diamond]; - AccountList -> Account [label="0...*" arrowhead=odiamond]; - AccountReservationList -> IReservation [label="0...*" arrowhead=odiamond]; - AccomodationManager -> AccountList [label="1" arrowhead=diamond]; - + node [shape=record, style=filled, fillcolor=lightyellow]; + edge [arrowhead=empty]; + + // Data Package Classes + 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(account_number, phone_number, mailing_address, email_address)\l + + Account(phone_number, mailing_address, email_address)\l + + toString(): String\l + + add(rsrv: Reservation): boolean\l + + Write(acct: Account): void\l + + getAccount_number(): String\l + + setAccount_number(account_number: String): void\l + + getPhone_number(): String\l + + setPhone_number(phone_number: String): void\l + + getMailing_address(): Address\l + + setMailing_address(mailing_address: Address): void\l + + getEmail_address(): EmailAddress\l + + setEmail_address(email_address: EmailAddress): void\l + + hashCode(): int\l + + findReservation(reservation_number: String): Reservation\l + + equals(obj: Object): boolean\l + + update(acct: Account): void\l + + getAllReservations(): ListIterator\\l + }"] + + AccountList [label="{AccountList| + | + + accountSerial(phone_number, mailing_address, email_address): String\l + + add(account: Account): boolean\l + + save(acct: Account): void\l + + find(account_number: String): Account\l + + getListOfReservations(): List\\l + + showReservationList(): void\l + }"] + + AccountReservationList [label="{AccountReservationList| + | + - reservationSerial(reservation: Reservation): String\l + + add(reservation: IReservation): boolean\l + + toString(): String\l + + find(reservation_number: String): Reservation\l + + update(incoming_reservation_list: AccountReservationList): void\l + }"] + + Address [label="{Address| + - street: String\l + - city: String\l + - state: String\l + - zip: String\l| + + Address(street, city, state, zip)\l + + getStreet(): String\l + + setStreet(street: String): void\l + + getCity(): String\l + + setCity(city: String): void\l + + getState(): String\l + + setState(state: String): void\l + + getZip(): String\l + + setZip(zip: String): void\l + + hashCode(): int\l + + equals(obj: Object): boolean\l + + toString(): String\l + }"] + + EmailAddress [label="{EmailAddress| + - email_address: String\l| + + EmailAddress(email_address: String)\l + + getEmail_address(): String\l + + setEmail_address(email_address: String): void\l + + hashCode(): int\l + + equals(obj: Object): boolean\l + + toString(): String\l + }"] + + DataRepository [label="{DataRepository| + - directoryPath: String\l + - instance: DataRepository\l| + # getInstance(): DataRepository\l + + setDataStoreRoot(directoryPath: String): void\l + + getPath(): String\l + + Reservation(type: String): Reservation\l + + WalkFileSystemTree(manager: AccomodationManager, rootDir: Path): void\l + + LoadAccount(file: Path): Account\l + - loadReservationRefList(rdr: JsonReader, ac: Account): void\l + - loadReservation(ac: Account, reservationType: String, reservationNumber: String): void\l + }"] + + // Enums + KitchenTypeEnum [label="{«enumeration»\nKitchenTypeEnum| + None\l + Kitchenette\l + FullKitchen\l + }", fillcolor=lightblue] + + ReservationStatusEnum [label="{«enumeration»\nReservationStatusEnum| + Draft\l + Canceled\l + Completed\l + }", fillcolor=lightblue] + + // Exceptions + DuplicateObjectException [label="{DuplicateObjectException| + | + + DuplicateObjectException()\l + + DuplicateObjectException(message: String)\l + }", fillcolor=lightcoral] + + IllegalOperationException [label="{IllegalOperationException| + | + + IllegalOperationException()\l + + IllegalOperationException(message: String)\l + }", fillcolor=lightcoral] + + // Reservation Package + IReservation [label="{«interface»\nIReservation| + | + + ReservationType(): String\l + + copy(type: String): Reservation\l + + getReservation_number(): String\l + + getAccountNumber(): String\l + + getPhysical_address(): Address\l + + getPricePerNight(): float\l + + calculatePrice(): float\l + + checkValid(): boolean\l + }", fillcolor=lightgreen] + + 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 + - numberOfBeds: Integer\l + - numberOfBedRooms: Integer\l + - numberOfBathRooms: Integer\l + - numberOfFloors: Integer\l + - squareFeet: Integer\l + - price: Float\l + # accountNumber: String\l| + # Reservation()\l + + setReservation_number(reservation_number: String): void\l + + getReservation_number(): String\l + + getAccountNumber(): String\l + + setAccountNumber(account_number: String): void\l + + setPhysical_address(physical_address: Address): void\l + + getPhysical_address(): Address\l + + getMailing_address(): Address\l + + setMailing_address(mailing_address: Address): void\l + + setReservation_start_date(reservation_start_date: ZonedDateTime): void\l + + getReservation_start_date(): ZonedDateTime\l + + setReservation_end_date(reservation_end_date: ZonedDateTime): void\l + + getReservation_end_date(): ZonedDateTime\l + + setReservation_status(reservation_status: ReservationStatusEnum): void\l + + getReservation_status(): ReservationStatusEnum\l + + getKitchen(): KitchenTypeEnum\l + + setKitchen(kitchen: KitchenTypeEnum): void\l + + setNumberOfBeds(numberOfBeds: Integer): void\l + + getNumberOfBeds(): Integer\l + + numberOfBedRooms(): Integer\l + + setNumberOfBedRooms(numberOfBedRooms: Integer): void\l + + getNumberOfBedRooms(): Integer\l + + setNumberOfBathRooms(numberOfBathRooms: Integer): void\l + + getNumberOfBathRooms(): Integer\l + + setNumberOfFloors(numberOfFloors: Integer): void\l + + getNumberOfFloors(): Integer\l + + setSquareFeet(squareFeet: Integer): void\l + + getSquareFeet(): Integer\l + + setPrice(price: Float): void\l + + getPrice(): Float\l + + getType(): char\l + + setType(type: char): void\l + + hashCode(): int\l + + equals(obj: Object): boolean\l + + toString(): String\l + + Write(reservation: Reservation): void\l + + Change(reservation: Reservation, newStatus: ReservationStatusEnum): void\l + + update(rsrv: Reservation): void\l + + {abstract} ReservationType(): String\l + }", fillcolor=lightgray] + + // ReservationSystem Package + AccomodationManager [label="{AccomodationManager| + - accounts: AccountList\l| + + AccomodationManager(home: String)\l + + setDataStoreRoot(home: String): void\l + + loadAll(): void\l + + load(file: Path): void\l + + retrieveLoadedAccounts(): List\\l + + retrieveAccount(acct_id: String): Account\l + + AddAccount(acct: Account): void\l + + UpdateAccount(acct: Account): void\l + + newAccount(phone_number, mailing_address, email_address): Account\l + + addReservation(account: Account, reservation: Reservation): boolean\l + + findReservation(reservation_number: String): Reservation\l + + getReservationList(): List\\l + + showReservationList(): void\l + }"] + + HotelReservation [label="{HotelReservation| + | + + HotelReservation()\l + + HotelReservation(physical_address: Address)\l + + copy(reservationType: String): Reservation\l + + ReservationType(): String\l + + checkValid(): boolean\l + + getPricePerNight(): float\l + + calculatePrice(): float\l + }"] + + HouseReservation [label="{HouseReservation| + | + + HouseReservation()\l + + HouseReservation(physical_address: Address)\l + + copy(reservationType: String): Reservation\l + + ReservationType(): String\l + + checkValid(): boolean\l + + getPricePerNight(): float\l + + calculatePrice(): float\l + }"] + + CabinReservation [label="{CabinReservation| + | + + CabinReservation()\l + + CabinReservation(physical_address: Address)\l + + ReservationType(): String\l + + checkValid(): boolean\l + + getPricePerNight(): float\l + + calculatePrice(): float\l + }"] + + TestReservations [label="{TestReservations| + | + + main(args: String[]): void\l + }"] + + getRepositoryConfig [label="{getRepositoryConfig| + | + + getPath(): String\l + }"] + + // Base class relationships + RuntimeException [label="RuntimeException", fillcolor=white] + ArrayList [label="ArrayList\", fillcolor=white] + // Inheritance relationships - 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"]; + AccountList -> ArrayList [arrowhead=empty] + AccountReservationList -> ArrayList [arrowhead=empty] + DuplicateObjectException -> RuntimeException [arrowhead=empty] + IllegalOperationException -> RuntimeException [arrowhead=empty] + // Interface implementation + Reservation -> IReservation [arrowhead=empty, style=dashed] + // Class inheritance + HotelReservation -> Reservation [arrowhead=empty] + HouseReservation -> Reservation [arrowhead=empty] + CabinReservation -> Reservation [arrowhead=empty] + + // Composition relationships + Account -> AccountReservationList [arrowhead=diamond, label="1"] + Account -> Address [arrowhead=diamond, label="1"] + Account -> EmailAddress [arrowhead=diamond, label="1"] - // Dependencies and associations - Reservation -> Address [label="1", arrowhead=diamond]; - Reservation -> KitchenTypeEnum [arrowhead=open, style=dashed]; - Reservation -> ReservationStatusEnum [arrowhead=open, style=dashed]; - DataRepository -> AccomodationManager [arrowhead=open, style=dashed]; + // Aggregation relationships + AccomodationManager -> AccountList [arrowhead=odiamond, label="1"] + AccountList -> Account [arrowhead=odiamond, label="*"] + AccountReservationList -> IReservation [arrowhead=odiamond, label="0...*"] - AccomodationManager -> Reservation [arrowhead=open, style=dashed]; - AccomodationManager -> DataRepository [arrowhead=open, style=dashed]; - TestReservations -> AccomodationManager [arrowhead=open, style=dashed]; - TestReservations -> HotelReservation [arrowhead=open, style=dashed]; - TestReservations -> CabinReservation [arrowhead=open, style=dashed]; - TestReservations -> HouseReservation [arrowhead=open, style=dashed]; + // Association relationships + Reservation -> Address [arrowhead=vee, label="uses", style=dashed] + Reservation -> ReservationStatusEnum [arrowhead=vee, label="uses", style=dashed] + Reservation -> KitchenTypeEnum [arrowhead=vee, label="uses", style=dashed] - // Exception relationships - AccountList -> DuplicateObjectException [arrowhead=open, style=dashed]; - AccountReservationList -> DuplicateObjectException [arrowhead=open, style=dashed]; - Reservation -> IllegalOperationException [arrowhead=open, style=dashed]; - Reservation -> ZonedDateTime [arrowhead=open, style=dashed]; + // Dependency relationships + DataRepository -> AccomodationManager [arrowhead=vee, style=dashed, label="uses"] + DataRepository -> Account [arrowhead=vee, style=dashed, label="creates"] + DataRepository -> Reservation [arrowhead=vee, style=dashed, label="creates"] + TestReservations -> AccomodationManager [arrowhead=vee, style=dashed, label="uses"] + TestReservations -> getRepositoryConfig [arrowhead=vee, style=dashed, label="uses"] + + // Singleton pattern + DataRepository -> DataRepository [arrowhead=vee, style=dashed, label="singleton"] } \ No newline at end of file diff --git a/uml/classdiagram.svg b/uml/classdiagram.svg index 51646be..f38e095 100644 --- a/uml/classdiagram.svg +++ b/uml/classdiagram.svg @@ -1,451 +1,453 @@ - - - + + LodgeReservationSystem - - -cluster_reservationsystem - -lodge.reservationsystem - - -cluster_data - -lodge.data - - -cluster_reservation - -lodge.reservation - + Account - -Account - -+ account_number: String -+ phone_number: String -+ mailing_address: Address -+ email_address: EmailAddress -+ reservations: AccountReservationList - -+ add(Reservation): boolean -+ findReservation(String): Reservation -+ getAllReservations(): ListIterator<IReservation> -+ update(Account): void -+ Write(Account): void + +Account + +- account_number: String + - phone_number: String + - mailing_address: Address + - email_address: EmailAddress + - reservations: AccountReservationList + ++ Account() + + Account(account_number, phone_number, mailing_address, email_address) + + Account(phone_number, mailing_address, email_address) + + toString(): String + + add(rsrv: Reservation): boolean + + Write(acct: Account): void + + getAccount_number(): String + + setAccount_number(account_number: String): void + + getPhone_number(): String + + setPhone_number(phone_number: String): void + + getMailing_address(): Address + + setMailing_address(mailing_address: Address): void + + getEmail_address(): EmailAddress + + setEmail_address(email_address: EmailAddress): void + + hashCode(): int + + findReservation(reservation_number: String): Reservation + + equals(obj: Object): boolean + + update(acct: Account): void + + getAllReservations(): ListIterator<IReservation> AccountReservationList - -AccountReservationList - -extends ArrayList<IReservation> - -+ add(IReservation): boolean -+ find(String): Reservation -+ update(AccountReservationList): void -+ toString(): String + +AccountReservationList + + + +- reservationSerial(reservation: Reservation): String + + add(reservation: IReservation): boolean + + toString(): String + + find(reservation_number: String): Reservation + + update(incoming_reservation_list: AccountReservationList): void - + Account->AccountReservationList - - -1 + + +1 Address - -Address - -+ street: String -+ city: String -+ state: String -+ zip: String - -+ getStreet(): String -+ setStreet(String): void -+ getCity(): String -+ setCity(String): void -+ getState(): String -+ setState(String): void -+ getZip(): String -+ setZip(String): void -+ equals(Object): boolean -+ hashCode(): int -+ toString(): String + +Address + +- street: String + - city: String + - state: String + - zip: String + ++ Address(street, city, state, zip) + + getStreet(): String + + setStreet(street: String): void + + getCity(): String + + setCity(city: String): void + + getState(): String + + setState(state: String): void + + getZip(): String + + setZip(zip: String): void + + hashCode(): int + + equals(obj: Object): boolean + + toString(): String - + Account->Address - - -1 + + +1 EmailAddress - -EmailAddress - -+ email_address: String - -+ getEmail_address(): String -+ setEmail_address(String): void -+ equals(Object): boolean -+ hashCode(): int -+ toString(): String + +EmailAddress + +- email_address: String + ++ EmailAddress(email_address: String) + + getEmail_address(): String + + setEmail_address(email_address: String): void + + hashCode(): int + + equals(obj: Object): boolean + + toString(): String - + Account->EmailAddress - - -1 + + +1 AccountList - -AccountList - -extends ArrayList<Account> - -+ accountSerial(String, Address, EmailAddress): String -+ add(Account): boolean -+ find(String): Account -+ save(Account): void -+ getListOfReservations(): List<? extends IReservation> -+ showReservationList(): void + +AccountList + + + ++ accountSerial(phone_number, mailing_address, email_address): String + + add(account: Account): boolean + + save(acct: Account): void + + find(account_number: String): Account + + getListOfReservations(): List<? extends IReservation> + + showReservationList(): void - + AccountList->Account - - -0...* + + +* - - -DuplicateObjectException - -DuplicateObjectException - -+ DuplicateObjectException() -+ DuplicateObjectException(String) + + +ArrayList + +ArrayList<T> - - -AccountList->DuplicateObjectException - - - - - -AccountReservationList->DuplicateObjectException - - + + +AccountList->ArrayList + + IReservation - -«interface» -IReservation - -+ ReservationType(): String -+ getReservation_number(): String -+ getAccountNumber(): String -+ getPhysical_address(): Address -+ getPricePerNight(): float -+ calculatePrice(): float -+ checkValid(): boolean + +«interface» +IReservation + + + ++ ReservationType(): String + + copy(type: String): Reservation + + getReservation_number(): String + + getAccountNumber(): String + + getPhysical_address(): Address + + getPricePerNight(): float + + calculatePrice(): float + + checkValid(): boolean - + AccountReservationList->IReservation - - -0...* + + +0...* + + + +AccountReservationList->ArrayList + + DataRepository - -DataRepository - -- directoryPath: String -- instance: DataRepository - -+ setDataStoreRoot(String): void -+ getPath(): String -+ Reservation(String): Reservation -+ WalkFileSystemTree(AccomodationManager, Path): void -+ LoadAccount(Path): Account + +DataRepository + +- directoryPath: String + - instance: DataRepository + +# getInstance(): DataRepository + + setDataStoreRoot(directoryPath: String): void + + getPath(): String + + Reservation(type: String): Reservation + + WalkFileSystemTree(manager: AccomodationManager, rootDir: Path): void + + LoadAccount(file: Path): Account + - loadReservationRefList(rdr: JsonReader, ac: Account): void + - loadReservation(ac: Account, reservationType: String, reservationNumber: String): void - - -AccomodationManager - -AccomodationManager - -- accounts: AccountList - -+ loadAll(): void -+ load(Path): void -+ retrieveLoadedAccounts(): List<Account> -+ retrieveAccount(String): Account -+ AddAccount(Account): void -+ UpdateAccount(Account): void -+ newAccount(String, Address, EmailAddress): Account -+ addReservation(Account, Reservation): boolean -+ findReservation(String): Reservation -+ getReservationList(): List<? extends IReservation> -+ showReservationList(): void + + +DataRepository->Account + + +creates - - -DataRepository->AccomodationManager - - - - - -KitchenTypeEnum - -«enumeration» -KitchenTypeEnum - -None -Kitchenette -FullKitchen - - - -ReservationStatusEnum - -«enumeration» -ReservationStatusEnum - -Draft -Canceled -Completed - - - -IllegalOperationException - -IllegalOperationException - -+ IllegalOperationException() -+ IllegalOperationException(String) + + +DataRepository->DataRepository + + +singleton Reservation - -«abstract» -Reservation - -# 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 - -+ getReservation_number(): String -+ setReservation_number(String): void -+ getAccountNumber(): String -+ setAccountNumber(String): void -+ getPhysical_address(): Address -+ setPhysical_address(Address): void -+ Write(Reservation): void -+ Change(Reservation, ReservationStatusEnum): void -+ update(Reservation): void -+ ReservationType(): String + +Reservation + + + +DataRepository->Reservation + + +creates + + + +AccomodationManager + +AccomodationManager + +- accounts: AccountList + ++ AccomodationManager(home: String) + + setDataStoreRoot(home: String): void + + loadAll(): void + + load(file: Path): void + + retrieveLoadedAccounts(): List<Account> + + retrieveAccount(acct_id: String): Account + + AddAccount(acct: Account): void + + UpdateAccount(acct: Account): void + + newAccount(phone_number, mailing_address, email_address): Account + + addReservation(account: Account, reservation: Reservation): boolean + + findReservation(reservation_number: String): Reservation + + getReservationList(): List<? extends IReservation> + + showReservationList(): void + + + +DataRepository->AccomodationManager + + +uses + + + +KitchenTypeEnum + +«enumeration» +KitchenTypeEnum + +None + Kitchenette + FullKitchen + + + +ReservationStatusEnum + +«enumeration» +ReservationStatusEnum + +Draft + Canceled + Completed + + + +DuplicateObjectException + +DuplicateObjectException + + + ++ DuplicateObjectException() + + DuplicateObjectException(message: String) + + + +RuntimeException + +RuntimeException + + + +DuplicateObjectException->RuntimeException + + + + + +IllegalOperationException + +IllegalOperationException + + + ++ IllegalOperationException() + + IllegalOperationException(message: String) + + + +IllegalOperationException->RuntimeException + + - + Reservation->Address - - -1 + + +uses - + Reservation->KitchenTypeEnum - - + + +uses - + Reservation->ReservationStatusEnum - - - - - -Reservation->IllegalOperationException - - + + +uses - + Reservation->IReservation - - -implements - - - -ZonedDateTime - -ZonedDateTime - - - -Reservation->ZonedDateTime - - + + - + AccomodationManager->AccountList - - -1 - - - -AccomodationManager->DataRepository - - - - - -AccomodationManager->Reservation - - + + +1 HotelReservation - -HotelReservation - -extends Reservation - -+ HotelReservation() -+ HotelReservation(Address) -+ copy(String): Reservation -+ ReservationType(): String -+ checkValid(): boolean -+ getPricePerNight(): float -+ calculatePrice(): float + +HotelReservation + + + ++ HotelReservation() + + HotelReservation(physical_address: Address) + + copy(reservationType: String): Reservation + + ReservationType(): String + + checkValid(): boolean + + getPricePerNight(): float + + calculatePrice(): float - + HotelReservation->Reservation - - -extends - - - -CabinReservation - -CabinReservation - -extends Reservation - -+ CabinReservation() -+ CabinReservation(Address) -+ ReservationType(): String -+ checkValid(): boolean -+ getPricePerNight(): float -+ calculatePrice(): float - - - -CabinReservation->Reservation - - -extends + + - + HouseReservation - -HouseReservation - -extends Reservation - -+ HouseReservation() -+ HouseReservation(Address) -+ copy(String): Reservation -+ ReservationType(): String -+ checkValid(): boolean -+ getPricePerNight(): float -+ calculatePrice(): float + +HouseReservation + + + ++ HouseReservation() + + HouseReservation(physical_address: Address) + + copy(reservationType: String): Reservation + + ReservationType(): String + + checkValid(): boolean + + getPricePerNight(): float + + calculatePrice(): float - + HouseReservation->Reservation - - -extends + + + + + +CabinReservation + +CabinReservation + + + ++ CabinReservation() + + CabinReservation(physical_address: Address) + + ReservationType(): String + + checkValid(): boolean + + getPricePerNight(): float + + calculatePrice(): float + + + +CabinReservation->Reservation + + TestReservations - -TestReservations - -+ main(String[]): void + +TestReservations + + + ++ main(args: String[]): void - + TestReservations->AccomodationManager - - + + +uses - - -TestReservations->HotelReservation - - + + +getRepositoryConfig + +getRepositoryConfig + + + ++ getPath(): String - - -TestReservations->CabinReservation - - - - - -TestReservations->HouseReservation - - + + +TestReservations->getRepositoryConfig + + +uses