Package Diagram “problem_domain”
problem_domain
The Problem Domain diagram is where business-level classes reside.
Type:
Problem Domain
Number:
3.1
Author:
Jon Kern
Priority:
high
Difficulty:
high
Note1:
Note: these classes are linked to original ANALYSIS level classes that were done separately and saved in the Analysis pkg. Right - click, choose "Hyperlink To" to see.
Links To: Package Diagram analysis, Class CashSale, Class CashSaleDetail, Class ProductDesc
Diagram Node Summary
Interface: This interface can help to decouple the packages and classes from explicit knowledge of a Specific DM class.
Interface
Class: This represents the overall transaction record of the sale.
Class: The detail class holds the association-level information.
Class
Class: This class represents the catalog-like description of the product being sold.
Class: This is the class used to hold the price of the product.
Referenced Diagrams
Package Diagram: This is the initial analysis model.
Diagram Node Detail
Interface "IDM"
This interface can help to decouple the packages and classes from explicit knowledge of a Specific DM class.
See Also:  Class Documentation

Interface "IMakeCashSale"
Stereotype:
plug-in point
Author:
TogetherSoft
See Also:  Class Documentation

Class "CashSale"
This represents the overall transaction record of the sale. For purposes of eliminating the need to re-calc everything, we can redundantly store subtotal and tax to make it easy to get the info.
Stereotype:
moment-interval
Author:
TogetherSoft
persistent
robustness:
Controller
Since
subtitle:
The entity
See Also:  Class Documentation
All Outgoing Links
Dependency
to Activity Diagram Sale Activity
Dependency
to Collaboration Diagram Collaboration
Dependency
to Sequence Diagram Total of Sale
Dependency
to State Diagram Sale State Diagram
Robustness Association
to Class SaleDM (in Package Diagram data_management)
Label:
lnkSaleDM
directed
Aggregation
to Class CashSaleDetail
This is the list of sale details (line items)
Attribute:
detailList
associates:
problem_domain.CashSaleDetail
Supplier Cardinality:
1..*
Association
to Class BigDecimal
Subtotal of all line items. NOTE: this could be calculated on the fly by iterating through the details, but once we are all done with the transaction, we have decided to purposefully store the result. This is a trade-off based on the fact that this transaction, once completed, is never edited again. By redundantly storing data, we are allowing a quick answer to support the various analysis "runs" made against the data.
Attribute:
subtotal
rdbLogicalType:
NUMERIC
Association
to Class BigDecimal
This represents a discount at the entire sale level.
Attribute:
discountAmount
rdbLogicalType:
NUMERIC
Association
to Class BigDecimal
This is the total tax for this sale.
Attribute:
tax
rdbLogicalType:
NUMERIC
Association
to Class BigDecimal
This is the payment. Based on this value and the total due, we can compute the change due.
Attribute:
payment
Supplier Cardinality:
0..*
Client Cardinality:
1
rdbLogicalType:
NUMERIC
Association
to Class Date
Timestamp of this sale
Attribute:
time
rdbLogicalType:
DATE
Association
to Class DMServer (in Package Diagram server)
Attribute:
dmServer
Association
to Interface IDM
Access to the Data Management Layer.
Attribute:
myDm
rdbLogicalType:
OTHER
Association
to Interface IMakeCashSale
This allows us to "plug in" different cash sale sequences to support other ways to take in the payment. Examples include: Cash, Credit, Debit, Check.
Attribute:
anICashSaleSequencerPlugInPoint
Supplier Cardinality:
1
rdbLogicalType:
OTHER
Hyperlink
to Class Sale (in Package Diagram Requirements.analysis)
Hyperlink
to State Diagram Sale State Diagram

Class "CashSaleDetail"
The detail class holds the association-level information. That is, a Sale is more than a list of products sold. This class can serve to store quantity of a specific product.
Author:
TogetherSoft
Stereotype:
mi-detail
persistent
See Also:  Class Documentation
All Outgoing Links
Association
to Class ProductDesc
This is the item being scanned in/sold. This object holds all the pertinent details.
Attribute:
product
Client Cardinality:
0..*
Supplier Cardinality:
1
Hyperlink
to Class SaleDetail (in Package Diagram Requirements.analysis)

Class "InsuffPaymentException"
Author:
TogetherSoft
See Also:  Class Documentation
All Outgoing Links
Generalization
to Class RuntimeException

Class "ProductDesc"
This class represents the catalog-like description of the product being sold.

If you need to track quantity and aren't selling specific "thing"-like products (that is, ones that are serialized), then add a quantityOnHand attribute to this class.

Stereotype:
description
Author:
TogetherSoft
persistent
Version:
1.0
See Also:  Class Documentation
All Outgoing Links
Association
to Class BigDecimal
Default price.
Attribute:
defaultPrice
rdbLogicalType:
NUMERIC
Association
to Class ProductPrice
List of prices. If this list has elements, then they are checked. Otherwise, the default price is used.

Attribute:
priceObjects
Supplier Cardinality:
1..*
associates:
ProductPrice
Association
to Class String
Product name. For example: Goetze's Caramel Cremes
Attribute:
name
rdbLogicalType:
VARCHAR
Association
to Class String
This is the unique identifying number. Something like a UPC for retail products.
Attribute:
itemNumber
rdbLogicalType:
VARCHAR
Association
to Class String
Some prose describing the product in all its glory.
Attribute:
description
rdbLogicalType:
VARCHAR
Hyperlink
to Class Product (in Package Diagram Requirements.analysis)

Class "ProductPrice"
This is the class used to hold the price of the product. The intent is to provide a ProductDesc object with the ability to hold more than just a fixed price. With the power of this added class, one can have prices that are valid over different time intervals.

This class is based on Peter Coad's Components from Java Modeling in Color with UML

Stereotype:
moment-interval
Version:
1.0 07/31/99
Author:
TogetherSoft
See Also:
ProductDesc
persistent
See Also:  Class Documentation
All Outgoing Links
Association
to Class BigDecimal
This is the meat of this class...the price
Attribute:
price
rdbLogicalType:
NUMERIC
Association
to Class Date
Used as the start of the applicable interval for determining if price is valid.
Attribute:
validStarting
see:
+isValidOnDate()
rdbLogicalType:
DATE
Association
to Class Date
Used as the end of the applicable interval for determining if price is valid.
Attribute:
notValidAfter
see:
+isValidOnDate()
rdbLogicalType:
DATE