UML Class Diagrams

Download Report

Transcript UML Class Diagrams

Structural Modeling
Class Diagrams and Object Diagrams
Association
Generalization and Specfication
Aggregation and Composition
Nattapong Songneam
http://www.siam2dev.com
[email protected]
Lecture Outline
•
•
•
•
•
•
Structural Modeling
Class Diagrams and Object Diagrams
Association
Generalization และ Classification
Aggregation และ Composition
Models
Structural Modeling
What is structural modeling?
• Structural model
• มุมมองของระบบทีเ่ น้ นโครงสร้ างของวัตถุ รวมทั้งคลาสของวัตถุ
(Class) ความสั มพันธ์ ระหว่ างคลาส (Relationship) แอททริบิวต์
(Attribute) และ โอเปอเรชัน (operation)
Structural Modeling: Core Elements
Construct Description
a description of a set of objects
that share the same attributes,
operations, methods, relationships
and semantics.
a named set of operations that
interface
characterize the behavior of an
element.
component a modular, replaceable and
significant part of a system that
packages implementation and
exposes a set of interfaces.
a run-time physical object that
node
represents a computational
resource.
Syntax
class
«interface»
Structural Modeling: Core Elements (cont’d)
Construct Description
constraint¹
Syntax
a semantic condition or restriction.
{constraint}
¹ An extension mechanism useful for specifying structural elements.
Structural Modeling: Core Relationships
Construct
Description
a relationship between two or more
classifiers that involves connections
among their instances.
A special form of association that
aggregation
specifies a whole-part relationship
between the aggregate (whole) and
the component part.
generalization a taxonomic relationship between a
more general and a more specific
element.
a relationship between two modeling
dependency
elements, in which a change to one
modeling element (the independent
element) will affect the other modeling
element (the dependent element).
association
Syntax
Structural Modeling: Core Relationships (cont’d)
Construct
Description
realization
a relationship between a specification
and its implementation.
Syntax
Structural Diagrams
• ประเภทของ Structural Diagrams
• static structural diagrams
• class diagram
• object diagram
• implementation diagrams
• component diagram
• deployment diagram
Static Structural Diagrams
Static Structural Diagrams
• แสดง graph ของคลาสทีเ่ ชื่อมต่ อกันด้ วย static relationships
• ประเภทของ Static Structural Diagrams
• class diagram : classifier view
• object instance diagram : instance view
Class Diagrams
• Class diagrams
• แสดงรายละเอียดของ Class และความสั มพันธ์ ระหว่ าง Class
ในมุมมองแบบ logical view
• องค์ ประกอบของ UML class diagrams ได้ แก่
•
•
•
•
Class, โครงสร้ างของ Class และพฤติกรรมของ Class
ตัวบ่ งชี้ Multiplicity และ navigation
ชื่อของ Role
ความสั มพันธ์ แบบ Association, aggregation, dependency,
และ inheritance
Classes in UML
• เขียนได้ 2 รู ปแบบ
Class name
Person
Attributes
attribute name : type
Operations
operation name(parameter : type)
: result type
Person
- TaxIDNo : String
- Name : String
+ Income : double
+ TaxPaid : Boolean
+ calcTax()
+ calcTaxBal()
UML Syntax for Attributes
• visibility name : type
+ id : String
• visibility: public (+), protected (#), private (-)
• การตีความไม่ ขนึ้ กับ programming language dependent
• name : เป็ น string
• type : ประเภทของข้ อมูล ไม่ ขนึ้ กับภาษา
UML syntax for operations
• visibility name (parameter list) : return-type-expression
+ assignAgent (a : Agent) : Boolean
• visibility: public (+), protected (#), private (-)
• การตีความไม่ ขนึ้ กับ programming language
• name : string
• parameter list : arguments
• return-type-expression : ประเภทของค่ าที่ return ไม่ ขนึ้ กับ
ภาษา
Attributes – A Rule
• การกาหนด attributes ควรทาให้ simple
• ค่ าทีเ่ ก็บอยู่ใน attributes ไม่ ควรเป็ นวัตถุ (Object)
• แต่ ควรสร้ างคลาส (class) ขึน้ และแสดงความสั มพันธ์ ระหว่ าง
วัตถุด้วย association
• ไม่ ควรสร้ างความสั มพันธ์ ระหว่ าง 2 คลาส โดยใช้
“foreign key” attribute
• แต่ ใช้ association
Object Instance Diagrams
• class diagram
• แสดงชื่อ (name), โครงสร้ าง (structure) และ พฤติกรรม
(behaviour) ของประเภทของวัตถุ (object)
• object instance diagram
• แสดงวัตถุทสี่ ร้ างจากคลาส
• ความแตกต่ างระหว่ างทั้ง 2 diagram เปรียบเทียบได้ กบั ความ
แตกต่ างระหว่ างโครงสร้ างของตารางใน relational database และ
ค่ าทีถ่ ูกเก็บอยู่ภายในตาราง
Objects in UML
• เขียนได้ 2 รู ปแบบ
Object name
Tim:Person
Attributes
attribute name : type = value
Same Operations
for all instances of a class
Tim : Person
TaxIDNo=“23003”
Name=“TimLim”
Income=“30000.00”
TaxPaid = FALSE
calcTax()
calcTaxBal()
An Object Instance Diagram
Sydney:City
London:City
Name=Sydney
Country=Australia
Population= 3,536,000
Name=London
Country=UK
Population= 2,324,320
New York :City
Name=New York
Country=USA
Population= 5,734,012
C1 :Circle
R = 10
Classes and Objects
City
Name : String = default
Country : String = default
Population : integer = default
setName (s : String = deault)
setPopulation(p : integer = default)
<<instanceOf>>
<<instanceOf>>
<<instanceOf>>
London : City
New York : City
Sydney : City
Name = London
Country = UK
Population =2,324,320
Name = New York
Country = USA
Name = Sydney
Country = Australia
Population =5,734,012
Population =3,536,000
Class Diagrams
•
•
•
•
Associations
Generalization
Generalization และ Classification
Aggregation
Association
• ความสั มพันธ์ (Relationship) ระหว่ าง instances ของ classes
association
name
name direction
Order
dateReceived
isPrepaid
number : String *
price : Money
Customer
issued by
1
name
address
creditRating( )
dispatch( )
Customer may make
several orders
Order comes from one
customer
Associations
• คลาสมากกว่ า 1 คลาส สั มพันธ์ กนั ด้ วย “associations”
• Association
• เทียบได้ กบั ER relationship ที่เชื่อมโยงความสั มพันธ์ ระหว่ าง
คลาส และแสดง จุดเชื่อมโยง (“links”) ระหว่ าง วัตถุทสี่ ร้ างขึน้
จากคลาส
Naming associations
• การตั้งชื่อ association
• หลีกเลีย่ งชื่อที่ไม่ สื่อความหมาย
• associated_with, has, is_related_to
• มักขึน้ ต้ นด้ วยคากิริยา เช่ น
• works_for, owns , issued by
• มักตั้งชื่อในกรณีที่มอง Association จากซ้ ายไปขวา หรือ จากบนลง
ล่างของ diagram
Associations on Class Diagrams
Person
Name
Address
Telephone
Car
Owns
Manufacturer
Model
Registration
Links
• วัตถุแต่ ละวัตถุ สามารถเชื่อมโยงกันได้ โดยใช้ “links”
• A link
• เป็ น instance ของ association
• หมายเหตุ
• an association สามารถดารงอยู่ได้ ถึงแม้ ว่าจะไม่ มี instance
(links) ของ assocรation ดังกล่าว เช่ นเดียวกับ คลาสที่สามารถ
ดารงอยู่ได้ ถึงแม้ ว่าจะไม่ มีวตั ถุใดๆ ถูกสร้ างขึน้ จากคลาสนั้นๆ
Objects & Links
You:Person
Me:Person
Name=Jane
Address=22 Holly Pl
Telephone=62312198
Name=Dennis
Address=41 High St
Telephone=62661734
Owns
Owns
Owns
Ours:Car
Mine:Car
Manufacturer=Mazda
Model=626
Registration=YYX391
Manufacturer=Saab
Model=95
Registration=YRT833
Association Multiplicity
• multiplicity
• หมายถึง การพิจารณาจานวน instances (objects) ของคลาสหนึ่ง
ที่สามารถเชื่อมโยงกับ instance (object) ของคลาสทีเ่ กีย่ วข้ อง
Order
dateReceived
isPrepaid
number : String
price : Money
dispatch( )
*
1
Customer
name
address
creditRating( )
Association Multiplicity
1
1..*
Class
exactly one
Class
one or more
* Class
many (zero or more)
2 ..4
0..1
Class
zero or one/at most one
Class
as specified
Example of Multiplicities
Student
*
*
University
Body
Heart
2-3
Bicycle
*
1..*
Account
*
Wheel
1..*
*
Owner
Associations, Objects & Classes
• สาหรับ association ใดๆระหว่ าง 2 วัตถุ สามารถมี link ได้
ตั้งแต่ 0 ถึง 1 link
• ระหว่ าง 2 วัตถุ สามารถได้ มีมากว่ า 1 association
(Multiple Assoications) แต่ association เหล่ านั้นจะต้ องมี
ความแตกต่ างในด้ านความหมายของ association
• Multiple associations ระหว่ างคลาสกาหนดให้ ตั้งชื่อ
associations
Roles
• role
• หมายถึง ชื่อที่กาหนดให้ กบั ด้ านปลายของ association ซึ่งระบุ
วิธีการในการที่คลาสมีส่วนร่ วมใน association
• ปกติชื่อของ role มักเกิดขึน้ เป็ นคู่ (เช่ นทั้งสองด้ านของ
association จะมีชื่อของ role
• บังคับให้ กาหนดชื่อของ Role กับ associations แบบ
reflexive (Reflexive associations)
Role names
• Role ระบุ ชื่อให้ กบั ด้ านปลายของ association
Company
Name
Address
Works for
*
employer employee
Role names
Person
Name
Insurance no.
Address
Association Names & Roles
• association อาจมีชื่อได้ เช่ นเดียวกับชื่อของ role ที่กาหนด
ให้ กบั ด้ านปลายของความสั มพันธ์
• ถ้ ามีการตั้งชื่อ association แล้ วมักไม่ มีการตั้งชื่อ role อีก
• ถ้ ามีการตั้งชื่อที่ปลายของ association (ได้ แก่ roles) แล้ ว
มักไม่ มีการตั้งชื่อ association อีก
Role names
• บังคับให้ กาหนดชื่อของ Role ให้ กบั ทีเ่ กิดขึน้ ระหว่ าง link ของ
วัตถุที่สร้ างจากคลาสเดียวกัน
Person
Manager
Supervises
Name
Insurance no.
Address
Salesperson
A Reflexive Association
• association ที่สร้ างจากคลาสเดียวกัน
Person
Name
Address
Telephone
* Child
Parent
2
Role name
Ternary Associations
• A ternary association
• เป็ น assocation ทีป่ ระกอบด้ วย 3 คลาส
• เช่ นเดียวกับแนวคิดของ ternary relationship ในER
modelling และแนวคิดคล้ ายๆ กัน
• นาเสนอโดยใช้ รูปสี่ เหลีย่ ขนมเปี ยกปูน เชื่อมโยงกับคลาสที่
เกีย่ วข้ อง
Ternary Associations
Vendor
Customer
Product
Sale
Ternary association
Ternary Association Multiplicity
• multiplicity ของ ternary associations
• ซับซ้ อนกกว่ า binary และ unary associations
• มักเป็ น แบบ “many” สาหรับคลาสทีเ่ กีย่ วข้ อง participating
N-ary Associations
• โดยทัว่ ไปแล้ ว association อาจเชื่อมโยงกับคลาสจานวน
เท่ าใดก็ได้
• ถ้ าเชื่อมโยงคลาสมากกว่ า 2 คลาสขึน้ ไป (รวมทั้ง ternary)
เรียกว่ า “n-ary” associations
• แต่ Associations ที่เชื่อมโยงมากกว่ า 0 คลาสมักหาได้ ยาก
Summary: Basic notation for associations
mult1
Class B
Association name
role_B
mult2
Class B
role_A
• ตัวอย่ างเช่ น
Order
1
contains
*
line items
Order Line
Association Classes
• Link จะถูกพิจารณา เช่ นเดียวกับการทีว่ ตั ถุถูกพิจารณาจาก
attribute ของวัตถุน้ัน
• attribute ควรผูกติดอยู่กบั association โดยใช้ association
class มากกว่ าทีจ่ ะเป็ นของวัตถุทเี่ ชื่อมโยง เมื่อใดก็ตามที่
whenever it exists or has meaning when the link itself
exists (rather than just the objects linked) - มักเกิดขึน้
บ่ อยกับ many-to-many associations
Association Classes
Student
ID
Name
Address
Telephone
Enrolment
*
Subject
Code
* Name
Credit
Result
Mark
Association class
Association Classes
• association class สามารถมีส่วนร่ วมใน associations อืน่ ๆ
เช่ นเดียวกับทีค่ ลาสปกติสามารถมีได้
Association Classes
Customer
Name
Address
Telephone
0..1
Claim
*
Purchase
Guarantee
Date
Length
* Conditions
Product
* Number
Name
Price
Association class
Qualified Associations
• qualified association
• หมายถึง association ทีถ่ ูกทาให้ ชัดเจนโดย attribute ที่
เรียกว่ า qualifier
• พิจารณา qualified association เช่ นเดียวกับแนวคิดของ
weak entity type ใน ER
Qualified Associations
Unqualified
Golf_Course
Name
1
Location
Hole
Number
* Length
Par
Qualified
Golf_Course
Name
Location
Hole
0..1 Length
HoleNumber
1
Par
Qualified Association
Tournament
Prize
Year
Position
0..1
Qualified association
Company Function
Organization
Person
*
ABC Inc.
ABC Inc.
ABC Inc.
ABC Inc.
ABC Inc.
XYZ Inc.
President
Vice President Finances
Member of board
Member of board
Member of board
President
Roger Rabbit
Joe Savemoney
John Walker
Susi Sanssouci
Karl Eichbaum
Donald Duck
Class Diagrams: Hints
• class หนึ่งสามารถเป็ นส่ วนร่ วมได้ ในหลาย diagrams
• Diagrams ควรจะแสดงแง่ มุมเฉพาะด้ าน
• จานวนคลาสไม่ มากเกินไป
• จานวน associations ไม่ มากเกินไป
• ซ่ อน attributes และ operations ที่ไม่ จาเป็ นต้ องแสดง
• อาจต้ องมีการสร้ าง diagram ซ้าๆ กันหลายรอบ
Difference between attributes and associations
• Conceptual perspective
• ไม่ แตกต่ างกันมากนัก
• Attributes เก็บค่ าเดียว (single-valued)
• Specification/implementation perspective
• Attribute เก็บค่ า (Value) ไม่ ใช่ ตัวอ้ างอิง (References)
• ไม่ มีการ share ส่ วนของ attribute values ในระหว่ าง
instances ที่สร้ างจากคลาสเดียวกัน
• Often: Stores simple objects
• Numbers, Strings, Dates, Money objects
Class diagrams (cont.)
•
•
•
•
Associations
Generalization
Generalization และ Classification
Aggregation
Generalization
• แนวคิดหลักเชิงวัตถุ
• Generalization จัดการ classes ให้ อยู่ในรู ปของโครงสร้ าง
ลาดับชั้น (class Hierarchy) ขึน้ กับ similarities และ
differences
• เราเรียกคลาสทีอ่ ยู่ในระดับทีส่ ู งกว่ าของ classes hierarchy
ว่ า “superclasses” และทีอ่ ยู่ในระดับตา่ กว่ าว่ า
“subclasses”
• เป็ น “kind-of” relationship
Inheritance and Polymorphism
• “subclass” รับถ่ ายทอดคุณสมบัติ (inherits)อันได้ แก่
attributes, operations และassociations มาจาก
“superclass” ของตัวเอง
• แต่ อย่ างไรก็ตาม ถ้ า attribute หรือ operation ของ
“superclass” ถูกกาหนด่ ให้ ค่าใหม่ ใน “subclass” จะเป็ น
การ “overrides” คานิยามทีก่ าหนดไว้ ใน “superclass” นาสู่ แนวคิดของ polymorphism
Superclasses and Subclasses
• “Superclass” มีคานิยาม attributes, operations และ
associations ร่ วมกันกับ “subclasses” ของคลาสนั้นๆ
• “Subclasses” มี attributes, operations และ associations
เฉพาะเป็ นของตัวเอง โดยเลือกทีจ่ ะกาหนดนิยามใหม่ ให้ กบั
attribute, operation หรือ relationship ที่รับมาจาก
“superclass” หรือไม่ กไ็ ด้
A Generalization Hierarchy
Superclass
Ellipse
Major_Axis
Minor_Axis
Geometric_Figure
X_Position
Y_Position
Circle
Radius
Subclasses
Rectangle
Width
Height
Single & Multiple Inheritance
• generalizations มักเกิดใน class hierarchies ที่แต่ ละ
“subclass” มีเพียง 1 “superclass” - เรียกว่ า “single
inheritance”
• แต่ มีบางสถานการณ์ ที่ “subclass” อาจมีได้ มากกว่ า 1
“superclass” - เรียกว่ า “multiple inheritance”
Multiple Inheritance
Employee
GeneralStaff ProfStaff
FullTime
Academic
PartTime
Subclass with
two superclasses
Multiple Inheritance
Vehicle
Furniture
Wheelchair
Specialization
• Specialization
• เป็ นกระบวนการย้ อนกลับของ generalization แต่ ให้ ผลเช่ นเดิม
แตกต่ างกันทีจ่ ุดเริ่มต้ นเท่ านั้น
• Generalization เป็ นการค้ นหาคุณลักษณะร่ วมกัน ของ
(sub)classes
• Specialization เป็ นการแยก และค้ นหาคุณลักษณะพิเศษของ
(super)classes เพือ่ ให้ ได้ subclasses
Class diagrams (cont.)
•
•
•
•
Associations
Generalization
Generalization และ Classification
Aggregation
Generalization and Classification (= is_a?)
1. Shep is a Border Collie.
2. A Border Collie is a Dog.
3. Dogs are Animals
4. A Border Collie is a Breed.
5. Dog is a Species
1+2: Shep is a Dog
1+2+3: Shep is a animal
1+4: Shep is a breed?????
2+5: A Border Collie is a Species?????
Generalization is transitive (is kind of)
Classification is not transitive (is instance of)
Class diagrams (cont.)
•
•
•
•
Associations
Generalization
Generalization และ Classification
Aggregation
Aggregation
• Aggregation
• เป็ นประเภทหนึ่งของ association แต่ มีคุณสมบัตบิ างอย่ าง
นอกเหนือจาก association แบบปกติ
• เป็ นวัตถุทมี่ ี วัตถุอนื่ ๆ เป็ นส่ วนองค์ ประกอบ
• เป็ น “part-of” relationship
Notation for aggregation
Class A
Class A
หรือ
Class B
Class C
Class B
Class C
Example : Aggregation
1
Book
1
Aggregation
1
1
*
Chapter
Front
1
Title
1
0..1
End
1
0..1
Preface
1
*
Appendix
1
0..1
Index
Example : Aggregation
Company
* Unit
* Department
*
works for
*
Employee
Group
Aggregation
• มีได้ 2 รู ปแบบ Aggregation และ Composition
• Aggregation
• วัตถุมี วัตถุอนื่ ๆ เป็ นองค์ ประกอบย่ อย
• เช่ น Car มี engine และwheels เป็ นองค์ ประกอบ
• Composition
• วัตถุมีวตั ถุอนื่ ๆ เป็ นองค์ ประกอบย่ อยทั้งหมด
• การส่ ง message ติดต่ อกับวัตถุทเี่ ป็ นองค์ ประกอบรวม อาจมีผล
กับองค์ ประกอบทั้งหมด
• ถ้ า delete วัตถุทเี่ ป็ นองค์ ประกอบรวม ส่ วนย่ อยจะต้ องถูก delete
ทิง้ ไปด้ วย
Aggregation & Composition
• เป็ นความสั มพันธ์ แบบ transitive
• ถ้ าวัตถุ A เป็ นส่ วนหนึ่งของ B และ B เป็ นส่ วนหนึ่งของ C แล้ว
A เป็ นส่ วนหนึ่งของ
• เช่ น ถ้ าทีจ่ ับประตูเป็ นส่ วนหนึ่งของ ประตู ประตูเป็ นส่ วนหนึ่ง
ของรถยนต์ แล้ว ทีจ่ ับประตูเป็ นส่ วนหนึ่งของรถยนต์
• เป็ นความสั มพันธ์ แบบ Anti-symmetric
• วัตถุใดๆ อาจไม่ จาเป็ นต้ องเป็ นส่ วนประกอบของตัวเองทั้ง
ทางตรงและทางอ้อม
• เช่ น ถ้ าประตูเป็ นส่ วนหนึ่งของรถยนต์ แต่ รถยนต์ ไม่ จัดเป็ นส่ วน
หนึ่งของประตู
Aggregation and composition
Polygon
Aggregation
1
1
Composition
1
3..*
Point
Graphics
Bundle
color
texture
Association and Aggregation
• Question : Association หรือ Aggregation?
• Answer : เป็ น Aggregation
• ถ้ าความสั มพันธ์ เป็ น “part of”
• Operation ทีเ่ กิดกับวัตถุหนึ่งมีผลกระทบกับอีกวัตถุหนึ่ง
ในฐานะทีเ่ ป็ นองค์ ประกอบของอีกวัตถุหนึ่ง
Generalization and Aggregation
• Question : Generalization หรือ Aggregation ?
• Answer : เป็ น Generalization
• ถ้ าความสั มพันธ์ เป็ น “kind of”
• ถ้ าความสั มพันธ์ แบบ “or”
• Answer : เป็ น Aggregation
• ถ้ าความสั มพันธ์ เป็ น “part of”
• ถ้ าความสั มพันธ์ แบบ “and”
Class Diagram - Example
•
•
•
•
•
•
•
•
A zoo consists of a set of cages.
Every cage is the home of at least 2 animals.
Cages are located besides each other.
Every cage has at most one left neighbor and at most
one right neighbor.
Animals can be reptiles, insects, and mammals.
Mammals are elephants, monkeys, and tigers.
Monkeys eat bananas.
Tigers prefer meat.
Class Diagram
ScheduleAlgorithm
RegistrationForm
RegistrationManager
addStudent(Course,StudentInfo)
name
numberCredits
open()
addStudent(StudentInfo)
Student
name
major
Professor
name
tenureStatus
Course
CourseOffering
location
open()
addStudent(StudentInfo)
Class Diagram: Notation Summary
(stereotype)
Classname
{abstract}
signature
attribute: Type
$class_attribute: Type
attribute: Type = Default_value
CompositeClassname
Association_name
1
{constraint}
operation {abstract}
operation (arg1:Type)
operation (arg1:Type): Type
$class_operation
*
attribute: Type
Role_name operation
Qualifier
Association
Classname
discriminators
association_attrib: Type
ComponentClassname
attribute: Type
SubClassname1
SubClassname2
attribute: Type
attribute: Type
operation
operation
operation
Class Diagram: Notation Summary (cont’d)
formal_arg
Parameterised
Instantiated
ClassName
Instantiates ClassName<actual_arg>
ClassName1{constraint}
Uitlity
attribute: Type
operation(arg:Type): Type
ClassName2
ClassName3
CategoryName
CategoryName
inheritance
association
instantiation
has by-value
+
#
null
/
public
protected
private
unspecified
derived
has by-reference
ternary
SubCategory1
dependency
ClassName: access
ClassName: access
Notes
SubCategory2
CategoryName
(Public Interface)
Models
Three Perspectives
• Conceptual (OOA)
• แสดงแนวคิดเกีย่ วกับขอบเขตของปัญหา
• ไม่ ขนึ้ กับ implementation
• Specification (OOD)
• โครงสร้ างทั่วไปของระบบ
• กาหนด Interfaces ของ software
• Implementation (OOP)
• โครงการของ implementation (classes)
Three Models
• Analysis Model
• Design Model
• Implementation Model
Summary
•
•
•
•
•
•
Structural Modeling
Class Diagrams and Object Diagrams
Association
Generalization และ Classification
Aggregation และ Composition
Models