Lecture 3
Lecture 3
Domain Models
Fundamental OO analysis model
– Shows important concepts in the domain of
interest
– Visual dictionary of concepts & their
relationships
– Inspiration for SW objects in class diagram
– Depicts objects, their attributes, associations
between objects
– Does NOT show object’s operations
Sam ple UP Artifact Relationships
Design Model
enterItem
(itemID, quantity)
Design
spec = getProductSpec( itemID )
...
Partial Domain Model – A Visual Dictionary
concept Sales
Item
or dom ain LineItem Records-sale-of
object 1
quantity 0..1
1..* *
Stocked-in
association Contained-in
1 1
Sale Store
1 Register
Captured-on 4
Paym ent
1
am ount
Domain Model
It shows an abstraction of the conceptual
classes, because there are many other
things one could communicate about
registers, sales, and so forth.
Guideline:
– Avoid a waterfall-mindset big-modeling effort
to make a thorough or "correct" domain
model. it won't ever be either, and such over-
modeling efforts lead to analysis paralysis,
with little or no return on the investment.
Domain Objects
S a le sD a ta b a se
o id
so ftw a re a rtifa ct; n o t p a rt
av o f d o m a in m o d e l
S a le
o id so ftw a re cla ss ; n o t p a rt
av d a te o f d o m a in m o d e l
tim e
p rin t()
Conceptual Classes
The domain model illustrates conceptual classes or
vocabulary in the domain.
Informally, a conceptual class is an idea, thing, or
object.
Conceptual class may be considered in terms of its
– Symbol – words or images representing a conceptual class
– Intension – the definition of a conceptual class
– Extension – the set of examples to which the conceptual class
applies
Example
– Symbol – Sale
– Intension – represents the event of a purchase transaction, and
has a date and time
– Extension – all the examples/instances of sales
A Conceptual Class has a Symbol, Intension,
and Extension
Sale concept's sym bol
date
tim e
sale-1
sale-4
Domain models
Don’t confuse with data model
– Object might have attributes that aren’t
persisted
– Object might have no attributes
– Such objects wouldn’t be in a data model
Domain Models
Domain model simpler than full-blown
design class model
Easier for users to understand
Use it to educate users about basic OO
modeling
Reduces tendency for modeler to drill too
deep too quickly
Motivation: Domain Models
OO modeling lowers the representational
gap between our mental and software
models.
Use software class names in the domain
layer inspired from names in the domain
model, with objects having domain-
familiar information and responsibilities.
Lower Representational Gap with OO Modeling
UP Domain Model
Stakeholder's view of the noteworthy concepts in the domain.
Sale
A Payment in the Domain Model Payment 1
1 Pays-for
is a concept, but a Payment in date
the Design Model is a software amount
time
class. They are not the same
thing, but the former inspired the
inspires
naming and definition of the
objects
latter.
and
names in
This reduces the representational
gap.
Sale
This is one of the big ideas in Payment
object technology. 1 1 date: Date
Pays-for
amount: Money startTime: Time
UP Design Model
The object-oriented developer has taken inspiration from the real world domain
in creating software classes.
Sales
Cashier Custom er Ledger
LineItem
Item
description Worse
price
serial number
itemID
ProductDescription
Item
description Describes Better
price 1 * serial number
itemID
Guidelines : Description classes
When Are Description Classes Useful?
– Add a description class (for example,
ProductDescription) when:
There needs to be a description about an item or
service, independent of the current existence of
any examples of those items or services.
Deleting instances of things they describe (for
example, Item) results in a loss of information that
needs to be maintained, but was incorrectly
associated with the deleted thing.
It reduces redundant or duplicated information.
Guidelines: Associations
Associations
– A meaningful relationship between objects
– When knowledge of relationship needs to be preserved.
For example, do we need to remember what SalesLineItem
instances are associated with a Sale instance? Definitely, otherwise
it would not be possible to reconstruct a sale, print a receipt, or
calculate a sale total.
A Cashier may look up ProductDescriptions, but there is no need to
remember the fact of a particular Cashier looking up particular
ProductDescriptions.
– Consider including the following associations in a domain model:
Associations for which knowledge of the relationship needs to be
preserved for some duration ("need-to-remember" associations).
Associations derived from the Common Associations List.
Guidelines: Associations
Why Should We Avoid Adding Many Associations?
– Many lines on the diagram will obscure it with "visual noise.“
– focus on "need-to-remember" associations.
Associations are NOT
– A model of data flows
– DB foreign keys
– Instance variables
– SW object connections
it is a statement that a relationship is meaningful in a
purely conceptual perspective in the real domain.
– Many, but not all, associations will be implemented eventually
Applying UML: Association Notation
association
Records-current
Register Sale
1 1
Applying UML: Association Notation
-"reading direction arrow"
-it has no meaning except to indicate direction of
reading the association label
-often excluded
S to re S to c k s Ite m
1
*
z e ro o r m o re ;
* T
"m a n y "
1 ..*
T o n e o r m o re
1 . .4 0
T o n e to 4 0
5
T e x a c t ly 5
3, 5, 8
T e x a c t ly 3 , 5 , o r 8
Applying UML: Association Notation
Multiple Associations Between Two Classes
* Flies-to 1
Flight Airport
Flies-from
1 between classes.
*
Can have more than 1 association
A class can also have an association with itself! Can you
think of an example?
Applying UML: Association Notation
How to Find Associations with a Common
Associations List?
Common Associations List.
Category Examples
A is a transaction related to another transaction B CashPaymentSale
CancellationReservation
A is a product or service for a transaction (or line item) B ItemSalesLineItem (or Sale)
FlightReservation
A is known/logged/recorded/reported/captured in B SaleRegister
PieceSquare
ReservationFlightManifest
Common Associations List.
Category Examples
A is a member of B CashierStore
PlayerMonopolyGame
PilotAirline
A is next to B SalesLineItemSalesLineItem
SquareSquare
CityCity
Example: Associations in the
Domain Models
Transactions related to another
transaction Sale Paid-by CashPayment.
Line items of a transaction Sale Contains
SalesLineItem.
Product for a transaction (or line item)
SalesLineItem Records-sale-of Item.
NextGen POS partial domain model.
R e c o r d s -s a le -o f
P ro d u c t
Ledger P ro d u c t D e s c r ip tio n
C a ta lo g C o n ta in s
1 1 .. *
1 1
1
0 ..1 R e c o rd s -
U s e d -b y D e s c r ib e s
a c c o u n ts -
S a le s fo r * *
L in e Ite m S to r e
Ite m
S to c k s
1 1
* 1 ..*
1 .. *
1
C o n ta in e d -in Logs- H ouses
1 c o m p le te d 1 .. *
S a le * R e g is te r
C a p tu r e d - o n
0 ..1 1
1 1 Is -fo r 1
P a id - b y 3 W o r k s -o n
1 1 1
a ttr ib u te s
S a le
d a te T im e
/ to ta l : M o n e y d e r iv e d
a ttr ib u te
Applying UML: Attribute
Notation
SalesLineItem Item
0..1 Records-sale-of 1..* Each line item can record a
group of the same kind of items.
For example, 6 tofu packages.
SalesLineItem Item
0..1 Records-sale-of 1..*
/quantity
Cashier
Worse not a "data type" attribute
name
currentRegister
Cashier Register
Better 1 Uses 1
nameDon’t use an attribute in lieu of an association
number
Attributes
ItemID Address
Product 1 1 1 1 street1
OK id Store
Description street2
manufacturerCode
countryCode cityName
...
Product Store
Description
OK address : Address
itemId : ItemID
Do Not Use Attributes as Foreign Keys
Cashier
W orse a "sim ple" attribute, but being
nam e used as a foreign key to relate to
currentRegisterNum ber another object
Cashier Register
Better 1 W orks-on 1
nam e num ber
Modeling Quantities
Paym ent
not useful
am ount : Num ber
Product
Ledger Product Description
Catalog Contains
1 item ID
1..*
description
1 1
1 price
0..1 Records-
Used-by Describes
accounts-
Sales for * *
LineItem Store
Item
Stocks
quantity 1 nam e 1
address * 1..*
1..*
1
Contained-in Logs- Houses
1 com pleted 1.. *
Sale * Register
dateTim e Captured-on id
0..1 1
/ total
1
1 1
Is-for 3 W orks-on
Paid-by
1 1 1
am ountTendered id