This commit is contained in:
2025-09-24 21:27:53 -04:00
parent c6dbc470d8
commit ba2d6db440
13 changed files with 675 additions and 15 deletions

Binary file not shown.

View File

@@ -10,13 +10,15 @@ import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ListIterator;
import lodge.reservation.IReservation;
import lodge.reservation.Reservation;
import lodge.reservationsystem.DataRepository;
import lodge.reservation.IReservation;
/**
* Concrete account data class for account json storage record.
* Collects account attributes, and hash instance to enforce uniqueness.
*/
public class Account {
private String account_number = "-99";
private String phone_number;

View File

@@ -13,8 +13,8 @@ import lodge.data.Account;
import lodge.data.AccountList;
import lodge.data.Address;
import lodge.data.EmailAddress;
import lodge.reservation.Reservation;
import lodge.reservation.IReservation;
import lodge.reservation.Reservation;
public final class AccomodationManager {
@@ -42,7 +42,7 @@ public final class AccomodationManager {
}
// Load / Deserialize Account
public void load(Path file) throws Exception {
protected void load(Path file) throws Exception {
Account account = DataRepository.LoadAccount(file);
if (account == null) {

View File

@@ -11,6 +11,9 @@ import lodge.data.Address;
import lodge.data.KitchenTypeEnum;
import lodge.reservation.Reservation;
/**
* Concrete reservation data class for reservation storage record
*/
public final class CabinReservation extends Reservation {
public CabinReservation() {

View File

@@ -12,7 +12,10 @@ import lodge.data.Address;
import lodge.data.KitchenTypeEnum;
import lodge.reservation.Reservation;
public final class HotelReservation extends Reservation{
/**
* Concrete reservation data class for reservation storage record
*/
public final class HotelReservation extends Reservation {
public HotelReservation() {
super();

View File

@@ -11,6 +11,9 @@ import lodge.data.Address;
import lodge.data.KitchenTypeEnum;
import lodge.reservation.Reservation;
/**
* Concrete reservation data class for reservation storage record
*/
public final class HouseReservation extends Reservation {
public HouseReservation() {

View File

@@ -1 +1 @@
{ "Account":{"account_number": "A1450981765","phone_number": "701-456-7890","mailing_address": { "Address":{"street": "10 wilco ave","city": "wilco","state": "WY","zip": "82801"}},"email_address": { "EmailAddress":{"email": "wilco@wyommin.net"}},"reservations":[{"CabinReservation":{"reservation_number":"R0535276622"}},{"HouseReservation":{"reservation_number":"R0499811708"}},{"CabinReservation":{"reservation_number":"R0535276622"}},{"HouseReservation":{"reservation_number":"R0499811708"}}]}}
{ "Account":{"account_number": "A1450981765","phone_number": "701-456-7890","mailing_address": { "Address":{"street": "10 wilco ave","city": "wilco","state": "WY","zip": "82801"}},"email_address": { "EmailAddress":{"email": "wilco@wyommin.net"}},"reservations":[{"CabinReservation":{"reservation_number":"R0535276622"}},{"HouseReservation":{"reservation_number":"R0499811708"}}]}}

View File

@@ -1 +1 @@
{ "Account":{"account_number": "A2074212339","phone_number": "301-356-3890","mailing_address": { "Address":{"street": "30 Amstadam ave","city": "New York","state": "NY","zip": "12010"}},"email_address": { "EmailAddress":{"email": "newbee952@aol.com"}},"reservations":[{"HotelReservation":{"reservation_number":"R0123087344"}},{"CabinReservation":{"reservation_number":"R2042828431"}},{"HotelReservation":{"reservation_number":"R0123087344"}},{"CabinReservation":{"reservation_number":"R2042828431"}}]}}
{ "Account":{"account_number": "A2074212339","phone_number": "301-356-3890","mailing_address": { "Address":{"street": "30 Amstadam ave","city": "New York","state": "NY","zip": "12010"}},"email_address": { "EmailAddress":{"email": "newbee952@aol.com"}},"reservations":[{"HotelReservation":{"reservation_number":"R0123087344"}},{"CabinReservation":{"reservation_number":"R2042828431"}}]}}

View File

@@ -1 +1,33 @@
{ "HotelReservation":{"reservation_type": "HotelReservation","reservation_number": "R0123087344","reservation_status": "Draft","reservation_start_date": "2025-09-05T10:00Z[UTC]","reservation_end_date": "2025-09-09T10:00Z[UTC]","account_number": "A2074212339","physical_address": { "Address":{"street": "400 hotel ave","city": "Maryland City","state": "MD","zip": "20723"}},"mailing_address": { "Address":{"street": "400 hotel ave","city": "Maryland City","state": "MD","zip": "20723"}},"kitchen": "Kitchenette","numberOfBeds": "2","numberOfBedRooms": "1","numberOfBathRooms": "1","numberOfFloors": "1","squareFeet": "450","price": "410.0"}}
{
"HotelReservation": {
"reservation_type": "HotelReservation",
"reservation_number": "R0123087344",
"reservation_status": "Canceled",
"reservation_start_date": "2025-09-05T10:00Z[UTC]",
"reservation_end_date": "2025-09-09T10:00Z[UTC]",
"account_number": "A2074212339",
"physical_address": {
"Address": {
"street": "400 hotel ave",
"city": "Maryland City",
"state": "MD",
"zip": "20723"
}
},
"mailing_address": {
"Address": {
"street": "400 hotel ave",
"city": "Maryland City",
"state": "MD",
"zip": "20723"
}
},
"kitchen": "Kitchenette",
"numberOfBeds": "2",
"numberOfBedRooms": "1",
"numberOfBathRooms": "1",
"numberOfFloors": "1",
"squareFeet": "450",
"price": "410.0"
}
}

View File

@@ -1 +1,33 @@
{ "HouseReservation":{"reservation_type": "HouseReservation","reservation_number": "R0499811708","reservation_status": "Draft","reservation_start_date": "2025-09-05T10:00Z[UTC]","reservation_end_date": "2025-09-09T10:00Z[UTC]","account_number": "A1450981765","physical_address": { "Address":{"street": "3000 Osage ave","city": "GreenBelt","state": "MD","zip": "20740"}},"mailing_address": { "Address":{"street": "40012 College ave","city": "College Park","state": "MD","zip": "20740"}},"kitchen": "Kitchenette","numberOfBeds": "2","numberOfBedRooms": "1","numberOfBathRooms": "1","numberOfFloors": "1","squareFeet": "450","price": "360.0"}}
{
"HouseReservation": {
"reservation_type": "HouseReservation",
"reservation_number": "R0499811708",
"reservation_status": "Draft",
"reservation_start_date": "2025-09-05T10:00Z[UTC]",
"reservation_end_date": "2025-09-09T10:00Z[UTC]",
"account_number": "A1450981765",
"physical_address": {
"Address": {
"street": "3000 Osage ave",
"city": "GreenBelt",
"state": "MD",
"zip": "20740"
}
},
"mailing_address": {
"Address": {
"street": "40012 College ave",
"city": "College Park",
"state": "MD",
"zip": "20740"
}
},
"kitchen": "Kitchenette",
"numberOfBeds": "2",
"numberOfBedRooms": "1",
"numberOfBathRooms": "1",
"numberOfFloors": "1",
"squareFeet": "450",
"price": "360.0"
}
}

View File

@@ -1 +1 @@
{ "CabinReservation":{"reservation_type": "CabinReservation","reservation_number": "R0535276622","reservation_status": "Draft","reservation_start_date": "2025-09-05T10:00Z[UTC]","reservation_end_date": "2025-09-09T10:00Z[UTC]","account_number": "A1450981765","physical_address": { "Address":{"street": "40 cabin ave","city": "Carnelian","state": "CA","zip": "96140"}},"mailing_address": { "Address":{"street": "40 cabin ave","city": "Carnelian Bay","state": "CA","zip": "96140"}},"kitchen": "Kitchenette","numberOfBeds": "2","numberOfBedRooms": "1","numberOfBathRooms": "1","numberOfFloors": "1","squareFeet": "450","price": "360.0"}}
{ "CabinReservation":{"reservation_type": "CabinReservation","reservation_number": "R0535276622","reservation_status": "Completed","reservation_start_date": "2025-09-05T10:00Z[UTC]","reservation_end_date": "2025-09-09T10:00Z[UTC]","account_number": "A1450981765","physical_address": { "Address":{"street": "40 cabin ave","city": "Carnelian","state": "CA","zip": "96140"}},"mailing_address": { "Address":{"street": "40 cabin ave","city": "Carnelian Bay","state": "CA","zip": "96140"}},"kitchen": "Kitchenette","numberOfBeds": "2","numberOfBedRooms": "1","numberOfBathRooms": "1","numberOfFloors": "1","squareFeet": "450","price": "360.0"}}

323
uml/classdiagram1.svg Executable file
View File

@@ -0,0 +1,323 @@
<?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>

After

Width:  |  Height:  |  Size: 26 KiB

262
uml/classdiagram3.svg Executable file
View File

@@ -0,0 +1,262 @@
<?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: G Pages: 1 -->
<svg width="692pt" height="725pt"
viewBox="0.00 0.00 692.00 725.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 720.5)">
<title>G</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-720.5 687.5,-720.5 687.5,4 -4,4"/>
<!-- IReservation -->
<g id="node1" class="node">
<title>IReservation</title>
<polygon fill="none" stroke="black" points="378.12,-0.5 378.12,-36.5 439.12,-36.5 439.12,-0.5 378.12,-0.5"/>
<text xml:space="preserve" text-anchor="middle" x="408.62" y="-16.15" font-family="Bitstream Vera Sans" font-size="8.00">IReservation</text>
</g>
<!-- Reservation -->
<g id="node2" class="node">
<title>Reservation</title>
<polygon fill="none" stroke="black" points="385.25,-200 385.25,-455 594,-455 594,-200 385.25,-200"/>
<text xml:space="preserve" text-anchor="middle" x="489.62" y="-443.4" font-family="Bitstream Vera Sans" font-size="8.00">Abstract</text>
<text xml:space="preserve" text-anchor="middle" x="489.62" y="-432.9" font-family="Bitstream Vera Sans" font-size="8.00">Reservation</text>
<polyline fill="none" stroke="black" points="385.25,-426 594,-426"/>
<text xml:space="preserve" text-anchor="start" x="393.25" y="-414.4" font-family="Bitstream Vera Sans" font-size="8.00">&#45; type: char</text>
<text xml:space="preserve" text-anchor="start" x="393.25" y="-403.9" font-family="Bitstream Vera Sans" font-size="8.00">&#45; reservation_number: String</text>
<text xml:space="preserve" text-anchor="start" x="393.25" y="-393.4" font-family="Bitstream Vera Sans" font-size="8.00">&#45; physical_address: Address</text>
<text xml:space="preserve" text-anchor="start" x="393.25" y="-382.9" font-family="Bitstream Vera Sans" font-size="8.00">&#45; mailing_address: Address</text>
<text xml:space="preserve" text-anchor="start" x="393.25" y="-372.4" font-family="Bitstream Vera Sans" font-size="8.00">&#45; reservation_start_date: ZonedDateTime</text>
<text xml:space="preserve" text-anchor="start" x="393.25" y="-361.9" font-family="Bitstream Vera Sans" font-size="8.00">&#45; reservation_end_date: ZonedDateTime</text>
<text xml:space="preserve" text-anchor="start" x="393.25" y="-351.4" font-family="Bitstream Vera Sans" font-size="8.00">&#45; reservation_status: ReservationStatusEnum</text>
<text xml:space="preserve" text-anchor="start" x="393.25" y="-340.9" font-family="Bitstream Vera Sans" font-size="8.00">&#45; kitchen: KitchenTypeEnum</text>
<text xml:space="preserve" text-anchor="start" x="393.25" y="-330.4" font-family="Bitstream Vera Sans" font-size="8.00">&#45; numberOfBeds: Integer</text>
<text xml:space="preserve" text-anchor="start" x="393.25" y="-319.9" font-family="Bitstream Vera Sans" font-size="8.00">&#45; price: Float</text>
<text xml:space="preserve" text-anchor="start" x="393.25" y="-309.4" font-family="Bitstream Vera Sans" font-size="8.00"># accountNumber: String</text>
<polyline fill="none" stroke="black" points="385.25,-302.5 594,-302.5"/>
<text xml:space="preserve" text-anchor="start" x="393.25" y="-290.9" font-family="Bitstream Vera Sans" font-size="8.00">+ setReservation_number(String): void</text>
<text xml:space="preserve" text-anchor="start" x="393.25" y="-280.4" font-family="Bitstream Vera Sans" font-size="8.00">+ getReservation_number(): String</text>
<text xml:space="preserve" text-anchor="start" x="393.25" y="-269.9" font-family="Bitstream Vera Sans" font-size="8.00">+ setAccountNumber(String): void</text>
<text xml:space="preserve" text-anchor="start" x="393.25" y="-259.4" font-family="Bitstream Vera Sans" font-size="8.00">+ getAccountNumber(): String</text>
<text xml:space="preserve" text-anchor="start" x="393.25" y="-248.9" font-family="Bitstream Vera Sans" font-size="8.00">+ Write(Reservation): void</text>
<text xml:space="preserve" text-anchor="start" x="393.25" y="-238.4" font-family="Bitstream Vera Sans" font-size="8.00">+ Change(Reservation, ReservationStatusEnum): void</text>
<text xml:space="preserve" text-anchor="start" x="393.25" y="-227.9" font-family="Bitstream Vera Sans" font-size="8.00">+ update(Reservation): void</text>
<text xml:space="preserve" text-anchor="start" x="393.25" y="-217.4" font-family="Bitstream Vera Sans" font-size="8.00">+ calculatePrice(): float</text>
<text xml:space="preserve" text-anchor="start" x="393.25" y="-206.9" font-family="Bitstream Vera Sans" font-size="8.00">+ ReservationType(): String</text>
</g>
<!-- Reservation&#45;&gt;IReservation -->
<g id="edge13" class="edge">
<title>Reservation&#45;&gt;IReservation</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M495.18,-188.31C492.26,-152.93 485.19,-115.78 470.62,-83.5 462.23,-64.89 446.01,-48.45 432.26,-36.9"/>
<polygon fill="none" stroke="black" points="491.69,-188.49 495.88,-198.22 498.67,-187.99 491.69,-188.49"/>
</g>
<!-- Address -->
<g id="node11" class="node">
<title>Address</title>
<polygon fill="none" stroke="black" points="294,-84 294,-152.5 363.25,-152.5 363.25,-84 294,-84"/>
<text xml:space="preserve" text-anchor="middle" x="328.62" y="-140.9" font-family="Bitstream Vera Sans" font-size="8.00">Address</text>
<polyline fill="none" stroke="black" points="294,-134 363.25,-134"/>
<text xml:space="preserve" text-anchor="start" x="302" y="-122.4" font-family="Bitstream Vera Sans" font-size="8.00">&#45; street: String</text>
<text xml:space="preserve" text-anchor="start" x="302" y="-111.9" font-family="Bitstream Vera Sans" font-size="8.00">&#45; city: String</text>
<text xml:space="preserve" text-anchor="start" x="302" y="-101.4" font-family="Bitstream Vera Sans" font-size="8.00">&#45; state: String</text>
<text xml:space="preserve" text-anchor="start" x="302" y="-90.9" font-family="Bitstream Vera Sans" font-size="8.00">&#45; zip: String</text>
</g>
<!-- Reservation&#45;&gt;Address -->
<g id="edge8" class="edge">
<title>Reservation&#45;&gt;Address</title>
<path fill="none" stroke="black" d="M391.1,-199.67C380.59,-186.15 370.52,-173.18 361.64,-161.75"/>
<polygon fill="none" stroke="black" points="364.62,-159.88 355.72,-154.13 359.09,-164.18 364.62,-159.88"/>
<text xml:space="preserve" text-anchor="middle" x="378.45" y="-173.9" font-family="Bitstream Vera Sans" font-size="8.00">2</text>
</g>
<!-- ReservationStatusEnum -->
<g id="node14" class="node">
<title>ReservationStatusEnum</title>
<polygon fill="none" stroke="black" points="517.88,-100.25 517.88,-136.25 619.38,-136.25 619.38,-100.25 517.88,-100.25"/>
<text xml:space="preserve" text-anchor="middle" x="568.62" y="-115.9" font-family="Bitstream Vera Sans" font-size="8.00">ReservationStatusEnum</text>
</g>
<!-- Reservation&#45;&gt;ReservationStatusEnum -->
<g id="edge9" class="edge">
<title>Reservation&#45;&gt;ReservationStatusEnum</title>
<path fill="none" stroke="black" d="M537.97,-199.67C545.5,-179.92 552.58,-161.34 558.03,-147.03"/>
<polygon fill="none" stroke="black" points="561.21,-148.54 561.5,-137.95 554.67,-146.04 561.21,-148.54"/>
<text xml:space="preserve" text-anchor="middle" x="549.69" y="-173.9" font-family="Bitstream Vera Sans" font-size="8.00">1</text>
</g>
<!-- KitchenTypeEnum -->
<g id="node15" class="node">
<title>KitchenTypeEnum</title>
<polygon fill="none" stroke="black" points="381.75,-100.25 381.75,-136.25 461.5,-136.25 461.5,-100.25 381.75,-100.25"/>
<text xml:space="preserve" text-anchor="middle" x="421.62" y="-115.9" font-family="Bitstream Vera Sans" font-size="8.00">KitchenTypeEnum</text>
</g>
<!-- Reservation&#45;&gt;KitchenTypeEnum -->
<g id="edge10" class="edge">
<title>Reservation&#45;&gt;KitchenTypeEnum</title>
<path fill="none" stroke="black" d="M448.01,-199.67C441.59,-180.11 435.56,-161.71 430.88,-147.46"/>
<polygon fill="none" stroke="black" points="434.21,-146.38 427.77,-137.97 427.56,-148.56 434.21,-146.38"/>
<text xml:space="preserve" text-anchor="middle" x="443.97" y="-173.9" font-family="Bitstream Vera Sans" font-size="8.00">1</text>
</g>
<!-- HotelReservation -->
<g id="node3" class="node">
<title>HotelReservation</title>
<polygon fill="none" stroke="black" points="299.75,-502.5 299.75,-560.5 415.5,-560.5 415.5,-502.5 299.75,-502.5"/>
<text xml:space="preserve" text-anchor="middle" x="357.62" y="-548.9" font-family="Bitstream Vera Sans" font-size="8.00">HotelReservation</text>
<polyline fill="none" stroke="black" points="299.75,-542 415.5,-542"/>
<text xml:space="preserve" text-anchor="start" x="307.75" y="-530.4" font-family="Bitstream Vera Sans" font-size="8.00">+ ReservationType(): String</text>
<text xml:space="preserve" text-anchor="start" x="307.75" y="-519.9" font-family="Bitstream Vera Sans" font-size="8.00">+ checkValid(): boolean</text>
<text xml:space="preserve" text-anchor="start" x="307.75" y="-509.4" font-family="Bitstream Vera Sans" font-size="8.00">+ calculatePrice(): float</text>
</g>
<!-- HotelReservation&#45;&gt;Reservation -->
<g id="edge1" class="edge">
<title>HotelReservation&#45;&gt;Reservation</title>
<path fill="none" stroke="black" d="M375.98,-502.41C382.95,-491.74 391.45,-478.75 400.62,-464.71"/>
<polygon fill="none" stroke="black" points="403.36,-466.91 405.9,-456.62 397.5,-463.08 403.36,-466.91"/>
</g>
<!-- HouseReservation -->
<g id="node4" class="node">
<title>HouseReservation</title>
<polygon fill="none" stroke="black" points="433.75,-502.5 433.75,-560.5 549.5,-560.5 549.5,-502.5 433.75,-502.5"/>
<text xml:space="preserve" text-anchor="middle" x="491.62" y="-548.9" font-family="Bitstream Vera Sans" font-size="8.00">HouseReservation</text>
<polyline fill="none" stroke="black" points="433.75,-542 549.5,-542"/>
<text xml:space="preserve" text-anchor="start" x="441.75" y="-530.4" font-family="Bitstream Vera Sans" font-size="8.00">+ ReservationType(): String</text>
<text xml:space="preserve" text-anchor="start" x="441.75" y="-519.9" font-family="Bitstream Vera Sans" font-size="8.00">+ checkValid(): boolean</text>
<text xml:space="preserve" text-anchor="start" x="441.75" y="-509.4" font-family="Bitstream Vera Sans" font-size="8.00">+ calculatePrice(): float</text>
</g>
<!-- HouseReservation&#45;&gt;Reservation -->
<g id="edge2" class="edge">
<title>HouseReservation&#45;&gt;Reservation</title>
<path fill="none" stroke="black" d="M491.35,-502.41C491.25,-492.25 491.12,-479.98 490.99,-466.71"/>
<polygon fill="none" stroke="black" points="494.49,-466.83 490.9,-456.87 487.5,-466.9 494.49,-466.83"/>
</g>
<!-- CabinReservation -->
<g id="node5" class="node">
<title>CabinReservation</title>
<polygon fill="none" stroke="black" points="567.75,-502.5 567.75,-560.5 683.5,-560.5 683.5,-502.5 567.75,-502.5"/>
<text xml:space="preserve" text-anchor="middle" x="625.62" y="-548.9" font-family="Bitstream Vera Sans" font-size="8.00">CabinReservation</text>
<polyline fill="none" stroke="black" points="567.75,-542 683.5,-542"/>
<text xml:space="preserve" text-anchor="start" x="575.75" y="-530.4" font-family="Bitstream Vera Sans" font-size="8.00">+ ReservationType(): String</text>
<text xml:space="preserve" text-anchor="start" x="575.75" y="-519.9" font-family="Bitstream Vera Sans" font-size="8.00">+ checkValid(): boolean</text>
<text xml:space="preserve" text-anchor="start" x="575.75" y="-509.4" font-family="Bitstream Vera Sans" font-size="8.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="M606.71,-502.41C599.53,-491.74 590.78,-478.75 581.33,-464.71"/>
<polygon fill="none" stroke="black" points="584.37,-462.95 575.88,-456.61 578.56,-466.86 584.37,-462.95"/>
</g>
<!-- Account -->
<g id="node6" class="node">
<title>Account</title>
<polygon fill="none" stroke="black" points="107.38,-288 107.38,-367 259.88,-367 259.88,-288 107.38,-288"/>
<text xml:space="preserve" text-anchor="middle" x="183.62" y="-355.4" font-family="Bitstream Vera Sans" font-size="8.00">Account</text>
<polyline fill="none" stroke="black" points="107.38,-348.5 259.88,-348.5"/>
<text xml:space="preserve" text-anchor="start" x="115.38" y="-336.9" font-family="Bitstream Vera Sans" font-size="8.00">&#45; account_number: String</text>
<text xml:space="preserve" text-anchor="start" x="115.38" y="-326.4" font-family="Bitstream Vera Sans" font-size="8.00">&#45; phone_number: String</text>
<text xml:space="preserve" text-anchor="start" x="115.38" y="-315.9" font-family="Bitstream Vera Sans" font-size="8.00">&#45; mailing_address: Address</text>
<text xml:space="preserve" text-anchor="start" x="115.38" y="-305.4" font-family="Bitstream Vera Sans" font-size="8.00">&#45; email_address: EmailAddress</text>
<text xml:space="preserve" text-anchor="start" x="115.38" y="-294.9" font-family="Bitstream Vera Sans" font-size="8.00">&#45; reservations: AccountReservationList</text>
<polyline fill="none" stroke="black" points="107.38,-288 259.88,-288"/>
</g>
<!-- AccountReservationList -->
<g id="node8" class="node">
<title>AccountReservationList</title>
<polygon fill="none" stroke="black" points="117.75,-89.25 117.75,-147.25 275.5,-147.25 275.5,-89.25 117.75,-89.25"/>
<text xml:space="preserve" text-anchor="middle" x="196.62" y="-135.65" font-family="Bitstream Vera Sans" font-size="8.00">AccountReservationList</text>
<polyline fill="none" stroke="black" points="117.75,-128.75 275.5,-128.75"/>
<text xml:space="preserve" text-anchor="start" x="125.75" y="-117.15" font-family="Bitstream Vera Sans" font-size="8.00">+ add(IReservation): boolean</text>
<text xml:space="preserve" text-anchor="start" x="125.75" y="-106.65" font-family="Bitstream Vera Sans" font-size="8.00">+ find(String): Reservation</text>
<text xml:space="preserve" text-anchor="start" x="125.75" y="-96.15" font-family="Bitstream Vera Sans" font-size="8.00">+ update(AccountReservationList): void</text>
</g>
<!-- Account&#45;&gt;AccountReservationList -->
<g id="edge7" class="edge">
<title>Account&#45;&gt;AccountReservationList</title>
<path fill="none" stroke="black" d="M186.07,-287.52C188.37,-250.8 191.81,-196.06 194.13,-159.08"/>
<polygon fill="none" stroke="black" points="197.61,-159.45 194.74,-149.25 190.62,-159.01 197.61,-159.45"/>
<text xml:space="preserve" text-anchor="middle" x="195.39" y="-173.9" font-family="Bitstream Vera Sans" font-size="8.00">1</text>
</g>
<!-- Account&#45;&gt;Address -->
<g id="edge5" class="edge">
<title>Account&#45;&gt;Address</title>
<path fill="none" stroke="black" d="M210.9,-287.52C235.93,-251.74 272.94,-198.84 298.76,-161.94"/>
<polygon fill="none" stroke="black" points="301.34,-164.36 304.2,-154.16 295.6,-160.34 301.34,-164.36"/>
<text xml:space="preserve" text-anchor="middle" x="296.49" y="-173.9" font-family="Bitstream Vera Sans" font-size="8.00">1..2</text>
</g>
<!-- EmailAddress -->
<g id="node12" class="node">
<title>EmailAddress</title>
<polygon fill="none" stroke="black" points="0,-99.75 0,-136.75 99.25,-136.75 99.25,-99.75 0,-99.75"/>
<text xml:space="preserve" text-anchor="middle" x="49.62" y="-125.15" font-family="Bitstream Vera Sans" font-size="8.00">EmailAddress</text>
<polyline fill="none" stroke="black" points="0,-118.25 99.25,-118.25"/>
<text xml:space="preserve" text-anchor="start" x="8" y="-106.65" font-family="Bitstream Vera Sans" font-size="8.00">&#45; email_address: String</text>
</g>
<!-- Account&#45;&gt;EmailAddress -->
<g id="edge6" class="edge">
<title>Account&#45;&gt;EmailAddress</title>
<path fill="none" stroke="black" d="M158.42,-287.52C131.81,-246.36 90.55,-182.55 67.24,-146.49"/>
<polygon fill="none" stroke="black" points="70.36,-144.87 61.99,-138.37 64.48,-148.67 70.36,-144.87"/>
<text xml:space="preserve" text-anchor="middle" x="91.47" y="-173.9" font-family="Bitstream Vera Sans" font-size="8.00">1</text>
</g>
<!-- AccountList -->
<g id="node7" class="node">
<title>AccountList</title>
<polygon fill="none" stroke="black" points="135.38,-513.5 135.38,-549.5 191.88,-549.5 191.88,-513.5 135.38,-513.5"/>
<text xml:space="preserve" text-anchor="middle" x="163.62" y="-533.9" font-family="Bitstream Vera Sans" font-size="8.00">AccountList</text>
<polyline fill="none" stroke="black" points="135.38,-523 191.88,-523"/>
</g>
<!-- AccountList&#45;&gt;Account -->
<g id="edge11" class="edge">
<title>AccountList&#45;&gt;Account</title>
<path fill="none" stroke="black" d="M165.33,-513.28C168.22,-484.08 174.19,-423.76 178.53,-379.96"/>
<polygon fill="none" stroke="black" points="178.52,-380.07 175.13,-373.71 179.7,-368.13 183.09,-374.5 178.52,-380.07"/>
<text xml:space="preserve" text-anchor="middle" x="175.74" y="-476.4" font-family="Bitstream Vera Sans" font-size="8.00">0..*</text>
</g>
<!-- AccountReservationList&#45;&gt;IReservation -->
<g id="edge12" class="edge">
<title>AccountReservationList&#45;&gt;IReservation</title>
<path fill="none" stroke="black" d="M258.23,-88.85C292.87,-72.87 335.24,-53.34 366.17,-39.08"/>
<polygon fill="none" stroke="black" points="366.12,-39.1 369.89,-32.95 377.02,-34.07 373.24,-40.22 366.12,-39.1"/>
<text xml:space="preserve" text-anchor="middle" x="334.6" y="-57.9" font-family="Bitstream Vera Sans" font-size="8.00">0..*</text>
</g>
<!-- AccomodationManager -->
<g id="node9" class="node">
<title>AccomodationManager</title>
<polygon fill="none" stroke="black" points="107.38,-608 107.38,-716 301.88,-716 301.88,-608 107.38,-608"/>
<text xml:space="preserve" text-anchor="middle" x="204.62" y="-704.4" font-family="Bitstream Vera Sans" font-size="8.00">AccomodationManager</text>
<polyline fill="none" stroke="black" points="107.38,-697.5 301.88,-697.5"/>
<text xml:space="preserve" text-anchor="start" x="115.38" y="-685.9" font-family="Bitstream Vera Sans" font-size="8.00">&#45; accounts: AccountList</text>
<polyline fill="none" stroke="black" points="107.38,-679 301.88,-679"/>
<text xml:space="preserve" text-anchor="start" x="115.38" y="-667.4" font-family="Bitstream Vera Sans" font-size="8.00">+ loadAll(): void</text>
<text xml:space="preserve" text-anchor="start" x="115.38" y="-656.9" font-family="Bitstream Vera Sans" font-size="8.00">+ retrieveAccount(String): Account</text>
<text xml:space="preserve" text-anchor="start" x="115.38" y="-646.4" font-family="Bitstream Vera Sans" font-size="8.00">+ AddAccount(Account): void</text>
<text xml:space="preserve" text-anchor="start" x="115.38" y="-635.9" font-family="Bitstream Vera Sans" font-size="8.00">+ UpdateAccount(Account): void</text>
<text xml:space="preserve" text-anchor="start" x="115.38" y="-625.4" font-family="Bitstream Vera Sans" font-size="8.00">+ addReservation(Account, Reservation): boolean</text>
<text xml:space="preserve" text-anchor="start" x="115.38" y="-614.9" font-family="Bitstream Vera Sans" font-size="8.00">+ findReservation(String): Reservation</text>
</g>
<!-- AccomodationManager&#45;&gt;AccountList -->
<g id="edge4" class="edge">
<title>AccomodationManager&#45;&gt;AccountList</title>
<path fill="none" stroke="black" d="M187.59,-607.62C182.44,-591.46 176.98,-574.35 172.58,-560.55"/>
<polygon fill="none" stroke="black" points="175.99,-559.74 169.62,-551.27 169.32,-561.86 175.99,-559.74"/>
<text xml:space="preserve" text-anchor="middle" x="183.92" y="-581.9" font-family="Bitstream Vera Sans" font-size="8.00">1</text>
</g>
<!-- DataRepository -->
<g id="node10" class="node">
<title>DataRepository</title>
<polygon fill="none" stroke="black" points="209.88,-513.5 209.88,-549.5 281.38,-549.5 281.38,-513.5 209.88,-513.5"/>
<text xml:space="preserve" text-anchor="middle" x="245.62" y="-529.15" font-family="Bitstream Vera Sans" font-size="8.00">DataRepository</text>
</g>
<!-- AccomodationManager&#45;&gt;DataRepository -->
<g id="edge14" class="edge">
<title>AccomodationManager&#45;&gt;DataRepository</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M221.66,-607.62C226.86,-591.3 232.38,-574.01 236.81,-560.14"/>
<polygon fill="black" stroke="black" points="239.72,-550.99 240.97,-561.89 238.58,-554.6 236.68,-560.52 236.68,-560.52 236.68,-560.52 238.58,-554.6 232.4,-559.15 239.72,-550.99"/>
<text xml:space="preserve" text-anchor="middle" x="238.25" y="-581.9" font-family="Bitstream Vera Sans" font-size="8.00">uses</text>
</g>
<!-- TestReservations -->
<g id="node13" class="node">
<title>TestReservations</title>
<polygon fill="none" stroke="black" points="319.62,-643.5 319.62,-680.5 413.62,-680.5 413.62,-643.5 319.62,-643.5"/>
<text xml:space="preserve" text-anchor="middle" x="366.62" y="-668.9" font-family="Bitstream Vera Sans" font-size="8.00">TestReservations</text>
<polyline fill="none" stroke="black" points="319.62,-662 413.62,-662"/>
<text xml:space="preserve" text-anchor="start" x="327.62" y="-650.4" font-family="Bitstream Vera Sans" font-size="8.00">+ main(String[]): void</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 21 KiB