Files
reservationsystem/uml/classdiagram.svg
2025-09-23 23:29:10 -04:00

468 lines
41 KiB
XML

<?xml version="1.0" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1916pt" height="1473pt" viewBox="0.00 0.00 1916.00 1472.80">
<g id="graph0" class="graph" transform="translate(4,1468.800048828125) scale(1)" data-name="LodgeReservationSystem">
<polygon fill="white" stroke="none" points="-4,4 -4,-1468.8 1912,-1468.8 1912,4 -4,4" style=""/>
<g id="clust1" class="cluster" data-name="cluster_data">
<polygon fill="lightgrey" stroke="lightgrey" points="8,-8 8,-1059.6 1364,-1059.6 1364,-8 8,-8" style=""/>
<text text-anchor="middle" x="686" y="-1043" font-family="Times,serif" font-size="14.00" style="">lodge.data</text>
</g>
<g id="clust2" class="cluster" data-name="cluster_account">
<polygon fill="#e9d5ba" stroke="#e9d5ba" points="833,-597.2 833,-1026.8 1113,-1026.8 1113,-597.2 833,-597.2" style=""/>
<text text-anchor="middle" x="973" y="-1010.2" font-family="Times,serif" font-size="14.00" style="">lodge.reservation</text>
</g>
<g id="clust3" class="cluster" data-name="cluster_reservation">
<polygon fill="lightblue" stroke="lightblue" points="851,-16 851,-568.4 1356,-568.4 1356,-16 851,-16" style=""/>
<text text-anchor="middle" x="1103.5" y="-551.8" font-family="Times,serif" font-size="14.00" style="">lodge.reservation</text>
</g>
<g id="clust4" class="cluster" data-name="cluster_reservationsystem">
<polygon fill="lightyellow" stroke="lightyellow" points="1372,-643.2 1372,-1334.2 1900,-1334.2 1900,-643.2 1372,-643.2" style=""/>
<text text-anchor="middle" x="1636" y="-1317.6" font-family="Times,serif" font-size="14.00" style="">lodge.reservationsystem</text>
</g>
<g id="clust5" class="cluster" data-name="cluster_lodge">
<polygon fill="lightcoral" stroke="lightcoral" points="1594,-1363 1594,-1456.8 1776,-1456.8 1776,-1363 1594,-1363" style=""/>
<text text-anchor="middle" x="1685" y="-1440.2" font-family="Times,serif" font-size="14.00" style="">lodge</text>
</g>
<!-- Address -->
<g id="node1" class="node" pointer-events="visible" data-name="Address">
<polygon fill="none" stroke="black" points="206.44,-24.5 206.44,-168.5 395.56,-168.5 395.56,-24.5 206.44,-24.5" style=""/>
<text text-anchor="middle" x="301" y="-155.5" font-family="Arial" font-size="10.00" style="">Address</text>
<polyline fill="none" stroke="black" points="206.44,-148.5 395.56,-148.5" style=""/>
<text text-anchor="start" x="214.44" y="-135.5" font-family="Arial" font-size="10.00" style="">+ street: String</text>
<text text-anchor="start" x="214.44" y="-123.5" font-family="Arial" font-size="10.00" style="">+ city: String</text>
<text text-anchor="start" x="214.44" y="-111.5" font-family="Arial" font-size="10.00" style="">+ state: String</text>
<text text-anchor="start" x="214.44" y="-99.5" font-family="Arial" font-size="10.00" style="">+ zip: String</text>
<polyline fill="none" stroke="black" points="206.44,-92.5 395.56,-92.5" style=""/>
<text text-anchor="start" x="214.44" y="-79.5" font-family="Arial" font-size="10.00" style="">+ Address(String, String, String, String)</text>
<text text-anchor="start" x="214.44" y="-67.5" font-family="Arial" font-size="10.00" style="">+ getters/setters</text>
<text text-anchor="start" x="214.44" y="-55.5" font-family="Arial" font-size="10.00" style="">+ hashCode(): int</text>
<text text-anchor="start" x="214.44" y="-43.5" font-family="Arial" font-size="10.00" style="">+ equals(Object): boolean</text>
<text text-anchor="start" x="214.44" y="-31.5" font-family="Arial" font-size="10.00" style="">+ toString(): String</text>
</g>
<!-- EmailAddress -->
<g id="node2" class="node" pointer-events="visible" data-name="EmailAddress">
<polygon fill="none" stroke="black" points="679.61,-321.1 679.61,-441.1 840.39,-441.1 840.39,-321.1 679.61,-321.1" style=""/>
<text text-anchor="middle" x="760" y="-428.1" font-family="Arial" font-size="10.00" style="">EmailAddress</text>
<polyline fill="none" stroke="black" points="679.61,-421.1 840.39,-421.1" style=""/>
<text text-anchor="start" x="687.61" y="-408.1" font-family="Arial" font-size="10.00" style="">+ email_address: String</text>
<polyline fill="none" stroke="black" points="679.61,-401.1 840.39,-401.1" style=""/>
<text text-anchor="start" x="687.61" y="-388.1" font-family="Arial" font-size="10.00" style="">+ EmailAddress(String)</text>
<text text-anchor="start" x="687.61" y="-376.1" font-family="Arial" font-size="10.00" style="">+ getEmail_address(): String</text>
<text text-anchor="start" x="687.61" y="-364.1" font-family="Arial" font-size="10.00" style="">+ setEmail_address(String): void</text>
<text text-anchor="start" x="687.61" y="-352.1" font-family="Arial" font-size="10.00" style="">+ hashCode(): int</text>
<text text-anchor="start" x="687.61" y="-340.1" font-family="Arial" font-size="10.00" style="">+ equals(Object): boolean</text>
<text text-anchor="start" x="687.61" y="-328.1" font-family="Arial" font-size="10.00" style="">+ toString(): String</text>
</g>
<!-- KitchenTypeEnum -->
<g id="node3" class="node" pointer-events="visible" data-name="KitchenTypeEnum">
<polygon fill="none" stroke="black" points="413.15,-54.5 413.15,-138.5 510.85,-138.5 510.85,-54.5 413.15,-54.5" style=""/>
<text text-anchor="middle" x="462" y="-125.5" font-family="Arial" font-size="10.00" style="">KitchenTypeEnum</text>
<polyline fill="none" stroke="black" points="413.15,-118.5 510.85,-118.5" style=""/>
<text text-anchor="middle" x="462" y="-105.5" font-family="Arial" font-size="10.00" style="">&lt;&lt;enumeration&gt;&gt;</text>
<polyline fill="none" stroke="black" points="413.15,-98.5 510.85,-98.5" style=""/>
<text text-anchor="start" x="421.15" y="-85.5" font-family="Arial" font-size="10.00" style="">None</text>
<text text-anchor="start" x="421.15" y="-73.5" font-family="Arial" font-size="10.00" style="">Kitchenette</text>
<text text-anchor="start" x="421.15" y="-61.5" font-family="Arial" font-size="10.00" style="">FullKitchen</text>
</g>
<!-- ReservationStatusEnum -->
<g id="node4" class="node" pointer-events="visible" data-name="ReservationStatusEnum">
<polygon fill="none" stroke="black" points="529.08,-54.5 529.08,-138.5 652.92,-138.5 652.92,-54.5 529.08,-54.5" style=""/>
<text text-anchor="middle" x="591" y="-125.5" font-family="Arial" font-size="10.00" style="">ReservationStatusEnum</text>
<polyline fill="none" stroke="black" points="529.08,-118.5 652.92,-118.5" style=""/>
<text text-anchor="middle" x="591" y="-105.5" font-family="Arial" font-size="10.00" style="">&lt;&lt;enumeration&gt;&gt;</text>
<polyline fill="none" stroke="black" points="529.08,-98.5 652.92,-98.5" style=""/>
<text text-anchor="start" x="537.08" y="-85.5" font-family="Arial" font-size="10.00" style="">Draft</text>
<text text-anchor="start" x="537.08" y="-73.5" font-family="Arial" font-size="10.00" style="">Canceled</text>
<text text-anchor="start" x="537.08" y="-61.5" font-family="Arial" font-size="10.00" style="">Completed</text>
</g>
<!-- DuplicateObjectException -->
<g id="node5" class="node" pointer-events="visible" data-name="DuplicateObjectException">
<polygon fill="none" stroke="black" points="16.05,-60.5 16.05,-132.5 187.95,-132.5 187.95,-60.5 16.05,-60.5" style=""/>
<text text-anchor="middle" x="102" y="-119.5" font-family="Arial" font-size="10.00" style="">DuplicateObjectException</text>
<polyline fill="none" stroke="black" points="16.05,-112.5 187.95,-112.5" style=""/>
<text text-anchor="middle" x="102" y="-99.5" font-family="Arial" font-size="10.00" style="">extends RuntimeException</text>
<polyline fill="none" stroke="black" points="16.05,-92.5 187.95,-92.5" style=""/>
<text text-anchor="start" x="24.05" y="-79.5" font-family="Arial" font-size="10.00" style="">+ DuplicateObjectException()</text>
<text text-anchor="start" x="24.05" y="-67.5" font-family="Arial" font-size="10.00" style="">+ DuplicateObjectException(String)</text>
</g>
<!-- IllegalOperationException -->
<g id="node6" class="node" pointer-events="visible" data-name="IllegalOperationException">
<polygon fill="none" stroke="black" points="671.32,-60.5 671.32,-132.5 842.68,-132.5 842.68,-60.5 671.32,-60.5" style=""/>
<text text-anchor="middle" x="757" y="-119.5" font-family="Arial" font-size="10.00" style="">IllegalOperationException</text>
<polyline fill="none" stroke="black" points="671.32,-112.5 842.68,-112.5" style=""/>
<text text-anchor="middle" x="757" y="-99.5" font-family="Arial" font-size="10.00" style="">extends RuntimeException</text>
<polyline fill="none" stroke="black" points="671.32,-92.5 842.68,-92.5" style=""/>
<text text-anchor="start" x="679.32" y="-79.5" font-family="Arial" font-size="10.00" style="">+ IllegalOperationException()</text>
<text text-anchor="start" x="679.32" y="-67.5" font-family="Arial" font-size="10.00" style="">+ IllegalOperationException(String)</text>
</g>
<!-- Account -->
<g id="node7" class="node" pointer-events="visible" data-name="Account">
<polygon fill="none" stroke="black" points="848.37,-605.7 848.37,-809.7 1083.63,-809.7 1083.63,-605.7 848.37,-605.7" style=""/>
<text text-anchor="middle" x="966" y="-796.7" font-family="Arial" font-size="10.00" style="">Account</text>
<polyline fill="none" stroke="black" points="848.37,-789.7 1083.63,-789.7" style=""/>
<text text-anchor="start" x="856.37" y="-776.7" font-family="Arial" font-size="10.00" style="">+ account_number: String</text>
<text text-anchor="start" x="856.37" y="-764.7" font-family="Arial" font-size="10.00" style="">+ phone_number: String</text>
<text text-anchor="start" x="856.37" y="-752.7" font-family="Arial" font-size="10.00" style="">+ mailing_address: Address</text>
<text text-anchor="start" x="856.37" y="-740.7" font-family="Arial" font-size="10.00" style="">+ email_address: EmailAddress</text>
<text text-anchor="start" x="856.37" y="-728.7" font-family="Arial" font-size="10.00" style="">- reservations: AccountReservationList</text>
<polyline fill="none" stroke="black" points="848.37,-721.7 1083.63,-721.7" style=""/>
<text text-anchor="start" x="856.37" y="-708.7" font-family="Arial" font-size="10.00" style="">+ Account()</text>
<text text-anchor="start" x="856.37" y="-696.7" font-family="Arial" font-size="10.00" style="">+ Account(String, String, Address, EmailAddress)</text>
<text text-anchor="start" x="856.37" y="-684.7" font-family="Arial" font-size="10.00" style="">+ Account(String, Address, EmailAddress)</text>
<text text-anchor="start" x="856.37" y="-672.7" font-family="Arial" font-size="10.00" style="">+ add(Reservation): boolean</text>
<text text-anchor="start" x="856.37" y="-660.7" font-family="Arial" font-size="10.00" style="">+ findReservation(String): Reservation</text>
<text text-anchor="start" x="856.37" y="-648.7" font-family="Arial" font-size="10.00" style="">+ getAllReservations(): ListIterator&lt;IReservation&gt;</text>
<text text-anchor="start" x="856.37" y="-636.7" font-family="Arial" font-size="10.00" style="">+ update(Account): void</text>
<text text-anchor="start" x="856.37" y="-624.7" font-family="Arial" font-size="10.00" style="">+ toString(): String</text>
<text text-anchor="start" x="856.37" y="-612.7" font-family="Arial" font-size="10.00" style="">+ static Write(Account): void</text>
</g>
<!-- Account&#45;&gt;Address -->
<g id="edge6" class="edge" data-name="Account-&gt;Address">
<path fill="none" stroke="black" d="M848.59,-684.51C771.89,-664.93 673.67,-629.66 605.46,-568.4 463.75,-441.13 529.54,-335.29 410,-187 407.27,-183.61 404.38,-180.25 401.39,-176.95" style=""/>
<polygon fill="black" stroke="black" points="401.48,-177.04 394.45,-175.44 393.22,-168.33 400.25,-169.94 401.48,-177.04" style=""/>
<text text-anchor="middle" x="637.77" y="-378.4" font-family="Arial" font-size="9.00" style="">mailing_address</text>
</g>
<!-- Account&#45;&gt;EmailAddress -->
<g id="edge7" class="edge" data-name="Account-&gt;EmailAddress">
<path fill="none" stroke="black" d="M874.02,-606.06C864.4,-593.75 855.17,-581.04 847,-568.4 823.38,-531.86 802.53,-487.88 787.17,-451.83" style=""/>
<polygon fill="black" stroke="black" points="787.23,-451.97 781.22,-447.99 782.58,-440.91 788.59,-444.89 787.23,-451.97" style=""/>
<text text-anchor="middle" x="887.27" y="-579.1" font-family="Arial" font-size="9.00" style="">email_address</text>
</g>
<!-- AccountReservationList -->
<g id="node11" class="node" pointer-events="visible" data-name="AccountReservationList">
<polygon fill="none" stroke="black" points="858.52,-327.1 858.52,-435.1 1073.48,-435.1 1073.48,-327.1 858.52,-327.1" style=""/>
<text text-anchor="middle" x="966" y="-422.1" font-family="Arial" font-size="10.00" style="">AccountReservationList</text>
<polyline fill="none" stroke="black" points="858.52,-415.1 1073.48,-415.1" style=""/>
<text text-anchor="middle" x="966" y="-402.1" font-family="Arial" font-size="10.00" style="">extends ArrayList&lt;IReservation&gt;</text>
<polyline fill="none" stroke="black" points="858.52,-395.1 1073.48,-395.1" style=""/>
<text text-anchor="start" x="866.52" y="-382.1" font-family="Arial" font-size="10.00" style="">- static reservationSerial(Reservation): String</text>
<text text-anchor="start" x="866.52" y="-370.1" font-family="Arial" font-size="10.00" style="">+ add(IReservation): boolean</text>
<text text-anchor="start" x="866.52" y="-358.1" font-family="Arial" font-size="10.00" style="">+ find(String): Reservation</text>
<text text-anchor="start" x="866.52" y="-346.1" font-family="Arial" font-size="10.00" style="">+ update(AccountReservationList): void</text>
<text text-anchor="start" x="866.52" y="-334.1" font-family="Arial" font-size="10.00" style="">+ toString(): String</text>
</g>
<!-- Account&#45;&gt;AccountReservationList -->
<g id="edge5" class="edge" data-name="Account-&gt;AccountReservationList">
<path fill="none" stroke="black" d="M966,-605.77C966,-553.84 966,-492.07 966,-446.62" style=""/>
<polygon fill="black" stroke="black" points="966,-446.84 962,-440.84 966,-434.84 970,-440.84 966,-446.84" style=""/>
<text text-anchor="middle" x="982.76" y="-579.1" font-family="Arial" font-size="9.00" style="">contains</text>
</g>
<!-- AccountList -->
<g id="node8" class="node" pointer-events="visible" data-name="AccountList">
<polygon fill="none" stroke="black" points="840.63,-873.5 840.63,-993.5 1105.37,-993.5 1105.37,-873.5 840.63,-873.5" style=""/>
<text text-anchor="middle" x="973" y="-980.5" font-family="Arial" font-size="10.00" style="">AccountList</text>
<polyline fill="none" stroke="black" points="840.63,-973.5 1105.37,-973.5" style=""/>
<text text-anchor="middle" x="973" y="-960.5" font-family="Arial" font-size="10.00" style="">extends ArrayList&lt;Account&gt;</text>
<polyline fill="none" stroke="black" points="840.63,-953.5 1105.37,-953.5" style=""/>
<text text-anchor="start" x="848.63" y="-940.5" font-family="Arial" font-size="10.00" style="">+ static accountSerial(...): String</text>
<text text-anchor="start" x="848.63" y="-928.5" font-family="Arial" font-size="10.00" style="">+ add(Account): boolean</text>
<text text-anchor="start" x="848.63" y="-916.5" font-family="Arial" font-size="10.00" style="">+ save(Account): void</text>
<text text-anchor="start" x="848.63" y="-904.5" font-family="Arial" font-size="10.00" style="">+ find(String): Account</text>
<text text-anchor="start" x="848.63" y="-892.5" font-family="Arial" font-size="10.00" style="">+ getListOfReservations(): List&lt;? extends IReservation&gt;</text>
<text text-anchor="start" x="848.63" y="-880.5" font-family="Arial" font-size="10.00" style="">+ showReservationList(): void</text>
</g>
<!-- AccountList&#45;&gt;Account -->
<g id="edge8" class="edge" data-name="AccountList-&gt;Account">
<path fill="none" stroke="black" d="M971.16,-873.7C970.66,-857.55 970.09,-839.48 969.52,-821.39" style=""/>
<polygon fill="none" stroke="black" points="969.53,-821.51 965.34,-815.63 969.15,-809.51 973.34,-815.38 969.53,-821.51" style=""/>
<text text-anchor="middle" x="993.77" y="-830.9" font-family="Arial" font-size="9.00" style="">contains 0..*</text>
</g>
<!-- IReservation -->
<g id="node9" class="node" pointer-events="visible" data-name="IReservation">
<polygon fill="none" stroke="black" points="962.16,-24.5 962.16,-168.5 1131.84,-168.5 1131.84,-24.5 962.16,-24.5" style=""/>
<text text-anchor="middle" x="1047" y="-155.5" font-family="Arial" font-size="10.00" style="">IReservation</text>
<polyline fill="none" stroke="black" points="962.16,-148.5 1131.84,-148.5" style=""/>
<text text-anchor="middle" x="1047" y="-135.5" font-family="Arial" font-size="10.00" style="">&lt;&lt;interface&gt;&gt;</text>
<polyline fill="none" stroke="black" points="962.16,-128.5 1131.84,-128.5" style=""/>
<text text-anchor="start" x="970.16" y="-115.5" font-family="Arial" font-size="10.00" style="">+ ReservationType(): String</text>
<text text-anchor="start" x="970.16" y="-103.5" font-family="Arial" font-size="10.00" style="">+ static copy(String): Reservation</text>
<text text-anchor="start" x="970.16" y="-91.5" font-family="Arial" font-size="10.00" style="">+ getReservation_number(): String</text>
<text text-anchor="start" x="970.16" y="-79.5" font-family="Arial" font-size="10.00" style="">+ getAccountNumber(): String</text>
<text text-anchor="start" x="970.16" y="-67.5" font-family="Arial" font-size="10.00" style="">+ getPhysical_address(): Address</text>
<text text-anchor="start" x="970.16" y="-55.5" font-family="Arial" font-size="10.00" style="">+ getPricePerNight(): float</text>
<text text-anchor="start" x="970.16" y="-43.5" font-family="Arial" font-size="10.00" style="">+ calculatePrice(): float</text>
<text text-anchor="start" x="970.16" y="-31.5" font-family="Arial" font-size="10.00" style="">+ checkValid(): boolean</text>
</g>
<!-- Reservation -->
<g id="node10" class="node" pointer-events="visible" data-name="Reservation">
<polygon fill="none" stroke="black" points="1091.52,-227.1 1091.52,-535.1 1348.48,-535.1 1348.48,-227.1 1091.52,-227.1" style=""/>
<text text-anchor="middle" x="1220" y="-522.1" font-family="Arial" font-size="10.00" style="">Reservation</text>
<polyline fill="none" stroke="black" points="1091.52,-515.1 1348.48,-515.1" style=""/>
<text text-anchor="middle" x="1220" y="-502.1" font-family="Arial" font-size="10.00" style="">&lt;&lt;abstract&gt;&gt;</text>
<polyline fill="none" stroke="black" points="1091.52,-495.1 1348.48,-495.1" style=""/>
<text text-anchor="start" x="1099.52" y="-482.1" font-family="Arial" font-size="10.00" style=""># type: char</text>
<text text-anchor="start" x="1099.52" y="-470.1" font-family="Arial" font-size="10.00" style=""># reservation_number: String</text>
<text text-anchor="start" x="1099.52" y="-458.1" font-family="Arial" font-size="10.00" style=""># physical_address: Address</text>
<text text-anchor="start" x="1099.52" y="-446.1" font-family="Arial" font-size="10.00" style=""># mailing_address: Address</text>
<text text-anchor="start" x="1099.52" y="-434.1" font-family="Arial" font-size="10.00" style=""># reservation_start_date: ZonedDateTime</text>
<text text-anchor="start" x="1099.52" y="-422.1" font-family="Arial" font-size="10.00" style=""># reservation_end_date: ZonedDateTime</text>
<text text-anchor="start" x="1099.52" y="-410.1" font-family="Arial" font-size="10.00" style=""># reservation_status: ReservationStatusEnum</text>
<text text-anchor="start" x="1099.52" y="-398.1" font-family="Arial" font-size="10.00" style=""># kitchen: KitchenTypeEnum</text>
<text text-anchor="start" x="1099.52" y="-386.1" font-family="Arial" font-size="10.00" style=""># numberOfBeds: Integer</text>
<text text-anchor="start" x="1099.52" y="-374.1" font-family="Arial" font-size="10.00" style=""># numberOfBedRooms: Integer</text>
<text text-anchor="start" x="1099.52" y="-362.1" font-family="Arial" font-size="10.00" style=""># numberOfBathRooms: Integer</text>
<text text-anchor="start" x="1099.52" y="-350.1" font-family="Arial" font-size="10.00" style=""># numberOfFloors: Integer</text>
<text text-anchor="start" x="1099.52" y="-338.1" font-family="Arial" font-size="10.00" style=""># squareFeet: Integer</text>
<text text-anchor="start" x="1099.52" y="-326.1" font-family="Arial" font-size="10.00" style=""># price: Float</text>
<text text-anchor="start" x="1099.52" y="-314.1" font-family="Arial" font-size="10.00" style=""># accountNumber: String</text>
<polyline fill="none" stroke="black" points="1091.52,-307.1 1348.48,-307.1" style=""/>
<text text-anchor="start" x="1099.52" y="-294.1" font-family="Arial" font-size="10.00" style=""># Reservation()</text>
<text text-anchor="start" x="1099.52" y="-282.1" font-family="Arial" font-size="10.00" style="">+ getters/setters</text>
<text text-anchor="start" x="1099.52" y="-270.1" font-family="Arial" font-size="10.00" style="">+ Write(Reservation): void</text>
<text text-anchor="start" x="1099.52" y="-258.1" font-family="Arial" font-size="10.00" style="">+ Change(Reservation, ReservationStatusEnum): void</text>
<text text-anchor="start" x="1099.52" y="-246.1" font-family="Arial" font-size="10.00" style="">+ update(Reservation): void</text>
<text text-anchor="start" x="1099.52" y="-234.1" font-family="Arial" font-size="10.00" style="">+ abstract ReservationType(): String</text>
</g>
<!-- Reservation&#45;&gt;Address -->
<g id="edge10" class="edge" data-name="Reservation-&gt;Address">
<path fill="none" stroke="black" d="M1091.62,-231.47C1088.45,-229.74 1085.25,-228.11 1082,-226.6 1026.82,-200.91 594.52,-218.52 534.46,-208.6 478.18,-199.3 460.58,-195.81 406.08,-169.79" style=""/>
<polygon fill="black" stroke="black" points="406.27,-169.88 399.13,-170.88 395.46,-164.67 402.6,-163.67 406.27,-169.88" style=""/>
<text text-anchor="middle" x="568.77" y="-200.5" font-family="Arial" font-size="9.00" style="">physical_address</text>
<text text-anchor="middle" x="568.77" y="-189.7" font-family="Arial" font-size="9.00" style="">mailing_address</text>
</g>
<!-- Reservation&#45;&gt;KitchenTypeEnum -->
<g id="edge11" class="edge" data-name="Reservation-&gt;KitchenTypeEnum">
<path fill="none" stroke="black" d="M1091.59,-231.53C1088.44,-229.78 1085.24,-228.13 1082,-226.6 1041.73,-207.56 725.42,-215.93 681.48,-208.6 647.91,-203 641.03,-195.22 608,-187 569.26,-177.36 554.13,-189.71 520,-169 510.67,-163.34 502.19,-155.61 494.77,-147.31" style=""/>
<polygon fill="black" stroke="black" points="494.83,-147.38 487.91,-145.34 487.14,-138.17 494.06,-140.21 494.83,-147.38" style=""/>
<text text-anchor="middle" x="695.26" y="-195.1" font-family="Arial" font-size="9.00" style="">kitchen</text>
</g>
<!-- Reservation&#45;&gt;ReservationStatusEnum -->
<g id="edge12" class="edge" data-name="Reservation-&gt;ReservationStatusEnum">
<path fill="none" stroke="black" d="M1091.54,-231.63C1088.4,-229.85 1085.22,-228.17 1082,-226.6 1028.01,-200.35 871.71,-218.28 812.46,-208.6 778.34,-203.02 691.95,-186.27 662,-169 651.55,-162.97 641.58,-155 632.58,-146.58" style=""/>
<polygon fill="black" stroke="black" points="632.83,-146.82 625.75,-145.47 624.28,-138.41 631.36,-139.76 632.83,-146.82" style=""/>
<text text-anchor="middle" x="848.77" y="-195.1" font-family="Arial" font-size="9.00" style="">reservation_status</text>
</g>
<!-- Reservation&#45;&gt;IllegalOperationException -->
<g id="edge24" class="edge" data-name="Reservation-&gt;IllegalOperationException">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1091.73,-232.43C1088.53,-230.39 1085.28,-228.44 1082,-226.6 1043.95,-205.24 1027.96,-218.61 985.49,-208.6 923.18,-193.91 903.93,-198.27 847,-169 831.13,-160.84 815.36,-149.65 801.56,-138.55" style=""/>
<polygon fill="black" stroke="black" points="794.11,-132.41 804.69,-135.3 797.97,-135.59 801.83,-138.77 801.83,-138.77 801.83,-138.77 797.97,-135.59 798.97,-142.25 794.11,-132.41 794.11,-132.41" style=""/>
<text text-anchor="middle" x="998.25" y="-195.1" font-family="Arial" font-size="9.00" style="">throws</text>
</g>
<!-- Reservation&#45;&gt;IReservation -->
<g id="edge1" class="edge" data-name="Reservation-&gt;IReservation">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1126.41,-227.22C1115.99,-210.2 1105.72,-193.41 1096.18,-177.84" style=""/>
<polygon fill="none" stroke="black" points="1099.35,-176.31 1091.14,-169.61 1093.38,-179.96 1099.35,-176.31" style=""/>
<text text-anchor="middle" x="1135.01" y="-195.1" font-family="Arial" font-size="9.00" style="">implements</text>
</g>
<!-- AccountReservationList&#45;&gt;DuplicateObjectException -->
<g id="edge23" class="edge" data-name="AccountReservationList-&gt;DuplicateObjectException">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M943.02,-327.25C924.67,-292.08 895.33,-248.46 855,-226.6 818.86,-207.01 526.42,-212.4 485.49,-208.6 356.62,-196.64 316.66,-218.3 197,-169 179.12,-161.63 161.61,-150.09 146.59,-138.4" style=""/>
<polygon fill="black" stroke="black" points="138.97,-132.3 149.59,-135.04 142.87,-135.43 146.77,-138.55 146.77,-138.55 146.77,-138.55 142.87,-135.43 143.96,-142.06 138.97,-132.3 138.97,-132.3" style=""/>
<text text-anchor="middle" x="498.25" y="-195.1" font-family="Arial" font-size="9.00" style="">throws</text>
</g>
<!-- AccountReservationList&#45;&gt;IReservation -->
<g id="edge9" class="edge" data-name="AccountReservationList-&gt;IReservation">
<path fill="none" stroke="black" d="M981.14,-327.28C993.01,-285.88 1009.73,-227.53 1023.36,-179.99" style=""/>
<polygon fill="none" stroke="black" points="1023.35,-180 1021.16,-173.13 1026.66,-168.46 1028.85,-175.33 1023.35,-180" style=""/>
<text text-anchor="middle" x="1044.77" y="-195.1" font-family="Arial" font-size="9.00" style="">contains 0..*</text>
</g>
<!-- CabinReservation -->
<g id="node12" class="node" pointer-events="visible" data-name="CabinReservation">
<polygon fill="none" stroke="black" points="1380.27,-657.7 1380.27,-757.7 1527.73,-757.7 1527.73,-657.7 1380.27,-657.7" style=""/>
<text text-anchor="middle" x="1454" y="-744.7" font-family="Arial" font-size="10.00" style="">CabinReservation</text>
<polyline fill="none" stroke="black" points="1380.27,-737.7 1527.73,-737.7" style=""/>
<text text-anchor="start" x="1388.27" y="-724.7" font-family="Arial" font-size="10.00" style="">+ CabinReservation()</text>
<text text-anchor="start" x="1388.27" y="-712.7" font-family="Arial" font-size="10.00" style="">+ CabinReservation(Address)</text>
<text text-anchor="start" x="1388.27" y="-700.7" font-family="Arial" font-size="10.00" style="">+ ReservationType(): String</text>
<text text-anchor="start" x="1388.27" y="-688.7" font-family="Arial" font-size="10.00" style="">+ checkValid(): boolean</text>
<text text-anchor="start" x="1388.27" y="-676.7" font-family="Arial" font-size="10.00" style="">+ getPricePerNight(): float</text>
<text text-anchor="start" x="1388.27" y="-664.7" font-family="Arial" font-size="10.00" style="">+ calculatePrice(): float</text>
</g>
<!-- CabinReservation&#45;&gt;Reservation -->
<g id="edge2" class="edge" data-name="CabinReservation-&gt;Reservation">
<path fill="none" stroke="black" d="M1418.71,-657.75C1396.59,-627.06 1366.68,-585.57 1336.79,-544.11" style=""/>
<polygon fill="none" stroke="black" points="1339.78,-542.28 1331.1,-536.21 1334.1,-546.37 1339.78,-542.28" style=""/>
<text text-anchor="middle" x="1379.76" y="-579.1" font-family="Arial" font-size="9.00" style="">extends</text>
</g>
<!-- HotelReservation -->
<g id="node13" class="node" pointer-events="visible" data-name="HotelReservation">
<polygon fill="none" stroke="black" points="1728.22,-651.7 1728.22,-763.7 1891.78,-763.7 1891.78,-651.7 1728.22,-651.7" style=""/>
<text text-anchor="middle" x="1810" y="-750.7" font-family="Arial" font-size="10.00" style="">HotelReservation</text>
<polyline fill="none" stroke="black" points="1728.22,-743.7 1891.78,-743.7" style=""/>
<text text-anchor="start" x="1736.22" y="-730.7" font-family="Arial" font-size="10.00" style="">+ HotelReservation()</text>
<text text-anchor="start" x="1736.22" y="-718.7" font-family="Arial" font-size="10.00" style="">+ HotelReservation(Address)</text>
<text text-anchor="start" x="1736.22" y="-706.7" font-family="Arial" font-size="10.00" style="">+ static copy(String): Reservation</text>
<text text-anchor="start" x="1736.22" y="-694.7" font-family="Arial" font-size="10.00" style="">+ ReservationType(): String</text>
<text text-anchor="start" x="1736.22" y="-682.7" font-family="Arial" font-size="10.00" style="">+ checkValid(): boolean</text>
<text text-anchor="start" x="1736.22" y="-670.7" font-family="Arial" font-size="10.00" style="">+ getPricePerNight(): float</text>
<text text-anchor="start" x="1736.22" y="-658.7" font-family="Arial" font-size="10.00" style="">+ calculatePrice(): float</text>
</g>
<!-- HotelReservation&#45;&gt;Reservation -->
<g id="edge3" class="edge" data-name="HotelReservation-&gt;Reservation">
<path fill="none" stroke="black" d="M1772.75,-651.89C1757.74,-632.75 1739.19,-612.3 1719,-597.2 1609.72,-515.46 1464.61,-457.42 1359.06,-422.39" style=""/>
<polygon fill="none" stroke="black" points="1360.35,-419.13 1349.76,-419.33 1358.17,-425.78 1360.35,-419.13" style=""/>
<text text-anchor="middle" x="1710.76" y="-579.1" font-family="Arial" font-size="9.00" style="">extends</text>
</g>
<!-- HouseReservation -->
<g id="node14" class="node" pointer-events="visible" data-name="HouseReservation">
<polygon fill="none" stroke="black" points="1546.22,-651.7 1546.22,-763.7 1709.78,-763.7 1709.78,-651.7 1546.22,-651.7" style=""/>
<text text-anchor="middle" x="1628" y="-750.7" font-family="Arial" font-size="10.00" style="">HouseReservation</text>
<polyline fill="none" stroke="black" points="1546.22,-743.7 1709.78,-743.7" style=""/>
<text text-anchor="start" x="1554.22" y="-730.7" font-family="Arial" font-size="10.00" style="">+ HouseReservation()</text>
<text text-anchor="start" x="1554.22" y="-718.7" font-family="Arial" font-size="10.00" style="">+ HouseReservation(Address)</text>
<text text-anchor="start" x="1554.22" y="-706.7" font-family="Arial" font-size="10.00" style="">+ static copy(String): Reservation</text>
<text text-anchor="start" x="1554.22" y="-694.7" font-family="Arial" font-size="10.00" style="">+ ReservationType(): String</text>
<text text-anchor="start" x="1554.22" y="-682.7" font-family="Arial" font-size="10.00" style="">+ checkValid(): boolean</text>
<text text-anchor="start" x="1554.22" y="-670.7" font-family="Arial" font-size="10.00" style="">+ getPricePerNight(): float</text>
<text text-anchor="start" x="1554.22" y="-658.7" font-family="Arial" font-size="10.00" style="">+ calculatePrice(): float</text>
</g>
<!-- HouseReservation&#45;&gt;Reservation -->
<g id="edge4" class="edge" data-name="HouseReservation-&gt;Reservation">
<path fill="none" stroke="black" d="M1587.53,-651.93C1572.66,-633.54 1555.03,-613.56 1537,-597.2 1482.52,-547.78 1415.95,-500.91 1357.91,-463.62" style=""/>
<polygon fill="none" stroke="black" points="1359.88,-460.73 1349.57,-458.3 1356.12,-466.63 1359.88,-460.73" style=""/>
<text text-anchor="middle" x="1536.76" y="-579.1" font-family="Arial" font-size="9.00" style="">extends</text>
</g>
<!-- AccomodationManager -->
<g id="node15" class="node" pointer-events="visible" data-name="AccomodationManager">
<polygon fill="none" stroke="black" points="1380.41,-1096.9 1380.41,-1300.9 1629.59,-1300.9 1629.59,-1096.9 1380.41,-1096.9" style=""/>
<text text-anchor="middle" x="1505" y="-1287.9" font-family="Arial" font-size="10.00" style="">AccomodationManager</text>
<polyline fill="none" stroke="black" points="1380.41,-1280.9 1629.59,-1280.9" style=""/>
<text text-anchor="start" x="1388.41" y="-1267.9" font-family="Arial" font-size="10.00" style="">- accounts: AccountList</text>
<polyline fill="none" stroke="black" points="1380.41,-1260.9 1629.59,-1260.9" style=""/>
<text text-anchor="start" x="1388.41" y="-1247.9" font-family="Arial" font-size="10.00" style="">+ AccomodationManager(String)</text>
<text text-anchor="start" x="1388.41" y="-1235.9" font-family="Arial" font-size="10.00" style="">+ setDataStoreRoot(String): void</text>
<text text-anchor="start" x="1388.41" y="-1223.9" font-family="Arial" font-size="10.00" style="">+ loadAll(): void</text>
<text text-anchor="start" x="1388.41" y="-1211.9" font-family="Arial" font-size="10.00" style="">+ load(Path): void</text>
<text text-anchor="start" x="1388.41" y="-1199.9" font-family="Arial" font-size="10.00" style="">+ retrieveLoadedAccounts(): List&lt;Account&gt;</text>
<text text-anchor="start" x="1388.41" y="-1187.9" font-family="Arial" font-size="10.00" style="">+ retrieveAccount(String): Account</text>
<text text-anchor="start" x="1388.41" y="-1175.9" font-family="Arial" font-size="10.00" style="">+ AddAccount(Account): void</text>
<text text-anchor="start" x="1388.41" y="-1163.9" font-family="Arial" font-size="10.00" style="">+ UpdateAccount(Account): void</text>
<text text-anchor="start" x="1388.41" y="-1151.9" font-family="Arial" font-size="10.00" style="">+ newAccount(...): Account</text>
<text text-anchor="start" x="1388.41" y="-1139.9" font-family="Arial" font-size="10.00" style="">+ addReservation(Account, Reservation): boolean</text>
<text text-anchor="start" x="1388.41" y="-1127.9" font-family="Arial" font-size="10.00" style="">+ findReservation(String): Reservation</text>
<text text-anchor="start" x="1388.41" y="-1115.9" font-family="Arial" font-size="10.00" style="">+ getReservationList(): List&lt;? extends IReservation&gt;</text>
<text text-anchor="start" x="1388.41" y="-1103.9" font-family="Arial" font-size="10.00" style="">+ showReservationList(): void</text>
</g>
<!-- AccomodationManager&#45;&gt;AccountList -->
<g id="edge13" class="edge" data-name="AccomodationManager-&gt;AccountList">
<path fill="none" stroke="black" d="M1380.61,-1136.31C1297.12,-1094.98 1187.37,-1040.64 1102.78,-998.76" style=""/>
<polygon fill="black" stroke="black" points="1102.83,-998.78 1095.67,-999.7 1092.07,-993.45 1099.22,-992.53 1102.83,-998.78" style=""/>
<text text-anchor="middle" x="1272.01" y="-1070.3" font-family="Arial" font-size="9.00" style="">accounts</text>
</g>
<!-- DataRepository -->
<g id="node16" class="node" pointer-events="visible" data-name="DataRepository">
<polygon fill="none" stroke="black" points="1407.1,-857.5 1407.1,-1009.5 1602.9,-1009.5 1602.9,-857.5 1407.1,-857.5" style=""/>
<text text-anchor="middle" x="1505" y="-996.5" font-family="Arial" font-size="10.00" style="">DataRepository</text>
<polyline fill="none" stroke="black" points="1407.1,-989.5 1602.9,-989.5" style=""/>
<text text-anchor="middle" x="1505" y="-976.5" font-family="Arial" font-size="10.00" style="">&lt;&lt;singleton&gt;&gt;</text>
<polyline fill="none" stroke="black" points="1407.1,-969.5 1602.9,-969.5" style=""/>
<text text-anchor="start" x="1415.1" y="-956.5" font-family="Arial" font-size="10.00" style="">- directoryPath: String</text>
<text text-anchor="start" x="1415.1" y="-944.5" font-family="Arial" font-size="10.00" style="">- static instance: DataRepository</text>
<polyline fill="none" stroke="black" points="1407.1,-937.5 1602.9,-937.5" style=""/>
<text text-anchor="start" x="1415.1" y="-924.5" font-family="Arial" font-size="10.00" style="">+ static getInstance(): DataRepository</text>
<text text-anchor="start" x="1415.1" y="-912.5" font-family="Arial" font-size="10.00" style="">+ static setDataStoreRoot(String): void</text>
<text text-anchor="start" x="1415.1" y="-900.5" font-family="Arial" font-size="10.00" style="">+ static getPath(): String</text>
<text text-anchor="start" x="1415.1" y="-888.5" font-family="Arial" font-size="10.00" style="">+ static Reservation(String): Reservation</text>
<text text-anchor="start" x="1415.1" y="-876.5" font-family="Arial" font-size="10.00" style="">+ static WalkFileSystemTree(...): void</text>
<text text-anchor="start" x="1415.1" y="-864.5" font-family="Arial" font-size="10.00" style="">+ static LoadAccount(Path): Account</text>
</g>
<!-- AccomodationManager&#45;&gt;DataRepository -->
<g id="edge14" class="edge" data-name="AccomodationManager-&gt;DataRepository">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1505,-1097.19C1505,-1071.42 1505,-1043.97 1505,-1019.1" style=""/>
<polygon fill="black" stroke="black" points="1505,-1009.35 1509.5,-1019.35 1505,-1014.35 1505,-1019.35 1505,-1019.35 1505,-1019.35 1505,-1014.35 1500.5,-1019.35 1505,-1009.35 1505,-1009.35" style=""/>
<text text-anchor="middle" x="1514.51" y="-1070.3" font-family="Arial" font-size="9.00" style="">uses</text>
</g>
<!-- DataRepository&#45;&gt;Account -->
<g id="edge15" class="edge" data-name="DataRepository-&gt;Account">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1407.39,-891.97C1319.22,-855.36 1188.93,-801.26 1092.75,-761.33" style=""/>
<polygon fill="black" stroke="black" points="1083.55,-757.51 1094.51,-757.19 1088.16,-759.42 1092.78,-761.34 1092.78,-761.34 1092.78,-761.34 1088.16,-759.42 1091.06,-765.5 1083.55,-757.51 1083.55,-757.51" style=""/>
<text text-anchor="middle" x="1281.76" y="-830.9" font-family="Arial" font-size="9.00" style="">creates</text>
</g>
<!-- DataRepository&#45;&gt;CabinReservation -->
<g id="edge16" class="edge" data-name="DataRepository-&gt;CabinReservation">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1474.78,-857.74C1472.8,-851.46 1471,-845.16 1469.49,-839 1463.81,-815.87 1460.19,-789.91 1457.89,-767.28" style=""/>
<polygon fill="black" stroke="black" points="1456.95,-757.47 1462.38,-767 1457.43,-762.45 1457.9,-767.43 1457.9,-767.43 1457.9,-767.43 1457.43,-762.45 1453.42,-767.85 1456.95,-757.47 1456.95,-757.47" style=""/>
<text text-anchor="middle" x="1483.76" y="-830.9" font-family="Arial" font-size="9.00" style="">creates</text>
</g>
<!-- DataRepository&#45;&gt;HotelReservation -->
<g id="edge17" class="edge" data-name="DataRepository-&gt;HotelReservation">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1602.7,-885.25C1640.76,-864.7 1683.63,-838.77 1719,-810.2 1733.42,-798.55 1747.54,-784.52 1760.19,-770.67" style=""/>
<polygon fill="black" stroke="black" points="1766.66,-763.45 1763.34,-773.9 1763.32,-767.17 1759.99,-770.89 1759.99,-770.89 1759.99,-770.89 1763.32,-767.17 1756.64,-767.89 1766.66,-763.45 1766.66,-763.45" style=""/>
<text text-anchor="middle" x="1706.76" y="-830.9" font-family="Arial" font-size="9.00" style="">creates</text>
</g>
<!-- DataRepository&#45;&gt;HouseReservation -->
<g id="edge18" class="edge" data-name="DataRepository-&gt;HouseReservation">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1534.17,-857.61C1538.67,-847.58 1543.49,-837.54 1548.49,-828.2 1558.63,-809.24 1570.96,-789.48 1582.87,-771.62" style=""/>
<polygon fill="black" stroke="black" points="1588.29,-763.56 1586.44,-774.37 1585.5,-767.71 1582.71,-771.86 1582.71,-771.86 1582.71,-771.86 1585.5,-767.71 1578.98,-769.34 1588.29,-763.56 1588.29,-763.56" style=""/>
<text text-anchor="middle" x="1562.76" y="-830.9" font-family="Arial" font-size="9.00" style="">creates</text>
</g>
<!-- TestReservations -->
<g id="node17" class="node" pointer-events="visible" data-name="TestReservations">
<polygon fill="none" stroke="black" points="1601.55,-1371.5 1601.55,-1423.5 1768.45,-1423.5 1768.45,-1371.5 1601.55,-1371.5" style=""/>
<text text-anchor="middle" x="1685" y="-1410.5" font-family="Arial" font-size="10.00" style="">TestReservations</text>
<polyline fill="none" stroke="black" points="1601.55,-1403.5 1768.45,-1403.5" style=""/>
<text text-anchor="start" x="1609.55" y="-1390.5" font-family="Arial" font-size="10.00" style="">+ static main(String[]): void</text>
<text text-anchor="start" x="1609.55" y="-1378.5" font-family="Arial" font-size="10.00" style="">+ static class getRepositoryConfig</text>
</g>
<!-- TestReservations&#45;&gt;CabinReservation -->
<g id="edge20" class="edge" data-name="TestReservations-&gt;CabinReservation">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1683.41,-1371.59C1676.43,-1262.66 1648.65,-833.31 1644,-828.2 1611.55,-792.53 1578.7,-834.41 1537,-810.2 1518.14,-799.25 1501.76,-782.27 1488.66,-765.32" style=""/>
<polygon fill="black" stroke="black" points="1482.88,-757.55 1492.46,-762.88 1485.86,-761.56 1488.85,-765.57 1488.85,-765.57 1488.85,-765.57 1485.86,-761.56 1485.24,-768.26 1482.88,-757.55 1482.88,-757.55" style=""/>
<text text-anchor="middle" x="1677.76" y="-1070.3" font-family="Arial" font-size="9.00" style="">creates</text>
</g>
<!-- TestReservations&#45;&gt;HotelReservation -->
<g id="edge21" class="edge" data-name="TestReservations-&gt;HotelReservation">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1696.37,-1371.52C1701.01,-1360.33 1705.98,-1346.83 1709,-1334.2 1757.31,-1132 1789.33,-887.44 1802.79,-773.27" style=""/>
<polygon fill="black" stroke="black" points="1803.92,-763.62 1807.23,-774.08 1803.34,-768.59 1802.76,-773.56 1802.76,-773.56 1802.76,-773.56 1803.34,-768.59 1798.29,-773.03 1803.92,-763.62 1803.92,-763.62" style=""/>
<text text-anchor="middle" x="1774.76" y="-1070.3" font-family="Arial" font-size="9.00" style="">creates</text>
</g>
<!-- TestReservations&#45;&gt;HouseReservation -->
<g id="edge22" class="edge" data-name="TestReservations-&gt;HouseReservation">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1687.71,-1371.74C1695.75,-1291.87 1716.3,-1034.19 1672,-828.2 1668.04,-809.79 1661.85,-790.41 1655.34,-772.74" style=""/>
<polygon fill="black" stroke="black" points="1651.93,-763.66 1659.66,-771.44 1653.69,-768.34 1655.45,-773.02 1655.45,-773.02 1655.45,-773.02 1653.69,-768.34 1651.24,-774.61 1651.93,-763.66 1651.93,-763.66" style=""/>
<text text-anchor="middle" x="1712.76" y="-1070.3" font-family="Arial" font-size="9.00" style="">creates</text>
</g>
<!-- TestReservations&#45;&gt;AccomodationManager -->
<g id="edge19" class="edge" data-name="TestReservations-&gt;AccomodationManager">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1647.22,-1371.58C1639.54,-1365.85 1631.75,-1359.52 1624.99,-1353 1610.78,-1339.31 1596.8,-1323.89 1583.69,-1308.25" style=""/>
<polygon fill="black" stroke="black" points="1577.33,-1300.56 1587.17,-1305.39 1580.52,-1304.41 1583.7,-1308.26 1583.7,-1308.26 1583.7,-1308.26 1580.52,-1304.41 1580.24,-1311.13 1577.33,-1300.56 1577.33,-1300.56" style=""/>
<text text-anchor="middle" x="1633.51" y="-1344.9" font-family="Arial" font-size="9.00" style="">uses</text>
</g>
</g>
</svg>