Descriptive Attributes

Advanced Object-Oriented Analysis & Design
Dr. M.E. Fayad, Professor
Computer Engineering Department, Room #283I
College of Engineering
San José State University
One Washington Square
San José, CA 95192-0180
http://www.engr.sjsu.edu/~fayad
2003
SJSU -- CmpE
L10-S1
Object Identification- 2
Lesson 10:
Object Identification - 2
2
2003
SJSU – CmpE --
M.E. Fayad
L10-S2
Object Identification- 2
Lesson Objectives
Objectives
2003
+ Learn how to identify:
Associations and aggregations
Attributes
Behaviors
Inheritance
+ Understand how to use the following approaches:
Use Case
CRC
Questioning Techniques
+ Understand how to refine objects and associations
+ Learn how to define responsibility & collaborations
+ Learn how to eliminate unnecessary classes,
associations, and attributes
SJSU – CmpE --
M.E. Fayad
L10-S3
3
Object Identification- 2
Automated Teller Machine (ATM)
Stop bothering me!
I told you I don’t have
any money!
4
2003
SJSU – CmpE --
M.E. Fayad
L10-S4
Object Identification- 2
Actors
Customer
Automated
Teller
Machine
Bank System
ATM Operator
In Use Cases, Everything that interacts with the system will be
modeled as an actor, such as persons as well as machines.
2003
SJSU – CmpE --
M.E. Fayad
L10-S5
5
Object Identification- 2
Use Cases in ATM
Automated Teller Machine
Cash Withdrawal
Custome
r
Transfer Funds
Bank System
Deposit Funds
Balance Inquiry
6
System Start
ATM Operator
2003
SJSU – CmpE --
M.E. Fayad
L10-S6
Object Identification- 2
A Use Case Description: Cash Withdrawal
Use Case: Cash Withdrawal
 When a customer inserts a card in the ATM, the machine
reads the code from the card and checks if it is a valid
card. If the card is valid then the machine queries the
customer for a PIN number, else the card is ejected.
 When the machine matches customer coded in the PIN
number, the machine checks the validity of the PIN
number. If the PIN number is correct and matches the
card number then the machine asks for the desired
transaction the customer wishes to perform.
 When the customer selects cash withdrawal the machine
asks for the desired amount with a warning indicating
only multiple of $10 is allowed.
 When ....
2003
SJSU – CmpE --
M.E. Fayad
L10-S7
7
Object Identification- 2
Candidate Objects










2003
Account
ATM
Balance Inquiry
Bank Card Reader
Cancel Key
Cash Dispenser
Deposit Slot
Deposit Funds
Display Screen (Bank System
Interface)
Menu (Graphical User Interface)
SJSU – CmpE --
• User Message
• Numeric Keypad
• Numeric Input Key
• PIN
• Cash
• Receipt Printer
• Special Input Key
• Transfer Funds
• Cash Withdrawal
8
M.E. Fayad
L10-S8
Object Identification- 2
System Responsibilities & Collaborations

Define Responsibilities
– What are the goals of the system
– What must objects know to meet goals
– What steps must each object accomplish

Determine Collaborations
– Decompose responsibilities into interactions
among objects
– Define clients and servers
9
– Where should knowledge be held
2003
SJSU – CmpE --
M.E. Fayad
L10-S9
Object Identification- 2
CRC Cards


General
– Each class is described on a separate 3X5 or 4X6 card
The cards are known as CRC card. They have 3 sections:
– Class
– Responsibilities
– Collaborations
ATM (role)
Collaboration
Responsibility
Clients
Access & modify account balance Account
2003
SJSU – CmpE --
Server
Balance Inquiry
Deposit Transaction
Funds Transfer
Withdrawal Transaction
M.E. Fayad
L10-S10
10
Object Identification- 2
Other Techniques Help Refine Objects
 Generalize and Specialize objects
2003

Associate Objects

Recognize Accidental Objects

Challenging and Testing Objects

Ask Questions
SJSU – CmpE --
11
M.E. Fayad
L10-S11
Object Identification- 2
Explore Generalizations and Specializations

Generalization exposes commonalities

Exercise helps to identify new classes

Considerations for generalizations and
specializations
– Is it in the problem domain?
– Is it within the system’s responsibilities?
– Will there be inheritance?
2003
SJSU – CmpE --
12
M.E. Fayad
L10-S12
Object Identification- 2
Avoid Accidental Objects
 Essential
objects represent
genuine high-level abstractions
 Accidental
objects represent
qualitative judgments
2003
SJSU – CmpE --
M.E. Fayad
L10-S13
13
Object Identification- 2
Challenge Objects

Needed Remembrance -- attributes

Needed Behavior -- methods

Usually Multiple Services per Object

Usually More than One Object per Class
14
2003
SJSU – CmpE --
M.E. Fayad
L10-S14
Object Identification- 2
Other Object Tests

Uniformity Test
– Each instance must have the same set of characteristics
and be subject to the same rules - Car license

More than a Name Test
– Every object has attributes, if not it is probably an
attribute of another object -- home address

Or Test
– If inclusion criteria should not use “OR” in any
significant way -- driver’s license number or learner’s
permit number

More Than a List Test
– If inclusion criteria is only a list of instances -- decadent
foods includes croissant , cappuccino, chocolate pie, ice
cream.
2003
SJSU – CmpE --
M.E. Fayad
L10-S15
15
Object Identification- 2
Final Object Checklist
2003

Something universal and real for reuse

Should encapsulate some reasonably
complex behavior to justify existence

Methods that don’t make use of its current
class’s own attributes is probably
encapsulated in the wrong object.

Small and simple stable interfaces

Self sufficient and complete
SJSU – CmpE --
M.E. Fayad
16
L10-S16
Object Identification- 2
Questioning Techniques Help Elicit Domain Knowledge

Play Twenty Questions
– Is it animal, vegetable, or mineral?
– Does it have fur or feathers?
– Can it fly?

Define Boundaries
– What else?
– What about..?

Quantify Qualities as Attributes
– How fast?
– How hot?
2003
SJSU – CmpE --
17
M.E. Fayad
L10-S17
Object Identification- 2
Eliminating Unnecessary Associations
 Irrelevant
Associations
– outside problem domain
 Implementation
Associations
– Examples: concurrent process,
contains a list
 Associations
Between Eliminated
Classes
18
2003
SJSU – CmpE --
M.E. Fayad
L10-S18
Object Identification- 2
Eliminating Unnecessary Associations (cont’d)

Actions or Transient Events
– Examples: “Interacts with the Robot”, “ATM
accepts cash card.”

Ternary Associations
– Decompose as binary associations or rephrase
to one binary association.

Derived Associations
– These are redundant
– Examples: “Younger than ..” derived from age
2003
SJSU – CmpE --
M.E. Fayad
L10-S19
19
Object Identification- 2
Refine Association List



Choose meaningful association names
Add role names where appropriate
Add attributes or associations which qualify existing
associations
– Example: “Standard Oil of Ohio” uses state attribute to
qualify company name.


Specify one-to-many and many-to-many associations
in the class diagram
Add missing associations
– Not in problem statement
– from knowledge of application domain
2003
SJSU – CmpE --
M.E. Fayad
20
L10-S20
Object Identification- 2
Identifying Attributes

Attributes can be thought as a simple
association with a value which is not an object
– Examples: name, age, weight

Usually corresponding to nouns followed by
possessive phrases
– Examples: “color of the car”, “age of the donor”

Less likely to be fully described in the problem
statement
 Included in the class box diagram
 Not as relevant to the problem structure as
associations
2003
SJSU – CmpE --
M.E. Fayad
L10-S21
21
Object Identification- 2
Attribute Types

Descriptive Attributes

Naming Attributes

Referential Attributes
22
2003
SJSU – CmpE --
M.E. Fayad
L10-S22
Object Identification- 2
Descriptive Attributes
 Provide
facts intrinsic to each
instance of the object.
– Examples Account.balance, Cat.weight
– If the value of a descriptive attribute
changes, it means only that some aspect
of an instance has changed, but the
instance is still the same instance.
2003
SJSU – CmpE --
M.E. Fayad
L10-S23
23
Object Identification- 2
Naming Attributes

Are used to name or label instances.
– Examples:Account.number, Flight.number
– Names are typically somewhat arbitrary
– Naming attributes are frequently used as an
identifier or part of an identifier.
– If the vale of a naming attribute changes, it means
only that a new name has been given to exactly
the same instance
2003
SJSU – CmpE --
M.E. Fayad
L10-S24
24
Object Identification- 2
Referential Attributes
 Are
used to tie an instance of one
object to an instance of another.
– Examples: Cat.owner name indicates which person
owns this cat.
– If the vale of a referential attribute changes, it means
that different instances are now being associated.
25
2003
SJSU – CmpE --
M.E. Fayad
L10-S25
Object Identification- 2
Rules of Attributes


First Rule:
One instance of an object or a class has exactly one value
for each attribute at any given time.
OK
Not OK
Not OK
Employee
M/S
Phone
M. Fayad
171
4356
G. Smee
23
3456
7890
L. Harris
1234
[Shlaer-Mellor 90]
2003
SJSU – CmpE --
M.E. Fayad
L10-S26
26
Object Identification- 2
Rules of Attributes (cont’d)

