Software Engineering (Cheng) Software Engineering (Cheng) 1 Object-Oriented Modeling One paradigm of development CSE 435: Software Engineering The OO Solution The OO model closely resembles the problem domain § Base your model on the objects in the problem domain Iteratively refine the high-level model until you have an implementation § Attempt to avoid big conceptual jumps during the development process CSE 435: Software Engineering
17
Embed
Object-Oriented Modelingcse435/Lectures/2019-Lectures/Notes/10...Object-Oriented Modeling One paradigm of development CSE 435: Software Engineering The OO Solution The OO model closely
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Software Engineering (Cheng)
Software Engineering (Cheng) 1
Object-Oriented Modeling
One paradigm of development
CSE 435: Software Engineering
The OO Solution
�The OO model closely resembles the problem domain§ Base your model on the objects in the
problem domain
� Iteratively refine the high-level model until you have an implementation§ Attempt to avoid big conceptual jumps
during the development process
CSE 435: Software Engineering
Software Engineering (Cheng)
Software Engineering (Cheng) 2
Objects
CSE 435: Software Engineering
J. Q. Public
VISA
123 4567 887766 998
J. Q. Public
Drivers LicenseState of Michigan
A-12345603-12-63
Person class
J. Q. Public
VISA
123 4567 887766 998
J. Q. Public
Drivers LicenseState of Michigan
A-12345603-12-63
Attributesnameageheightweight
Operationsmovechange-job
Attributesheightwidthid-number
Operationsissuechange
Person objects
Card objects Card class
abstracts to
Attributes and Operations
Software Engineering (Cheng)
Software Engineering (Cheng) 3
Characteristics of Objects
� Identity§ Discrete and distinguishable entities
� Classification§ Abstract entities with the same structure (attributes) and
behavior (operations) into classes
� Polymorphism§ The same operation may behave differently on different
classes
� Inheritance§ Sharing of attributes and operations based on a hierarchical
� All objects have identity and are distinguishable
� NOT objects§ Person§ Drivers license
CSE 435: Software Engineering
Classes
� Describes a group of objects with similar properties (attributes), common behavior (operations), common relationships to other classes, and common semantics
� Persono J. Q. Public
o Joe Smitho D. Q. Public
§ Cardo Credit card
o Drivers license
o Teller card
CSE 435: Software Engineering
Software Engineering (Cheng)
Software Engineering (Cheng) 5
Class Diagrams
CSE 435: Software Engineering
Class with attributes Objects with values
Objects have an identity
Do not explicitly list object identifiersSSN OK!
Class diagram Instance diagram
age: integer
Person D. Q. Public:
age= 32
Person J. Q. Public:
age= 35
Person
Examples
CSE 435: Software Engineering
Software Engineering (Cheng)
Software Engineering (Cheng) 6
Operations and Methods� Transformation that can be
applied to or performed by an object
� May have arguments
CSE 435: Software Engineering
Object Notation - Summary
CSE 435: Software Engineering
Software Engineering (Cheng)
Software Engineering (Cheng) 7
Associations
� Conceptual connection between classes§ A credit card is issued-by a bank
§ A person works-for a company
CSE 435: Software Engineering
J.Q. Public:
Age=35
Person Michigan State Univ:Company
Works-for
Class diagrams
Instance diagram
Credit Card BankIssued-by
Person CompanyWorks-for
Associations are Bi-directional
� There is no direction implied in an association (Rumbaugh - OMT)
CSE 435: Software Engineering
Countryname
Drivers-licenselic.-number: integer
Personname
Cityname
Has-capital
Is-issued
Software Engineering (Cheng)
Software Engineering (Cheng) 8
Associations Have Direction
� Unified adds a direction indicator§ Inconsistently used
CSE 435: Software Engineering
Countryname
Drivers-licenselic.-number: integer
Personname
Cityname
Has-capital
Is-issued
Multiplicity
�One object can be related to many objects through the same association
CSE 435: Software Engineering
One person holds one credit card
One person can hold zero or more credit cards
name: String
Person
card-number: integer
Credit-cardHolds
name: String
Person
card-number: integer
Credit-cardHolds 0..*
Software Engineering (Cheng)
Software Engineering (Cheng) 9
Multiplicity (Cont.)
CSE 435: Software Engineering
•One person can hold zero or more credit cards (0..*) •Each card has zero or one holder (0..1)
Holds
Holds
name: Stringage: integer
Person
card-number: integer
Credit-cardHolds 0..*0..1
:JQPublic:Person
name= J. Q. Publicage=35
:DQPublic:Person
name= D. Q. Publicage=32
card-number=123 456 789
Card789:Credit-Card
card-number=111 222 333
Card123:Credit-Cardcard-number=444 555 666
Card456:Credit-Card
Higher order associations
� Ternary association§ Project, language, person
� Seldom needed (and should be avoided)
CSE 435: Software Engineering
Language
Person
Project1..*
1..*
1..*
J. Q. Public:PersonAge=35
Compiler: ProjectC++ :Language
TicTacToe:ProjectLISP:Language
Note: hexagons should berectangles to represent instances
Software Engineering (Cheng)
Software Engineering (Cheng) 10
Link Attributes
� Associations can have properties the same way objects have properties
CSE 435: Software Engineering
How to represent salary and job title?
Use a link attribute!
name: Stringage: integerSSN: integer
address: String
Person
name: Stringaddress: String
CompanyWorks-for0..*
name: Stringage: integerSSN: integer
address: String
Person
name: Stringaddress: String
CompanyWorks-for0..*
salary: integerjob-title: String
Folding Link Attributes
CSE 435: Software Engineering
Why not this?
Salary and job title are properties of the job notthe person
In this case, a link attribute is the only solution
name: Stringage: integerSSN: integer
address: Stringsalary: integerjob-title: String
Person
name: Stringaddress: String
CompanyWorks-for0..*
name: Stringage: integerSSN: integer
address: String
Person
name: Stringaddress: String
CompanyWorks-for0..*
salary: integerjob-title: String
0..*
Software Engineering (Cheng)
Software Engineering (Cheng) 11
Role Names
�Attach names to the ends of an association to clarify its meaning
CSE 435: Software Engineering
name: Stringage: integerSSN: integer
address: String
Person
name: Stringaddress: String
CompanyWorks-for0..* 0..*
salary: integerjob-title: String
employeremployeeboss
workerManages0..*
0..1
Aggregation
�A special association, the is-part-of association§ A sentence is part of a paragraph (a
paragraph consists of sentences)§ A paragraph is part of a document (a
document consists of paragraphs)
CSE 435: Software Engineering Aggregation symbol
Document Paragraph Sentence0..* 0..*
Software Engineering (Cheng)
Software Engineering (Cheng) 12
Aggregation (Cont.)
�Often used in parts explosion
CSE 435: Software Engineering
Car
Wheel Body Gearbox Engine
Door Hood Trunk Piston Valve Crankshaft
0..*1..* 1..*
4
Generalization and Inheritance
� The is-a association§ Cards have many
properties in common
§ Generalize the common properties to a separate class, the base-card
§ Let all cards inherit from this class, all cards is-a base-card (plus possibly something more)
CSE 435: Software Engineering
issue()revoke()
height: integerwidth: integer
thickness: integerid-number: integer
Card
expire()
class: vehicleissued: dateexpires: date
Drivers License
expire()
issued: dateexpires: date
ID Card
validate()
credit-limit: integerissued: date
Credit Card
Software Engineering (Cheng)
Software Engineering (Cheng) 13
name
City
name
Airline
namelicense
Pilot
name
Passenger
heat()clean()
name
Airport
cancel()delay()
dateflight #
Flight
heat()refuel()clean()
modelserial #
hours flown
Plane
reserve()
locationSeat
Based-In 0..*
Departs
Works-for
Arrives Used-For
Certified-On
Owns
Located-In
0..*
OffersPilots
Confirmed-for
0..*
0..*
0..*
1..*
0..*
0..*0..*
0..*
30..*
Example
Aggregation Versus Association
� Can you use the phrase is-part-of or is-made-of
� Are operations automatically applied to the parts (for example, move) - aggregation
� Not clear what it should be……
CSE 435: Software Engineering
Company DepartmentDivision
Person
0..*Works-for
0..* 0..*
Software Engineering (Cheng)
Software Engineering (Cheng) 14
Aggregation Versus Inheritance
� Do not confuse the is-a relation (inheritance) with the is-part-of relation (aggregation)
� Use inheritance for special cases of a general concept
� Use aggregation for parts explosion
CSE 435: Software Engineering
Car
Wheel
Body
Gearbox
Engine
4
Minivan Compact Jeep
Roll Bar
Recursive Aggregates� A recursive aggregate contains (directly or indirectly) an instance of
the same kind of aggregate
CSE 435: Software Engineering
Program
SimpleStatement
CompoundStatement
Block0..*
Software Engineering (Cheng)
Software Engineering (Cheng) 15
Class diagram Metamodel I
CSE 435: Software EngineeringEclipse.org
Class diagram Metamodel II
CSE 435: Software Engineering Science direct
Software Engineering (Cheng)
Software Engineering (Cheng) 16
Use Case Metamodel I
CSE 435: Software EngineeringImage: Science Direct: ``Visual Modeling for Software Intensive Systems, Kooper et al, 2006.
uu: use case association relationship_i: includes_e: extends_g: generalization