Files
reservationsystem/uml/classdiagram7.dot
2025-09-29 09:59:37 -04:00

84 lines
3.4 KiB
Plaintext

digraph "Reservation System - Account Load" {
// General graph settings
graph [
rankdir="TB",
splines=ortho,
nodesep=1.0,
ranksep=1.0,
fontname="Arial",
fontsize=12,
label="Reservation System - Account Loading"
];
// General node and edge settings
node [
shape=record,
style=filled,
fillcolor=lightyellow,
fontname="Arial",
fontsize=10
];
edge [
fontname="Arial",
fontsize=9
];
// Packages
subgraph cluster_reservationsystem {
label="lodge.reservationsystem";
style=filled;
color=lightgrey;
AccomodationManager [label="{AccomodationManager|+ AccomodationManager(home: String)\l+ newAccount(phone: String, addr: Address, email: EmailAddress): Account\l+ AddAccount(acct: Account)\l+ UpdateAccount(acct: Account)\l+ showAccountList()\l}"];
DataRepository [label="{DataRepository (Singleton)|- directoryPath: String\l- instance: DataRepository\l|+ getInstance(): DataRepository\l+ setDataStoreRoot(path: String)\l+ getPath(): String\l+ LoadAccount(file: Path): Account\l}"];
}
subgraph cluster_datamodel {
label="lodge.datamodel";
style=filled;
color=lightblue;
Account [label="{Account|+ Account()\l+ Account(phone: String, mailAddr: Address, email: EmailAddress)\l+ Write(acct: Account)\l+ checkValid()\l}"];
AccountList [label="{AccountList|+ add(acct: Account)\l+ save(acct: Account)\l+ find(account_number: String): Account\l+ showAccountList()\l}"];
Address [label="{Address|+ Address(street: String, city: String, state: String, zip: String)\l}"];
EmailAddress [label="{EmailAddress|+ EmailAddress(email: String)\l}"];
DuplicateObjectException [label="<<exception>>\nDuplicateObjectException"];
IllegalArgumentException [label="<<exception>>\nIllegalArgumentException"];
}
subgraph cluster_test {
label="lodge (Test)";
style=filled;
color=honeydew;
TestAccountLoad [label="{TestAccountLoad|+ main(args: String[])\l- Test_AddAccount(mgr: AccomodationManager, acct: Account)\l}"];
TestAccountLoad_getRepositoryConfig [label="{getRepositoryConfig|+ getPath(): String\l}"];
}
// Class Relationships
TestAccountLoad -> AccomodationManager [label="uses"];
TestAccountLoad -> Account [label="uses"];
TestAccountLoad -> Address [label="creates"];
TestAccountLoad -> EmailAddress [label="creates"];
TestAccountLoad -> TestAccountLoad_getRepositoryConfig [style=dashed, arrowhead=open, label="has inner"];
AccomodationManager -> AccountList [arrowhead=diamond,label="manages 1"];
AccomodationManager -> DataRepository [label="uses"];
AccomodationManager -> Account [label="creates/updates"];
AccountList -> Account [arrowhead=odiamond, label="0..*"];
Account -> Address [label="has mailing"];
Account -> EmailAddress [label="has"];
Account -> DataRepository [label="uses for persistence"];
DataRepository -> Account [label="loads"];
// Exception Relationships
edge [color=red, style=dashed, arrowhead=open];
AccomodationManager -> Exception [label="<<throws>>"];
AccountList -> DuplicateObjectException [label="<<throws>>"];
Account -> IllegalArgumentException [label="<<throws>>"];
Account -> IOException [label="<<throws>>"];
DataRepository -> IOException [label="<<throws>>"];
}