This commit is contained in:
2025-09-30 23:11:46 -04:00
parent 425a7206d6
commit 1b9dc5e6c1
3 changed files with 318 additions and 324 deletions

View File

@@ -83,7 +83,7 @@ digraph ClassDiagram {
// Composition / Aggregation
AccomodationManager -> AccountList [arrowhead=diamond, label="has a"];
AccountList -> Account [arrowhead=diamond, label="0..*"];
AccountList -> Account [arrowhead=odiamond, label="0..*"];
Account -> AccountReservationList [arrowhead=diamond, label="has a"];
AccountReservationList -> IReservation [arrowhead=diamond, label="0..*"];
Account -> Address [arrowhead=odiamond, label="mailing"];

View File

@@ -1,323 +1,317 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 14.0.0 (20250921.2048)
-->
<!-- Title: ClassDiagram Pages: 1 -->
<svg width="2238pt" height="1056pt"
viewBox="0.00 0.00 2238.00 1056.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1052)">
<title>ClassDiagram</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-1052 2233.62,-1052 2233.62,4 -4,4"/>
<!-- IReservation -->
<g id="node1" class="node">
<title>IReservation</title>
<polygon fill="palegreen" stroke="black" points="90.75,-0.5 90.75,-142.5 315.25,-142.5 315.25,-0.5 90.75,-0.5"/>
<text xml:space="preserve" text-anchor="middle" x="203" y="-125.2" font-family="Helvetica,Arial,sans-serif" font-size="14.00">interface</text>
<text xml:space="preserve" text-anchor="middle" x="203" y="-109.45" font-family="Helvetica,Arial,sans-serif" font-size="14.00">IReservation</text>
<polyline fill="none" stroke="black" points="90.75,-103 315.25,-103"/>
<text xml:space="preserve" text-anchor="start" x="98.75" y="-85.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ ReservationType(): String</text>
<text xml:space="preserve" text-anchor="start" x="98.75" y="-69.95" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ checkValid(): boolean</text>
<text xml:space="preserve" text-anchor="start" x="98.75" y="-54.2" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ calculatePrice(): float</text>
<text xml:space="preserve" text-anchor="start" x="98.75" y="-38.45" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ getReservation_number(): String</text>
<text xml:space="preserve" text-anchor="start" x="98.75" y="-22.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ getPhysical_address(): Address</text>
<text xml:space="preserve" text-anchor="start" x="98.75" y="-6.95" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ getAccountNumber(): String</text>
</g>
<!-- Reservation -->
<g id="node2" class="node">
<title>Reservation</title>
<polygon fill="lightyellow" stroke="black" points="517,-575 517,-611 605,-611 605,-575 517,-575"/>
<text xml:space="preserve" text-anchor="middle" x="561" y="-587.58" font-family="Helvetica,Arial,sans-serif" font-size="14.00">Reservation</text>
</g>
<!-- Reservation&#45;&gt;IReservation -->
<g id="edge1" class="edge">
<title>Reservation&#45;&gt;IReservation</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M516.64,-587C428.97,-587 241.94,-587 241.94,-587 241.94,-587 241.94,-154.42 241.94,-154.42"/>
<polygon fill="none" stroke="black" points="245.44,-154.42 241.94,-144.42 238.44,-154.42 245.44,-154.42"/>
<text xml:space="preserve" text-anchor="middle" x="181.25" y="-354.45" font-family="Helvetica,Arial,sans-serif" font-size="14.00">implements</text>
</g>
<!-- DataRepository -->
<g id="node4" class="node">
<title>DataRepository</title>
<polygon fill="orchid" stroke="black" points="947.5,-258.88 947.5,-294.88 1056.5,-294.88 1056.5,-258.88 947.5,-258.88"/>
<text xml:space="preserve" text-anchor="middle" x="1002" y="-271.45" font-family="Helvetica,Arial,sans-serif" font-size="14.00">DataRepository</text>
</g>
<!-- Reservation&#45;&gt;DataRepository -->
<g id="edge24" class="edge">
<title>Reservation&#45;&gt;DataRepository</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M605.37,-587C707.62,-587 951.12,-587 951.12,-587 951.12,-587 951.12,-306.56 951.12,-306.56"/>
<polygon fill="black" stroke="black" points="951.13,-296.56 955.63,-306.56 951.13,-300.35 951.13,-306.56 951.13,-306.56 951.13,-306.56 951.13,-300.35 946.63,-306.56 951.13,-296.56"/>
<text xml:space="preserve" text-anchor="middle" x="847.12" y="-425.57" font-family="Helvetica,Arial,sans-serif" font-size="14.00">uses for Write()</text>
</g>
<!-- Address -->
<g id="node13" class="node">
<title>Address</title>
<polygon fill="lightblue" stroke="black" points="436.38,-253.12 436.38,-300.62 685.62,-300.62 685.62,-253.12 436.38,-253.12"/>
<text xml:space="preserve" text-anchor="middle" x="561" y="-283.32" font-family="Helvetica,Arial,sans-serif" font-size="14.00">Address</text>
<polyline fill="none" stroke="black" points="436.38,-276.88 685.62,-276.88"/>
<text xml:space="preserve" text-anchor="start" x="444.38" y="-259.57" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ Address(String, String, String, String)</text>
</g>
<!-- Reservation&#45;&gt;Address -->
<g id="edge11" class="edge">
<title>Reservation&#45;&gt;Address</title>
<path fill="none" stroke="black" d="M575.67,-574.64C575.67,-574.64 575.67,-313.79 575.67,-313.79"/>
<polygon fill="none" stroke="black" points="575.67,-313.64 571.67,-307.64 575.67,-301.64 579.67,-307.64 575.67,-313.64"/>
<text xml:space="preserve" text-anchor="middle" x="609" y="-425.57" font-family="Helvetica,Arial,sans-serif" font-size="14.00">physical/mailing</text>
</g>
<!-- ReservationStatusEnum -->
<g id="node15" class="node">
<title>ReservationStatusEnum</title>
<polygon fill="lightgray" stroke="black" points="254.88,-411.25 254.88,-450.75 417.12,-450.75 417.12,-411.25 254.88,-411.25"/>
<text xml:space="preserve" text-anchor="middle" x="336" y="-433.45" font-family="Helvetica,Arial,sans-serif" font-size="14.00">enum</text>
<text xml:space="preserve" text-anchor="middle" x="336" y="-417.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00">ReservationStatusEnum</text>
</g>
<!-- Reservation&#45;&gt;ReservationStatusEnum -->
<g id="edge25" class="edge">
<title>Reservation&#45;&gt;ReservationStatusEnum</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M546.33,-574.81C546.33,-530.4 546.33,-420 546.33,-420 546.33,-420 428.84,-420 428.84,-420"/>
<polygon fill="black" stroke="black" points="418.84,-420 428.84,-415.5 422.62,-420 428.84,-420 428.84,-420 428.84,-420 422.62,-420 428.84,-424.5 418.84,-420"/>
<text xml:space="preserve" text-anchor="middle" x="350.25" y="-496.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00">uses</text>
</g>
<!-- AccomodationManager -->
<g id="node3" class="node">
<title>AccomodationManager</title>
<polygon fill="lightyellow" stroke="black" points="1026.5,-735.25 1026.5,-908.75 1375.5,-908.75 1375.5,-735.25 1026.5,-735.25"/>
<text xml:space="preserve" text-anchor="middle" x="1201" y="-891.45" font-family="Helvetica,Arial,sans-serif" font-size="14.00">AccomodationManager</text>
<polyline fill="none" stroke="black" points="1026.5,-885 1375.5,-885"/>
<text xml:space="preserve" text-anchor="start" x="1034.5" y="-867.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ AccomodationManager(String)</text>
<text xml:space="preserve" text-anchor="start" x="1034.5" y="-851.95" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ loadAll(): void</text>
<text xml:space="preserve" text-anchor="start" x="1034.5" y="-836.2" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ retrieveAccount(String): Account</text>
<text xml:space="preserve" text-anchor="start" x="1034.5" y="-820.45" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ retrieveLoadedAccounts(): AccountList</text>
<text xml:space="preserve" text-anchor="start" x="1034.5" y="-804.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ newAccount(String, Address, EmailAddress): Account</text>
<text xml:space="preserve" text-anchor="start" x="1034.5" y="-788.95" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ AddAccount(Account): void</text>
<text xml:space="preserve" text-anchor="start" x="1034.5" y="-773.2" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ UpdateAccount(Account): void</text>
<text xml:space="preserve" text-anchor="start" x="1034.5" y="-757.45" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ addReservation(Account, Reservation): boolean</text>
<text xml:space="preserve" text-anchor="start" x="1034.5" y="-741.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ showReservationList(): void</text>
</g>
<!-- AccomodationManager&#45;&gt;DataRepository -->
<g id="edge21" class="edge">
<title>AccomodationManager&#45;&gt;DataRepository</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1036.5,-735.02C1036.5,-735.02 1036.5,-306.25 1036.5,-306.25"/>
<polygon fill="black" stroke="black" points="1036.5,-296.25 1041,-306.25 1036.5,-300.03 1036.5,-306.25 1036.5,-306.25 1036.5,-306.25 1036.5,-300.03 1032,-306.25 1036.5,-296.25"/>
<text xml:space="preserve" text-anchor="middle" x="1016.25" y="-496.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00">uses</text>
</g>
<!-- Account -->
<g id="node5" class="node">
<title>Account</title>
<polygon fill="lightyellow" stroke="black" points="1360.62,-413 1360.62,-449 1425.38,-449 1425.38,-413 1360.62,-413"/>
<text xml:space="preserve" text-anchor="middle" x="1393" y="-425.57" font-family="Helvetica,Arial,sans-serif" font-size="14.00">Account</text>
</g>
<!-- AccomodationManager&#45;&gt;Account -->
<g id="edge22" class="edge">
<title>AccomodationManager&#45;&gt;Account</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1268.38,-734.82C1268.38,-622.63 1268.38,-442 1268.38,-442 1268.38,-442 1349.04,-442 1349.04,-442"/>
<polygon fill="black" stroke="black" points="1359.04,-442 1349.04,-446.5 1355.26,-442 1349.04,-442 1349.04,-442 1349.04,-442 1355.26,-442 1349.04,-437.5 1359.04,-442"/>
<text xml:space="preserve" text-anchor="middle" x="1211.12" y="-587.58" font-family="Helvetica,Arial,sans-serif" font-size="14.00">manages</text>
</g>
<!-- AccountList -->
<g id="node6" class="node">
<title>AccountList</title>
<polygon fill="lightyellow" stroke="black" points="1311.12,-553.5 1311.12,-632.5 1474.88,-632.5 1474.88,-553.5 1311.12,-553.5"/>
<text xml:space="preserve" text-anchor="middle" x="1393" y="-615.2" font-family="Helvetica,Arial,sans-serif" font-size="14.00">AccountList</text>
<polyline fill="none" stroke="black" points="1311.12,-608.75 1474.88,-608.75"/>
<text xml:space="preserve" text-anchor="start" x="1319.12" y="-591.45" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ add(Account): boolean</text>
<text xml:space="preserve" text-anchor="start" x="1319.12" y="-575.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ find(String): Account</text>
<text xml:space="preserve" text-anchor="start" x="1319.12" y="-559.95" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ save(Account): void</text>
</g>
<!-- AccomodationManager&#45;&gt;AccountList -->
<g id="edge5" class="edge">
<title>AccomodationManager&#45;&gt;AccountList</title>
<path fill="none" stroke="black" d="M1343.31,-734.77C1343.31,-734.77 1343.31,-645.8 1343.31,-645.8"/>
<polygon fill="black" stroke="black" points="1343.31,-645.65 1339.31,-639.65 1343.31,-633.65 1347.31,-639.65 1343.31,-645.65"/>
<text xml:space="preserve" text-anchor="middle" x="1380.5" y="-678.45" font-family="Helvetica,Arial,sans-serif" font-size="14.00">has a</text>
</g>
<!-- Account&#45;&gt;DataRepository -->
<g id="edge23" class="edge">
<title>Account&#45;&gt;DataRepository</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1360.4,-427C1274.15,-427 1046.5,-427 1046.5,-427 1046.5,-427 1046.5,-306.5 1046.5,-306.5"/>
<polygon fill="black" stroke="black" points="1046.5,-296.5 1051,-306.5 1046.5,-300.28 1046.5,-306.5 1046.5,-306.5 1046.5,-306.5 1046.5,-300.28 1042,-306.5 1046.5,-296.5"/>
<text xml:space="preserve" text-anchor="middle" x="1283.12" y="-354.45" font-family="Helvetica,Arial,sans-serif" font-size="14.00">uses for Write()</text>
</g>
<!-- AccountReservationList -->
<g id="node7" class="node">
<title>AccountReservationList</title>
<polygon fill="lightyellow" stroke="black" points="1225.62,-245.25 1225.62,-308.5 1416.38,-308.5 1416.38,-245.25 1225.62,-245.25"/>
<text xml:space="preserve" text-anchor="middle" x="1321" y="-291.2" font-family="Helvetica,Arial,sans-serif" font-size="14.00">AccountReservationList</text>
<polyline fill="none" stroke="black" points="1225.62,-284.75 1416.38,-284.75"/>
<text xml:space="preserve" text-anchor="start" x="1233.62" y="-267.45" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ add(IReservation): boolean</text>
<text xml:space="preserve" text-anchor="start" x="1233.62" y="-251.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ find(String): Reservation</text>
</g>
<!-- Account&#45;&gt;AccountReservationList -->
<g id="edge7" class="edge">
<title>Account&#45;&gt;AccountReservationList</title>
<path fill="none" stroke="black" d="M1388.5,-412.71C1388.5,-412.71 1388.5,-321.85 1388.5,-321.85"/>
<polygon fill="black" stroke="black" points="1388.5,-321.7 1384.5,-315.7 1388.5,-309.7 1392.5,-315.7 1388.5,-321.7"/>
<text xml:space="preserve" text-anchor="middle" x="1422.5" y="-354.45" font-family="Helvetica,Arial,sans-serif" font-size="14.00">has a</text>
</g>
<!-- Account&#45;&gt;Address -->
<g id="edge9" class="edge">
<title>Account&#45;&gt;Address</title>
<path fill="none" stroke="black" d="M1360.38,-435C1216.4,-435 644.94,-435 644.94,-435 644.94,-435 644.94,-313.94 644.94,-313.94"/>
<polygon fill="none" stroke="black" points="644.94,-313.79 640.94,-307.79 644.94,-301.79 648.94,-307.79 644.94,-313.79"/>
<text xml:space="preserve" text-anchor="middle" x="1137.75" y="-354.45" font-family="Helvetica,Arial,sans-serif" font-size="14.00">mailing</text>
</g>
<!-- EmailAddress -->
<g id="node14" class="node">
<title>EmailAddress</title>
<polygon fill="lightblue" stroke="black" points="1639.88,-253.12 1639.88,-300.62 1796.12,-300.62 1796.12,-253.12 1639.88,-253.12"/>
<text xml:space="preserve" text-anchor="middle" x="1718" y="-283.32" font-family="Helvetica,Arial,sans-serif" font-size="14.00">EmailAddress</text>
<polyline fill="none" stroke="black" points="1639.88,-276.88 1796.12,-276.88"/>
<text xml:space="preserve" text-anchor="start" x="1647.88" y="-259.57" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ EmailAddress(String)</text>
</g>
<!-- Account&#45;&gt;EmailAddress -->
<g id="edge10" class="edge">
<title>Account&#45;&gt;EmailAddress</title>
<path fill="none" stroke="black" d="M1420.88,-412.73C1420.88,-370.36 1420.88,-269 1420.88,-269 1420.88,-269 1626.49,-269 1626.49,-269"/>
<polygon fill="none" stroke="black" points="1626.64,-269 1632.64,-265 1638.64,-269 1632.64,-273 1626.64,-269"/>
</g>
<!-- AccountList&#45;&gt;Account -->
<g id="edge6" class="edge">
<title>AccountList&#45;&gt;Account</title>
<path fill="none" stroke="black" d="M1393,-553.37C1393,-553.37 1393,-462.35 1393,-462.35"/>
<polygon fill="black" stroke="black" points="1393,-462.2 1389,-456.2 1393,-450.2 1397,-456.2 1393,-462.2"/>
<text xml:space="preserve" text-anchor="middle" x="1403.12" y="-496.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00">0..*</text>
</g>
<!-- AccountReservationList&#45;&gt;IReservation -->
<g id="edge8" class="edge">
<title>AccountReservationList&#45;&gt;IReservation</title>
<path fill="none" stroke="black" d="M1225.4,-249C968.94,-249 285.06,-249 285.06,-249 285.06,-249 285.06,-155.98 285.06,-155.98"/>
<polygon fill="black" stroke="black" points="285.06,-155.83 281.06,-149.83 285.06,-143.83 289.06,-149.83 285.06,-155.83"/>
<text xml:space="preserve" text-anchor="middle" x="800.12" y="-188.45" font-family="Helvetica,Arial,sans-serif" font-size="14.00">0..*</text>
</g>
<!-- HotelReservation -->
<g id="node8" class="node">
<title>HotelReservation</title>
<polygon fill="lightyellow" stroke="black" points="229,-790.38 229,-853.62 419,-853.62 419,-790.38 229,-790.38"/>
<text xml:space="preserve" text-anchor="middle" x="324" y="-836.33" font-family="Helvetica,Arial,sans-serif" font-size="14.00">HotelReservation</text>
<polyline fill="none" stroke="black" points="229,-829.88 419,-829.88"/>
<text xml:space="preserve" text-anchor="start" x="237" y="-812.58" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ HotelReservation(Address)</text>
<text xml:space="preserve" text-anchor="start" x="237" y="-796.83" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ calculatePrice(): float</text>
</g>
<!-- HotelReservation&#45;&gt;Reservation -->
<g id="edge2" class="edge">
<title>HotelReservation&#45;&gt;Reservation</title>
<path fill="none" stroke="black" d="M336,-790.05C336,-728.39 336,-599 336,-599 336,-599 505.03,-599 505.03,-599"/>
<polygon fill="none" stroke="black" points="505.03,-602.5 515.03,-599 505.03,-595.5 505.03,-602.5"/>
<text xml:space="preserve" text-anchor="middle" x="404.62" y="-678.45" font-family="Helvetica,Arial,sans-serif" font-size="14.00">extends</text>
</g>
<!-- CabinReservation -->
<g id="node9" class="node">
<title>CabinReservation</title>
<polygon fill="lightyellow" stroke="black" points="491.12,-790.38 491.12,-853.62 684.88,-853.62 684.88,-790.38 491.12,-790.38"/>
<text xml:space="preserve" text-anchor="middle" x="588" y="-836.33" font-family="Helvetica,Arial,sans-serif" font-size="14.00">CabinReservation</text>
<polyline fill="none" stroke="black" points="491.12,-829.88 684.88,-829.88"/>
<text xml:space="preserve" text-anchor="start" x="499.12" y="-812.58" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ CabinReservation(Address)</text>
<text xml:space="preserve" text-anchor="start" x="499.12" y="-796.83" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ calculatePrice(): float</text>
</g>
<!-- CabinReservation&#45;&gt;Reservation -->
<g id="edge3" class="edge">
<title>CabinReservation&#45;&gt;Reservation</title>
<path fill="none" stroke="black" d="M561,-790.16C561,-790.16 561,-622.79 561,-622.79"/>
<polygon fill="none" stroke="black" points="564.5,-622.79 561,-612.79 557.5,-622.79 564.5,-622.79"/>
<text xml:space="preserve" text-anchor="middle" x="598.62" y="-678.45" font-family="Helvetica,Arial,sans-serif" font-size="14.00">extends</text>
</g>
<!-- HouseReservation -->
<g id="node10" class="node">
<title>HouseReservation</title>
<polygon fill="lightyellow" stroke="black" points="757.25,-790.38 757.25,-853.62 954.75,-853.62 954.75,-790.38 757.25,-790.38"/>
<text xml:space="preserve" text-anchor="middle" x="856" y="-836.33" font-family="Helvetica,Arial,sans-serif" font-size="14.00">HouseReservation</text>
<polyline fill="none" stroke="black" points="757.25,-829.88 954.75,-829.88"/>
<text xml:space="preserve" text-anchor="start" x="765.25" y="-812.58" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ HouseReservation(Address)</text>
<text xml:space="preserve" text-anchor="start" x="765.25" y="-796.83" font-family="Helvetica,Arial,sans-serif" font-size="14.00">+ calculatePrice(): float</text>
</g>
<!-- HouseReservation&#45;&gt;Reservation -->
<g id="edge4" class="edge">
<title>HouseReservation&#45;&gt;Reservation</title>
<path fill="none" stroke="black" d="M852.38,-790.05C852.38,-728.39 852.38,-599 852.38,-599 852.38,-599 616.77,-599 616.77,-599"/>
<polygon fill="none" stroke="black" points="616.77,-595.5 606.77,-599 616.77,-602.5 616.77,-595.5"/>
<text xml:space="preserve" text-anchor="middle" x="807.62" y="-678.45" font-family="Helvetica,Arial,sans-serif" font-size="14.00">extends</text>
</g>
<!-- TestReservations -->
<g id="node11" class="node">
<title>TestReservations</title>
<polygon fill="lightyellow" stroke="black" points="1141.25,-1011.5 1141.25,-1047.5 1260.75,-1047.5 1260.75,-1011.5 1141.25,-1011.5"/>
<text xml:space="preserve" text-anchor="middle" x="1201" y="-1024.08" font-family="Helvetica,Arial,sans-serif" font-size="14.00">TestReservations</text>
</g>
<!-- TestReservations&#45;&gt;AccomodationManager -->
<g id="edge12" class="edge">
<title>TestReservations&#45;&gt;AccomodationManager</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1201,-1011.09C1201,-1011.09 1201,-920.37 1201,-920.37"/>
<polygon fill="black" stroke="black" points="1201,-910.37 1205.5,-920.37 1201,-914.15 1201,-920.37 1201,-920.37 1201,-920.37 1201,-914.15 1196.5,-920.37 1201,-910.37"/>
<text xml:space="preserve" text-anchor="middle" x="1215.25" y="-954.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00">uses</text>
</g>
<!-- TestReservations&#45;&gt;Account -->
<g id="edge17" class="edge">
<title>TestReservations&#45;&gt;Account</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1261.11,-1018C1352.19,-1018 1514.67,-1018 1514.67,-1018 1514.67,-1018 1514.67,-431 1514.67,-431 1514.67,-431 1436.82,-431 1436.82,-431"/>
<polygon fill="black" stroke="black" points="1426.82,-431 1436.82,-426.5 1430.6,-431 1436.82,-431 1436.82,-431 1436.82,-431 1430.6,-431 1436.82,-435.5 1426.82,-431"/>
<text xml:space="preserve" text-anchor="middle" x="1527.25" y="-678.45" font-family="Helvetica,Arial,sans-serif" font-size="14.00">uses</text>
</g>
<!-- TestReservations&#45;&gt;HotelReservation -->
<g id="edge14" class="edge">
<title>TestReservations&#45;&gt;HotelReservation</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1141.07,-1041C943.3,-1041 324,-1041 324,-1041 324,-1041 324,-865.06 324,-865.06"/>
<polygon fill="black" stroke="black" points="324,-855.06 328.5,-865.06 324,-858.84 324,-865.06 324,-865.06 324,-865.06 324,-858.84 319.5,-865.06 324,-855.06"/>
<text xml:space="preserve" text-anchor="middle" x="491.12" y="-954.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00">creates</text>
</g>
<!-- TestReservations&#45;&gt;CabinReservation -->
<g id="edge15" class="edge">
<title>TestReservations&#45;&gt;CabinReservation</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1140.83,-1026C986.38,-1026 588,-1026 588,-1026 588,-1026 588,-865.09 588,-865.09"/>
<polygon fill="black" stroke="black" points="588,-855.09 592.5,-865.09 588,-858.88 588,-865.09 588,-865.09 588,-865.09 588,-858.88 583.5,-865.09 588,-855.09"/>
<text xml:space="preserve" text-anchor="middle" x="683.12" y="-954.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00">creates</text>
</g>
<!-- TestReservations&#45;&gt;HouseReservation -->
<g id="edge16" class="edge">
<title>TestReservations&#45;&gt;HouseReservation</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1140.91,-1018C1042.06,-1018 856,-1018 856,-1018 856,-1018 856,-865.15 856,-865.15"/>
<polygon fill="black" stroke="black" points="856,-855.15 860.5,-865.15 856,-858.93 856,-865.15 856,-865.15 856,-865.15 856,-858.93 851.5,-865.15 856,-855.15"/>
<text xml:space="preserve" text-anchor="middle" x="990.12" y="-954.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00">creates</text>
</g>
<!-- TestReservations.getRepositoryConfig -->
<g id="node12" class="node">
<title>TestReservations.getRepositoryConfig</title>
<polygon fill="lightyellow" stroke="black" points="1594.25,-804 1594.25,-840 1839.75,-840 1839.75,-804 1594.25,-804"/>
<text xml:space="preserve" text-anchor="middle" x="1717" y="-816.58" font-family="Helvetica,Arial,sans-serif" font-size="14.00">TestReservations.getRepositoryConfig</text>
</g>
<!-- TestReservations&#45;&gt;TestReservations.getRepositoryConfig -->
<g id="edge13" class="edge">
<title>TestReservations&#45;&gt;TestReservations.getRepositoryConfig</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1261.2,-1033C1397.32,-1033 1717,-1033 1717,-1033 1717,-1033 1717,-851.57 1717,-851.57"/>
<polygon fill="black" stroke="black" points="1717,-841.57 1721.5,-851.57 1717,-845.36 1717,-851.57 1717,-851.57 1717,-851.57 1717,-845.36 1712.5,-851.57 1717,-841.57"/>
<text xml:space="preserve" text-anchor="middle" x="1731.25" y="-954.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00">uses</text>
</g>
<!-- TestReservations&#45;&gt;Address -->
<g id="edge18" class="edge">
<title>TestReservations&#45;&gt;Address</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1140.98,-1033C965.18,-1033 463.75,-1033 463.75,-1033 463.75,-1033 463.75,-311.97 463.75,-311.97"/>
<polygon fill="black" stroke="black" points="463.75,-301.97 468.25,-311.97 463.75,-305.75 463.75,-311.97 463.75,-311.97 463.75,-311.97 463.75,-305.75 459.25,-311.97 463.75,-301.97"/>
<text xml:space="preserve" text-anchor="middle" x="22.12" y="-587.58" font-family="Helvetica,Arial,sans-serif" font-size="14.00">creates</text>
</g>
<!-- TestReservations&#45;&gt;EmailAddress -->
<g id="edge19" class="edge">
<title>TestReservations&#45;&gt;EmailAddress</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1260.96,-1026C1361.8,-1026 1554.46,-1026 1554.46,-1026 1554.46,-1026 1554.46,-285 1554.46,-285 1554.46,-285 1628.36,-285 1628.36,-285"/>
<polygon fill="black" stroke="black" points="1638.36,-285 1628.36,-289.5 1634.58,-285 1628.36,-285 1628.36,-285 1628.36,-285 1634.58,-285 1628.36,-280.5 1638.36,-285"/>
<text xml:space="preserve" text-anchor="middle" x="1971.12" y="-587.58" font-family="Helvetica,Arial,sans-serif" font-size="14.00">creates</text>
</g>
<!-- DuplicateObjectException -->
<g id="node16" class="node">
<title>DuplicateObjectException</title>
<polygon fill="lightpink" stroke="black" points="2058.38,-802.25 2058.38,-841.75 2229.62,-841.75 2229.62,-802.25 2058.38,-802.25"/>
<text xml:space="preserve" text-anchor="middle" x="2144" y="-824.45" font-family="Helvetica,Arial,sans-serif" font-size="14.00">exception</text>
<text xml:space="preserve" text-anchor="middle" x="2144" y="-808.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00">DuplicateObjectException</text>
</g>
<!-- TestReservations&#45;&gt;DuplicateObjectException -->
<g id="edge20" class="edge">
<title>TestReservations&#45;&gt;DuplicateObjectException</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1261.06,-1041C1468.77,-1041 2144,-1041 2144,-1041 2144,-1041 2144,-853.43 2144,-853.43"/>
<polygon fill="black" stroke="black" points="2144,-843.43 2148.5,-853.43 2144,-847.21 2144,-853.43 2144,-853.43 2144,-853.43 2144,-847.21 2139.5,-853.43 2144,-843.43"/>
<text xml:space="preserve" text-anchor="middle" x="2167.25" y="-954.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00">catches</text>
</g>
</g>
</svg>
<?xml version="1.0" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="2188pt" height="1090pt" viewBox="0.00 0.00 2188.25 1089.60">
<g id="graph0" class="graph" transform="translate(4,1085.5999755859375) scale(1)" data-name="ClassDiagram">
<polygon fill="white" stroke="none" points="-4,4 -4,-1085.6 2184.25,-1085.6 2184.25,4 -4,4" style=""/>
<!-- IReservation -->
<g id="node1" class="node" pointer-events="visible" data-name="IReservation">
<polygon fill="palegreen" stroke="black" points="96.96,-0.5 96.96,-150.9 309.04,-150.9 309.04,-0.5 96.96,-0.5" style=""/>
<text text-anchor="middle" x="203" y="-134.3" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">interface</text>
<text text-anchor="middle" x="203" y="-117.5" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">IReservation</text>
<polyline fill="none" stroke="black" points="96.96,-109.3 309.04,-109.3" style=""/>
<text text-anchor="start" x="104.96" y="-92.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">+ ReservationType(): String</text>
<text text-anchor="start" x="104.96" y="-75.9" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">+ checkValid(): boolean</text>
<text text-anchor="start" x="104.96" y="-59.1" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">+ calculatePrice(): float</text>
<text text-anchor="start" x="104.96" y="-42.3" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">+ getReservation_number(): String</text>
<text text-anchor="start" x="104.96" y="-25.5" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">+ getPhysical_address(): Address</text>
<text text-anchor="start" x="104.96" y="-8.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">+ getAccountNumber(): String</text>
</g>
<!-- Reservation -->
<g id="node2" class="node" pointer-events="visible" data-name="Reservation">
<polygon fill="lightyellow" stroke="black" points="507.57,-593.9 507.57,-629.9 590.43,-629.9 590.43,-593.9 507.57,-593.9" style=""/>
<text text-anchor="middle" x="549" y="-607.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">Reservation</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="M507.77,-605C425.81,-605 250.22,-605 250.22,-605 250.22,-605 250.22,-162.21 250.22,-162.21" style=""/>
<polygon fill="none" stroke="black" points="253.72,-162.21 250.22,-152.21 246.72,-162.21 253.72,-162.21" style=""/>
<text text-anchor="middle" x="178.66" y="-368.8" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">implements</text>
</g>
<!-- DataRepository -->
<g id="node4" class="node" pointer-events="visible" data-name="DataRepository">
<polygon fill="orchid" stroke="black" points="932.07,-269.9 932.07,-305.9 1035.93,-305.9 1035.93,-269.9 932.07,-269.9" style=""/>
<text text-anchor="middle" x="984" y="-283.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">DataRepository</text>
</g>
<!-- Reservation&#45;&gt;DataRepository -->
<g id="edge24" class="edge" data-name="Reservation-&gt;DataRepository">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M590.17,-605C696.93,-605 974.38,-605 974.38,-605 974.38,-605 974.38,-315.86 974.38,-315.86" style=""/>
<polygon fill="black" stroke="black" points="974.38,-305.86 978.88,-315.86 974.38,-310.86 974.38,-315.86 974.38,-315.86 974.38,-315.86 974.38,-310.86 969.88,-315.86 974.38,-305.86 974.38,-305.86" style=""/>
<text text-anchor="middle" x="830.31" y="-441.5" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">uses for Write()</text>
</g>
<!-- Address -->
<g id="node13" class="node" pointer-events="visible" data-name="Address">
<polygon fill="lightblue" stroke="black" points="428.74,-263.1 428.74,-312.7 669.26,-312.7 669.26,-263.1 428.74,-263.1" style=""/>
<text text-anchor="middle" x="549" y="-296.1" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">Address</text>
<polyline fill="none" stroke="black" points="428.74,-287.9 669.26,-287.9" style=""/>
<text text-anchor="start" x="436.74" y="-271.3" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">+ Address(String, String, String, String)</text>
</g>
<!-- Reservation&#45;&gt;Address -->
<g id="edge11" class="edge" data-name="Reservation-&gt;Address">
<path fill="none" stroke="black" d="M562.81,-594.02C562.81,-594.02 562.81,-324.57 562.81,-324.57" style=""/>
<polygon fill="none" stroke="black" points="562.81,-324.57 558.81,-318.57 562.81,-312.57 566.81,-318.57 562.81,-324.57" style=""/>
<text text-anchor="middle" x="595.66" y="-441.5" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">physical/mailing</text>
</g>
<!-- ReservationStatusEnum -->
<g id="node15" class="node" pointer-events="visible" data-name="ReservationStatusEnum">
<polygon fill="lightgray" stroke="black" points="254.73,-424.9 254.73,-466.5 405.27,-466.5 405.27,-424.9 254.73,-424.9" style=""/>
<text text-anchor="middle" x="330" y="-449.9" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">enum</text>
<text text-anchor="middle" x="330" y="-433.1" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">ReservationStatusEnum</text>
</g>
<!-- Reservation&#45;&gt;ReservationStatusEnum -->
<g id="edge25" class="edge" data-name="Reservation-&gt;ReservationStatusEnum">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M535.19,-594.19C535.19,-549.19 535.19,-434 535.19,-434 535.19,-434 415.24,-434 415.24,-434" style=""/>
<polygon fill="black" stroke="black" points="405.24,-434 415.24,-429.5 410.24,-434 415.24,-434 415.24,-434 415.24,-434 410.24,-434 415.24,-438.5 405.24,-434 405.24,-434" style=""/>
<text text-anchor="middle" x="342.06" y="-514.2" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">uses</text>
</g>
<!-- AccomodationManager -->
<g id="node3" class="node" pointer-events="visible" data-name="AccomodationManager">
<polygon fill="lightyellow" stroke="black" points="1010.14,-757.3 1010.14,-941.3 1345.86,-941.3 1345.86,-757.3 1010.14,-757.3" style=""/>
<text text-anchor="middle" x="1178" y="-924.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">AccomodationManager</text>
<polyline fill="none" stroke="black" points="1010.14,-916.5 1345.86,-916.5" style=""/>
<text text-anchor="start" x="1018.14" y="-899.9" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">+ AccomodationManager(String)</text>
<text text-anchor="start" x="1018.14" y="-883.1" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">+ loadAll(): void</text>
<text text-anchor="start" x="1018.14" y="-866.3" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">+ retrieveAccount(String): Account</text>
<text text-anchor="start" x="1018.14" y="-849.5" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">+ retrieveLoadedAccounts(): AccountList</text>
<text text-anchor="start" x="1018.14" y="-832.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">+ newAccount(String, Address, EmailAddress): Account</text>
<text text-anchor="start" x="1018.14" y="-815.9" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">+ AddAccount(Account): void</text>
<text text-anchor="start" x="1018.14" y="-799.1" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">+ UpdateAccount(Account): void</text>
<text text-anchor="start" x="1018.14" y="-782.3" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">+ addReservation(Account, Reservation): boolean</text>
<text text-anchor="start" x="1018.14" y="-765.5" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">+ showReservationList(): void</text>
</g>
<!-- AccomodationManager&#45;&gt;DataRepository -->
<g id="edge21" class="edge" data-name="AccomodationManager-&gt;DataRepository">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1018.74,-757.54C1018.74,-757.54 1018.74,-315.5 1018.74,-315.5" style=""/>
<polygon fill="black" stroke="black" points="1018.74,-305.5 1023.24,-315.5 1018.74,-310.5 1018.74,-315.5 1018.74,-315.5 1018.74,-315.5 1018.74,-310.5 1014.24,-315.5 1018.74,-305.5 1018.74,-305.5" style=""/>
<text text-anchor="middle" x="996.06" y="-514.2" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">uses</text>
</g>
<!-- Account -->
<g id="node5" class="node" pointer-events="visible" data-name="Account">
<polygon fill="lightyellow" stroke="black" points="1332.29,-427.7 1332.29,-463.7 1395.71,-463.7 1395.71,-427.7 1332.29,-427.7" style=""/>
<text text-anchor="middle" x="1364" y="-441.5" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">Account</text>
</g>
<!-- AccomodationManager&#45;&gt;Account -->
<g id="edge22" class="edge" data-name="AccomodationManager-&gt;Account">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1243.44,-757.58C1243.44,-641.37 1243.44,-456 1243.44,-456 1243.44,-456 1322.32,-456 1322.32,-456" style=""/>
<polygon fill="black" stroke="black" points="1332.32,-456 1322.32,-460.5 1327.32,-456 1322.32,-456 1322.32,-456 1322.32,-456 1327.32,-456 1322.32,-451.5 1332.32,-456 1332.32,-456" style=""/>
<text text-anchor="middle" x="1189.49" y="-607.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">manages</text>
</g>
<!-- AccountList -->
<g id="node6" class="node" pointer-events="visible" data-name="AccountList">
<polygon fill="lightyellow" stroke="black" points="1285.97,-570.3 1285.97,-653.5 1442.03,-653.5 1442.03,-570.3 1285.97,-570.3" style=""/>
<text text-anchor="middle" x="1364" y="-636.9" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">AccountList</text>
<polyline fill="none" stroke="black" points="1285.97,-628.7 1442.03,-628.7" style=""/>
<text text-anchor="start" x="1293.97" y="-612.1" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">+ add(Account): boolean</text>
<text text-anchor="start" x="1293.97" y="-595.3" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">+ find(String): Account</text>
<text text-anchor="start" x="1293.97" y="-578.5" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">+ save(Account): void</text>
</g>
<!-- AccomodationManager&#45;&gt;AccountList -->
<g id="edge5" class="edge" data-name="AccomodationManager-&gt;AccountList">
<path fill="none" stroke="black" d="M1315.91,-757.51C1315.91,-757.51 1315.91,-665.24 1315.91,-665.24" style=""/>
<polygon fill="black" stroke="black" points="1315.91,-665.24 1311.91,-659.24 1315.91,-653.24 1319.91,-659.24 1315.91,-665.24" style=""/>
<text text-anchor="middle" x="1353.19" y="-701.2" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">has a</text>
</g>
<!-- Account&#45;&gt;DataRepository -->
<g id="edge23" class="edge" data-name="Account-&gt;DataRepository">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1332.33,-442C1248.52,-442 1027.34,-442 1027.34,-442 1027.34,-442 1027.34,-315.88 1027.34,-315.88" style=""/>
<polygon fill="black" stroke="black" points="1027.34,-305.88 1031.84,-315.88 1027.34,-310.88 1027.34,-315.88 1027.34,-315.88 1027.34,-315.88 1027.34,-310.88 1022.84,-315.88 1027.34,-305.88 1027.34,-305.88" style=""/>
<text text-anchor="middle" x="1262.31" y="-368.8" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">uses for Write()</text>
</g>
<!-- AccountReservationList -->
<g id="node7" class="node" pointer-events="visible" data-name="AccountReservationList">
<polygon fill="lightyellow" stroke="black" points="1200.91,-254.7 1200.91,-321.1 1381.09,-321.1 1381.09,-254.7 1200.91,-254.7" style=""/>
<text text-anchor="middle" x="1291" y="-304.5" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">AccountReservationList</text>
<polyline fill="none" stroke="black" points="1200.91,-296.3 1381.09,-296.3" style=""/>
<text text-anchor="start" x="1208.91" y="-279.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">+ add(IReservation): boolean</text>
<text text-anchor="start" x="1208.91" y="-262.9" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">+ find(String): Reservation</text>
</g>
<!-- Account&#45;&gt;AccountReservationList -->
<g id="edge7" class="edge" data-name="Account-&gt;AccountReservationList">
<path fill="none" stroke="black" d="M1356.69,-427.91C1356.69,-427.91 1356.69,-333.01 1356.69,-333.01" style=""/>
<polygon fill="black" stroke="black" points="1356.69,-333.01 1352.69,-327.01 1356.69,-321.01 1360.69,-327.01 1356.69,-333.01" style=""/>
<text text-anchor="middle" x="1398.19" y="-368.8" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">has a</text>
</g>
<!-- Account&#45;&gt;Address -->
<g id="edge9" class="edge" data-name="Account-&gt;Address">
<path fill="none" stroke="black" d="M1332.45,-449C1191.93,-449 629.85,-449 629.85,-449 629.85,-449 629.85,-324.37 629.85,-324.37" style=""/>
<polygon fill="none" stroke="black" points="629.85,-324.37 625.85,-318.37 629.85,-312.37 633.85,-318.37 629.85,-324.37" style=""/>
<text text-anchor="middle" x="1119.39" y="-368.8" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">mailing</text>
</g>
<!-- EmailAddress -->
<g id="node14" class="node" pointer-events="visible" data-name="EmailAddress">
<polygon fill="lightblue" stroke="black" points="1698.87,-263.1 1698.87,-312.7 1849.13,-312.7 1849.13,-263.1 1698.87,-263.1" style=""/>
<text text-anchor="middle" x="1774" y="-296.1" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">EmailAddress</text>
<polyline fill="none" stroke="black" points="1698.87,-287.9 1849.13,-287.9" style=""/>
<text text-anchor="start" x="1706.87" y="-271.3" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">+ EmailAddress(String)</text>
</g>
<!-- Account&#45;&gt;EmailAddress -->
<g id="edge10" class="edge" data-name="Account-&gt;EmailAddress">
<path fill="none" stroke="black" d="M1388.4,-427.8C1388.4,-386.3 1388.4,-287 1388.4,-287 1388.4,-287 1687.2,-287 1687.2,-287" style=""/>
<polygon fill="none" stroke="black" points="1687.2,-287 1693.2,-283 1699.2,-287 1693.2,-291 1687.2,-287" style=""/>
</g>
<!-- AccountList&#45;&gt;Account -->
<g id="edge6" class="edge" data-name="AccountList-&gt;Account">
<path fill="none" stroke="black" d="M1364,-570.39C1364,-570.39 1364,-475.41 1364,-475.41" style=""/>
<polygon fill="none" stroke="black" points="1364,-475.41 1360,-469.41 1364,-463.41 1368,-469.41 1364,-475.41" style=""/>
<text text-anchor="middle" x="1374.5" y="-514.2" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">0..*</text>
</g>
<!-- AccountReservationList&#45;&gt;IReservation -->
<g id="edge8" class="edge" data-name="AccountReservationList-&gt;IReservation">
<path fill="none" stroke="black" d="M1201,-258C953.67,-258 281.88,-258 281.88,-258 281.88,-258 281.88,-162.64 281.88,-162.64" style=""/>
<polygon fill="black" stroke="black" points="281.88,-162.64 277.88,-156.64 281.88,-150.64 285.88,-156.64 281.88,-162.64" style=""/>
<text text-anchor="middle" x="785.5" y="-198.6" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">0..*</text>
</g>
<!-- HotelReservation -->
<g id="node8" class="node" pointer-events="visible" data-name="HotelReservation">
<polygon fill="lightyellow" stroke="black" points="245.71,-816.1 245.71,-882.5 426.29,-882.5 426.29,-816.1 245.71,-816.1" style=""/>
<text text-anchor="middle" x="336" y="-865.9" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">HotelReservation</text>
<polyline fill="none" stroke="black" points="245.71,-857.7 426.29,-857.7" style=""/>
<text text-anchor="start" x="253.71" y="-841.1" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">+ HotelReservation(Address)</text>
<text text-anchor="start" x="253.71" y="-824.3" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">+ calculatePrice(): float</text>
</g>
<!-- HotelReservation&#45;&gt;Reservation -->
<g id="edge2" class="edge" data-name="HotelReservation-&gt;Reservation">
<path fill="none" stroke="black" d="M415.78,-816.16C415.78,-752.2 415.78,-618 415.78,-618 415.78,-618 496.06,-618 496.06,-618" style=""/>
<polygon fill="none" stroke="black" points="496.06,-621.5 506.06,-618 496.06,-614.5 496.06,-621.5" style=""/>
<text text-anchor="middle" x="413.38" y="-701.2" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">extends</text>
</g>
<!-- CabinReservation -->
<g id="node9" class="node" pointer-events="visible" data-name="CabinReservation">
<polygon fill="lightyellow" stroke="black" points="498.54,-816.1 498.54,-882.5 681.46,-882.5 681.46,-816.1 498.54,-816.1" style=""/>
<text text-anchor="middle" x="590" y="-865.9" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">CabinReservation</text>
<polyline fill="none" stroke="black" points="498.54,-857.7 681.46,-857.7" style=""/>
<text text-anchor="start" x="506.54" y="-841.1" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">+ CabinReservation(Address)</text>
<text text-anchor="start" x="506.54" y="-824.3" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">+ calculatePrice(): float</text>
</g>
<!-- CabinReservation&#45;&gt;Reservation -->
<g id="edge3" class="edge" data-name="CabinReservation-&gt;Reservation">
<path fill="none" stroke="black" d="M549,-816.29C549,-816.29 549,-641.16 549,-641.16" style=""/>
<polygon fill="none" stroke="black" points="552.5,-641.16 549,-631.16 545.5,-641.16 552.5,-641.16" style=""/>
<text text-anchor="middle" x="590.38" y="-701.2" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">extends</text>
</g>
<!-- HouseReservation -->
<g id="node10" class="node" pointer-events="visible" data-name="HouseReservation">
<polygon fill="lightyellow" stroke="black" points="753.38,-816.1 753.38,-882.5 938.62,-882.5 938.62,-816.1 753.38,-816.1" style=""/>
<text text-anchor="middle" x="846" y="-865.9" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">HouseReservation</text>
<polyline fill="none" stroke="black" points="753.38,-857.7 938.62,-857.7" style=""/>
<text text-anchor="start" x="761.38" y="-841.1" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">+ HouseReservation(Address)</text>
<text text-anchor="start" x="761.38" y="-824.3" font-family="Helvetica,Arial,sans-serif" font-size="14.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="M842.72,-816.16C842.72,-752.2 842.72,-618 842.72,-618 842.72,-618 601.66,-618 601.66,-618" style=""/>
<polygon fill="none" stroke="black" points="601.66,-614.5 591.66,-618 601.66,-621.5 601.66,-614.5" style=""/>
<text text-anchor="middle" x="779.38" y="-701.2" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">extends</text>
</g>
<!-- TestReservations -->
<g id="node11" class="node" pointer-events="visible" data-name="TestReservations">
<polygon fill="lightyellow" stroke="black" points="1121.79,-1045.1 1121.79,-1081.1 1234.21,-1081.1 1234.21,-1045.1 1121.79,-1045.1" style=""/>
<text text-anchor="middle" x="1178" y="-1058.9" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">TestReservations</text>
</g>
<!-- TestReservations&#45;&gt;AccomodationManager -->
<g id="edge12" class="edge" data-name="TestReservations-&gt;AccomodationManager">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1178,-1045.24C1178,-1045.24 1178,-951.14 1178,-951.14" style=""/>
<polygon fill="black" stroke="black" points="1178,-941.14 1182.5,-951.14 1178,-946.14 1178,-951.14 1178,-951.14 1178,-951.14 1178,-946.14 1173.5,-951.14 1178,-941.14 1178,-941.14" style=""/>
<text text-anchor="middle" x="1190.06" y="-989" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">uses</text>
</g>
<!-- TestReservations&#45;&gt;Account -->
<g id="edge17" class="edge" data-name="TestReservations-&gt;Account">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1233.9,-1052C1326.87,-1052 1503.18,-1052 1503.18,-1052 1503.18,-1052 1503.18,-445 1503.18,-445 1503.18,-445 1405.58,-445 1405.58,-445" style=""/>
<polygon fill="black" stroke="black" points="1395.58,-445 1405.58,-440.5 1400.58,-445 1405.58,-445 1405.58,-445 1405.58,-445 1400.58,-445 1405.58,-449.5 1395.58,-445 1395.58,-445" style=""/>
<text text-anchor="middle" x="1491.06" y="-701.2" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">uses</text>
</g>
<!-- TestReservations&#45;&gt;HotelReservation -->
<g id="edge14" class="edge" data-name="TestReservations-&gt;HotelReservation">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1122.1,-1074C934.04,-1074 336,-1074 336,-1074 336,-1074 336,-892.46 336,-892.46" style=""/>
<polygon fill="black" stroke="black" points="336,-882.46 340.5,-892.46 336,-887.46 336,-892.46 336,-892.46 336,-892.46 336,-887.46 331.5,-892.46 336,-882.46 336,-882.46" style=""/>
<text text-anchor="middle" x="417.43" y="-989" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">creates</text>
</g>
<!-- TestReservations&#45;&gt;CabinReservation -->
<g id="edge15" class="edge" data-name="TestReservations-&gt;CabinReservation">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1121.89,-1059C974.91,-1059 590,-1059 590,-1059 590,-1059 590,-892.07 590,-892.07" style=""/>
<polygon fill="black" stroke="black" points="590,-882.07 594.5,-892.07 590,-887.07 590,-892.07 590,-892.07 590,-892.07 590,-887.07 585.5,-892.07 590,-882.07 590,-882.07" style=""/>
<text text-anchor="middle" x="780.43" y="-989" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">creates</text>
</g>
<!-- TestReservations&#45;&gt;HouseReservation -->
<g id="edge16" class="edge" data-name="TestReservations-&gt;HouseReservation">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1122.06,-1052C1027.44,-1052 846,-1052 846,-1052 846,-1052 846,-892.32 846,-892.32" style=""/>
<polygon fill="black" stroke="black" points="846,-882.32 850.5,-892.32 846,-887.32 846,-892.32 846,-892.32 846,-892.32 846,-887.32 841.5,-892.32 846,-882.32 846,-882.32" style=""/>
<text text-anchor="middle" x="1019.43" y="-989" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">creates</text>
</g>
<!-- TestReservations.getRepositoryConfig -->
<g id="node12" class="node" pointer-events="visible" data-name="TestReservations.getRepositoryConfig">
<polygon fill="lightyellow" stroke="black" points="1564.32,-831.3 1564.32,-867.3 1797.68,-867.3 1797.68,-831.3 1564.32,-831.3" style=""/>
<text text-anchor="middle" x="1681" y="-845.1" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">TestReservations.getRepositoryConfig</text>
</g>
<!-- TestReservations&#45;&gt;TestReservations.getRepositoryConfig -->
<g id="edge13" class="edge" data-name="TestReservations-&gt;TestReservations.getRepositoryConfig">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1233.75,-1059C1364.71,-1059 1681,-1059 1681,-1059 1681,-1059 1681,-877.18 1681,-877.18" style=""/>
<polygon fill="black" stroke="black" points="1681,-867.18 1685.5,-877.18 1681,-872.18 1681,-877.18 1681,-877.18 1681,-877.18 1681,-872.18 1676.5,-877.18 1681,-867.18 1681,-867.18" style=""/>
<text text-anchor="middle" x="1693.06" y="-989" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">uses</text>
</g>
<!-- TestReservations&#45;&gt;Address -->
<g id="edge18" class="edge" data-name="TestReservations-&gt;Address">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1121.95,-1066C953.54,-1066 463.64,-1066 463.64,-1066 463.64,-1066 463.64,-322.47 463.64,-322.47" style=""/>
<polygon fill="black" stroke="black" points="463.64,-312.47 468.14,-322.47 463.64,-317.47 463.64,-322.47 463.64,-322.47 463.64,-322.47 463.64,-317.47 459.14,-322.47 463.64,-312.47 463.64,-312.47" style=""/>
<text text-anchor="middle" x="19.43" y="-607.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">creates</text>
</g>
<!-- TestReservations&#45;&gt;EmailAddress -->
<g id="edge19" class="edge" data-name="TestReservations-&gt;EmailAddress">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1234.15,-1066C1391.17,-1066 1823.41,-1066 1823.41,-1066 1823.41,-1066 1823.41,-322.47 1823.41,-322.47" style=""/>
<polygon fill="black" stroke="black" points="1823.41,-312.47 1827.91,-322.47 1823.41,-317.47 1823.41,-322.47 1823.41,-322.47 1823.41,-322.47 1823.41,-317.47 1818.91,-322.47 1823.41,-312.47 1823.41,-312.47" style=""/>
<text text-anchor="middle" x="1926.43" y="-607.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">creates</text>
</g>
<!-- DuplicateObjectException -->
<g id="node16" class="node" pointer-events="visible" data-name="DuplicateObjectException">
<polygon fill="lightpink" stroke="black" points="2015.75,-828.5 2015.75,-870.1 2180.25,-870.1 2180.25,-828.5 2015.75,-828.5" style=""/>
<text text-anchor="middle" x="2098" y="-853.5" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">exception</text>
<text text-anchor="middle" x="2098" y="-836.7" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">DuplicateObjectException</text>
</g>
<!-- TestReservations&#45;&gt;DuplicateObjectException -->
<g id="edge20" class="edge" data-name="TestReservations-&gt;DuplicateObjectException">
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1234.17,-1074C1433.91,-1074 2098,-1074 2098,-1074 2098,-1074 2098,-880.04 2098,-880.04" style=""/>
<polygon fill="black" stroke="black" points="2098,-870.04 2102.5,-880.04 2098,-875.04 2098,-880.04 2098,-880.04 2098,-880.04 2098,-875.04 2093.5,-880.04 2098,-870.04 2098,-870.04" style=""/>
<text text-anchor="middle" x="2118.6" y="-989" font-family="Helvetica,Arial,sans-serif" font-size="14.00" style="">catches</text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB