Textual representation of the UML Graph
Classes
Quote
- Attributes:
quoteID: intprojectID: intwindows: list<Window>subtotal: doubletax: doubletotal: doublestatus: QuoteStatusreasonForStatus: stringdateCreated: datedateModified: datenotes: string
- Methods:
AddWindow(window: Window): voidRemoveWindow(windowID: int): voidUpdateWindow(window: Window): voidCalculateSubtotal(): doubleCalculateTax(): doubleCalculateTotal(): doubleGetQuoteDetails(): dictGeneratePDF(): void
Customer
- Attributes:
customerID: intname: stringemail: stringphoneNumber: stringaddress: stringprojectAddress: stringprojects: list<Project>
- Methods:
UpdateDetails(details: dict): voidGetCustomerDetails(): dict
Project
- Attributes:
projectID: intcustomer: Customerquotes: list<Quote>status: ProjectStatusdateStarted: dateestimatedCompletionDate: date
- Methods:
AddQuote(quote: Quote): voidRemoveQuote(quoteID: int): voidUpdateStatus(status: string): voidGetProjectDetails(): dict
Window
- Attributes:
windowID: inttype: WindowTypewidth: doubleheight: doubledescription: stringsashes: list<Sash>installationCost: double
- Methods:
AddSash(sash: Sash): voidRemoveSash(sashID: int): voidGetSashes(): list<Sash>CalculateCost()PrintData()
Sash
- Attributes:
sashID: intwindowID: intwidth: doubleheight: doubleperimeter: doubleframeCost: doublenumLites: intdesign: Designfinish: Finishglazings: list<Glazing>
- Methods:
CalculatePerimeter()CalculateDesignCost()CalculateFinishCost()AddGlazing(glazing: Glazing): voidRemoveGlazing(glazingID: int): voidGetGlazings(): list<Glazing>
Glazing
- Attributes:
glazingID: inttype: GlazingTypearea: doublecost: doubleaddOns: list<AddOn>
- Methods:
CalculateArea()CalculateAddOnCost()AddAddOn(addOn: Addon): voidRemoveAddOn(addOnID: int): voidGetAddOns(): list<AddOn>
RateCard
- Attributes:
itemType: string(e.g., “wood”, “glazing”, “design”, “finish”)itemName: string(e.g., ”DOUGLAS_FIR”, ”LAMINATED“)rate: double
- Methods:
GetRate(itemType: string, itemName: string): doubleUpdateRate(itemType: string, itemName: string, newRate: double): void
Enumerations
- QuoteStatus:
PENDING,APPROVED,REJECTED,REVISED,SUPERSEDED,WITHDRAWN,EXPIRED - ProjectStatus:
INITIATED,IN_PROGRESS,COMPLETED,ON_HOLD - WindowType:
SINGLE_HUNG,DOUBLE_HUNG,FIXED,CASEMENT,DOUBLE_CASEMENT,TRANSOM,AWNING,PIVOT - GlazingType:
SINGLE_PANE,DUAL_PANE - AddOn:
LAMINATED,TEMPERED,SOLARBAN_60,SOLARBAN_70,OBSCURED,SATIN_ETCHED,ARGON_GAS - Design:
DEFAULT,ARCH,BENT,CUSTOM - Finish:
PRIMED,PAINTED,STAINED,CUSTOM
Relationships
Quotehas a one-to-many relationship withWindow.Quotehas a many-to-one relationship withProject.Customerhas a one-to-many relationship withProject.Projecthas a one-to-many relationship withQuote.Windowhas a one-to-many relationship withSash.Windowhas a many-to-one relationship withQuote.Sashhas a many-to-one relationship withWindow.Sashhas a one-to-many relationship withGlazing.