Second Rule:

An attribute must contain no internal
structure

Examples:
– Age, balance, size are all OK.
– A name consists of first name, middle initial, and
last name (Not OK)
– An address contains house number, street name,
city, state, zip code, and country name (Not OK)
2003
SJSU – CmpE --
M.E. Fayad
L10-S27
27
Object Identification- 2
Rules of Attributes (cont’d)


Third Rule:
When an object has a compound identifier -- that is, one
made up of two or more attributes -- every attribute that is
not part of the identifier represents a characteristic of the
entire object.
Juice Transfer
storage Tank ID
cooking Tank ID
gallons
plannedTime
2003
The juice Transfer.gallons attribute
means that the number of gallons
transferred from the storage tank to
the cooking tank and not the number
of gallons in either the storage tank or
the cooking tank.
SJSU – CmpE --
M.E. Fayad
L10-S28
28
Object Identification- 2
Rules of Attributes (cont’d)


Fourth Rule:
Each attribute is not part of an identifier that represents a
characteristic of the instance named by the identifier and
a characteristic of some other non-identifier attribute
Batch
batch ID
recipe ID
gallons
cookingTime
2003
The Batch.cookingTime attribute must
represent the actual time the batch was
cooked, and not the cooking time
specified by the recipe
29
SJSU – CmpE --
M.E. Fayad
L10-S29
Object Identification- 2
Eliminating Unnecessary Attributes

Do not keep attributes that have an object
as a value, they are associations

Do not keep attributes that depend on a
context, these are qualifiers for associations

If an object can have more that one name,
then the name qualifies an association of
that object with another
30
2003
SJSU – CmpE --
M.E. Fayad
L10-S30
Object Identification- 2
Eliminating Unnecessary Attributes (cont’d)
2003

Do not put attributes of the association in one or
the other of the objects involved in the association,
put the attributes in the association itself

Eliminate attributes which are only used internally
by the object

Keep initial analysis of attributes at a high level

Eliminate attributes which are too low level

Attributes which are in some instances of a class,
but not in others, indicate that the class should be
split into two or more classes
SJSU – CmpE --
M.E. Fayad
L10-S31
31
Object Identification- 2
Identifying Inheritance

Identify classes which share common information

Three basic approaches:

Bottom Up
– Look for classes with repeated associations, attributes or behaviors,
and group together into higher level classes
– This approach is easier for inexperienced modelers

Top Down
– Look for Noun phrases describing different kinds of things in the
problem statement.
– Examples: Family cars, Sports cars, Luxury cars

Combination of the two approaches works the best.
32
– Do Top Down when doing initial analysis
– Identify repeated information in the late passes.
2003
SJSU – CmpE --
M.E. Fayad
L10-S32
Object Identification- 2
Identifying Inheritance (cont’d)

Always use the “AKO” test
– All inheritance specifications should identify one or
more classes which are “A Kind Of” a higher level
class.
– NEVER use inheritance for “Part / Part-of”
relationships

Use multiple inheritance only when necessary
– Some object-oriented programming languages do not
even have this feature.
33
2003
SJSU – CmpE --
M.E. Fayad
L10-S33
Object Identification- 2
Identifying Behaviors

Done in latest stages

List of behaviors can become large and get detailed
quickly.

May correspond to queries about attributes and
associations
– Operations to read or write attribute or association value
– Examples: user name, property value, etc.

May correspond to events or activities
– Examples: begin simulation, alert, calculate balance,
computer distance
2003
SJSU – CmpE --
M.E. Fayad
L10-S34
34
Object Identification- 2
Experience and Domain Knowledge

Good objects come from language of domain
– If you are not an expert -- consult users

Experience will tune decisions
– Slowly at first
– Much faster later
Just do it!
2003
SJSU – CmpE --
M.E. Fayad
35
L10-S35
Object Identification- 2
Discussion Questions
2003
•
Define with examples: CRC cards, associate objects,
referential attributes.
•
Describe the third norm for testing objects
•
What are the differences between essential objects and
accidental objects
•
What are questioning techniques and their purposes?
•
Describe how do you identify: associations , aggregations,
inheritance, attributes, and behaviors
•
Describe how to refine objects and associations
•
Explain how to define responsibilities and collaborations
SJSU – CmpE --
M.E. Fayad
L10-S36
36
Object Identification- 2
Questions for the Next Lecture
Define:
– Type
– Type vs. Class
– Type specifications
– Interface
– Signatures
– Elements of behavior
37
2003
SJSU – CmpE --
M.E. Fayad
L10-S37
Object Identification- 2