Upload
nguyenthuy
View
262
Download
4
Embed Size (px)
Citation preview
37
บทท 5แผนภาพคลาส (Class Diagram )
จดประสงค
1. เพอใหนสตสามารถคนหาคลาสทมอยในระบบ2. เพอใหนสตสามารถใชแผนภาพคลาสนำาเสนอคลาสทมอยในระบบ3. เพอใหนสตสามารถแสดงความสมพนธของคลาสได
RelationshipClass diagram จดเปน Structural Model (Static
Model) คอ มมมองของระบบทเนนโครงสรางของวตถ รวมทงคลาสของวตถ (Class) ความสมพนธระหวางคลาส (Relationship) แอททรบวต (Attribute) และโอเปอเรชน (Operation) ความสมพนธทแสดงเปนความสมพนธเชงสถตย (คงท Static ) ไมใชความสมพนธทเกดขนเนองจากกจกรรม (Dynamic) จงไมสามารถมองเหนการเปลยนแปลงตางๆทเกดขน แมจะเกดเหตการณใดๆ
Class DiagramStatic relationship
เจาของบญชเปนเจาของบญชเงนฝากDynamic relationship
เจาของบญชฝากเงนเขาบญชเงนฝากเจาของบญชถอนเงนจากบญชเงนฝากเจาของบญชปรบปรงยอดบญชเงนฝาก
Class Diagram เปน Static relationship องคประกอบของ Class Diagram
Classโครงสรางของ Class พฤตกรรมของ Class
ตวบงช
38
Multiplicity Navigation
ชอของ Role ความสมพนธ
AssociationGeneralization (Inheritance)AggregationCompositionDependency
Class ใน Class Diagram
UML Syntax for Class Name
ชอ Class ไมมชองวาง และขนตนดวยตวพมพใหญ เชน Bank ถามมากกวา 1 คำาตวแรกของแตละคำาเปนตวพมพใหญ เชน
BankAccount
UML Syntax for AttributesVisibility Name : Type [ = คาเรมตน ]
Visibility ประกอบดวย+ (public) , - (private), # (protected)
Name คอ ชอ Attribute ไมมชองวาง ขนตนดวยตวพมพเลก
ตวแรกของคำาถดไปเปนตวพมพใหญเชน userID Type คอ ชนดขอมล (ขนกบแตละภาษา)
Primitive Type
39
ขอมลพนฐาน เชน integer, boolean Class Type
Attribute ของ Class หนงอาจมชนดเปน Class อนได
UML Syntax for OperationsVisibility Name(Parameter List : Type) : Return
type Visibility ประกอบดวย
+ (public) , - (private), # (protected)Name คอ ชอ เหมอนกบชอของ Attribute
แตเปนคำากรยา เชน withdrawMoney
Parameter List คอ รายการตวแปรหรอ Objects ทถกสง
เขาไปใน Operation (Method) เพอ ใชดำาเนนการอยางใดอยางหนง ( อาจไมมกได )
Type , Return type คอ ชนดขอมล เหมอน Attribute
( อาจไมมกได )
Visibilityprivate ( - )
มกใชกบ Attributes มากกวา Operations เหนไดภายในเฉพาะตว class ไมสามารถเหนได จากภายนอก การเขาถงจากภายนอกจะกระทำาผาน Operation ทเตรยมไว
public ( + )มกใชกบ Operations มากกวา Attributes มองเหนและ
เขาถงไดโดยตรงจากภายนอก
40
protected (#)สงวนไวสำาหรบการทำา Inheritance โดยเฉพาะโดยปกตจะ
เปนของ Super class เมอทำา inheritance แลว Attributes และ Operations
เหลานจะเปนไดทง Private หรอ Protect ซงขนอยกบภาษาทใช
ความสมพนธระหวาง Classความสมพนธระหวาง Class จะแสดงโดยใชเสนตรงลากเชอม
ระหวาง Class ซงแบงไดเปน • Associations• Generalization• Aggregation
ไดกลาวถงมาบางแลวในเรอง Abstraction (การให Concept กบ Object จนเกดเปน Class และความสมพนธระหวาง Class)และบนเสนความสมพนธระหวาง Class อาจมการระบ
Association name (ชอความสมพนธ) Role name (บทบาท)Navigation (ทศทางความสมพนธ)Multiplicity (จะกลาวถงในสวนถดไป)
Association name และ Role name
Association name เปนคำากรยาRole name เปนคำานาม
41
ปกต จะเลอกใช Association name หรอ Role name เพยงอยางใดอยางหนง และมกจะใช Association name เทานน
Navigationหวลกศรแสดงถงทศทางของความสมพนธ เปนการแสดงถงความ
สามารถของ object ของ Class หนงในการเขาถง (สง Message)object ของอก Class หนงและหมายถงคอ object ของ Class ทางดานทไมมหวลกศร สามารถเขาถง object ของ Class ทางดานทมหวลกศร( แตในทางตรงกนขามไมสามารถทำาได )
จากตวอยาง มหวลกศรทศทางเดยวจดเปน Unidirectional Association
แตถาทงสอง objects สามารถเขาถงกนและกนได (2 ทศทาง) ไมตองมหวลกศร ซงเรยกวา Bidirectional Association ระดบความสมพนธระหวาง Class (Degree of Relationship)
เปนการมองในเรองจำานวนของ Class ทมความสมพนธรวมกน ซงแบงได 3 ระดบคอ
• Unary Relationship• Binary Relationship• Ternary Relationship• Unary Relationship• ความสมพนธทเกดขนใน Class เดยว (สมพนธกบตว
เอง) จะเกดในกรณท Attribute ของ Class นน สามารถสรางความสมพนธกบอก Attribute หนงภายใน Class เดยวกน
42
Binary Relationshipเปนความสมพนธระหวางสอง Class ซงพบเหนไดมากทสด
ตวอยาง ความสมพนธระหวาง 2 Class
พนกงาน 1 คนถกกำาหนดใหมทจอดรถได 1 คนหมายเหต กรณ 1 ไมระบได
Ternary Relationship
เปนความสมพนธระหวาง 3 Classes
ซงจะมการนำาชอความสมพนธ แปลงใหเปน Class
จากตวอยางกอนหนาClass Part(อะไหล), Vender (ผจำาหนาย), Warehose(คลง
สนคา) มความสมพนธแบบ Ship(จดสง) และเนองจากจำานวนสนคาทสงให Vender และ Warehouse นนตางกน จงนำาความสมพนธ Ship มาสรางเปน Class ตวกลาง
43
Multiplicity ในความสมพนธ (Relationship) เปนการแสดงจำานวน Object ของ Class หนง ซงมความสมพนธกบ Objects
ของอก Class หนง บนเสนความสมพนธโดยใชรปแบบ Minumum Cardinality .. Maximum Cardinalityตวอยาง
Association Multiplicity
วธการอานคาความสมพนธ
1. อานดานทม Min เปน 1 เพอกำาหนด Min..Max ของฝงตรงขาม เชน Video 1 มวน อาจไมบนทกหนง (0) หรอ บนทกได 1 เรอง
2. เปลยนไปอานฝงตรงกนขาม โดยกำาหนดใหสมาชกเรมตนเปน 1 เชน หนง 1 เรองบนทกโดยใช Video ตำาสด 1 มวน และสงสด 1 มวน
44
หมายเหต ไมพจารณาทศทางของชอความสมพนธ เพราะตองอานทง 2 ดานอยแลว
Associations ความสมพนธทวไป (Associate) เปนความสมพนธทไมมการระบ
ผลของการสบทอด และการเปนสวนหนงของ Class ทสมพนธดวย แต Class นนจะสมพนธกนในดานอนๆ และเปนความสมพนธในระดบเดยวกน (ไมม Class ใด สำาคญกวา Class ใด )
ลกคาอาจมหลายใบสงซอ ใบสงซอเกดจากลกคาคนเดยว
ตวอยาง ความสมพนธ Association
ความสมพนธทศทางเดยวแมสามารถคลอดลกได แตลกไมสามารถ
ความสมพนธแบบสองทศทางชาย 1 คน จดทะเบยนสมรสกบหญงได 1 คนเทานน และหญง 1 คน จดทะเบยนสมรสกบชายได 1 คนเทานน
45
Generalization(/Specialization) เปนความสมพนธแบบ Superclass และ Subclass ซงกคอ
Inheritance ในแนวคดหลกเชงวตถGeneralization หาลกษณะรวมของ Class ตางๆ เพอสราง Class ทเปนตวแทนของกลม Class นน (Superclass)
Specialization กำาหนดลกษณะเฉพาะเจาะจงในรายละเอยด (Subclass)
Specialization เปนกระบวนการยอนกลบของ Generalization Generalization อาจเรยกวา คอประเภทของ (kind-of relationship )ใน Class Hierachy จะแบง Class เปนลำาดบชน Class ทมระดบสงกวาเรยกวา Superclass Class ทอยในระดบตำากวาเรยกวา Subclass
ในการสบทอด (Inheritance) Subclass จะรบคณสมบต (Attributes and Methods) จาก
Superclass มาไวในตวเองโดยอตโนมตและ Subclass สามารถเพมเตมคณสมบตใหม (Attributes and Methods) จาก Superclass ซงเรยกวา Extending หรอแกไขคณสมบตทรบมา ซงเรยกวา Overriding
การสรางความสมพนธแบบ Generalization - เลอก Generalization จาก Diagram Toolbar
46
- ทำาการลากเสน Generalization จาก Subclass ไปยง Super class
จงสราง Class Diagram ตามตวอยางตอไปน พรอมทงอธบาย
Aggregation Relationshipเปนความสมพนธ Association แบบหนง (แบบพเศษ)คอ
Object หนง ม Objects อนๆ เปนสวนประกอบอาจเรยกวา whole-part relationship (ทงหมด-สวนประกอบ) ซงมกจะใชคำาวา consists of , contains , is part of เชน Car ม Engine และ wheels เปนสวนประกอบ
ลกษณะสำาคญของ Aggregation Relationship
47
เมอลบ Whole class ทง Class ทเปน Part Classes จะยงคงอยได โดยไมตองพงพา Whole classเชน Computer กบ Harddisk ถา Computer เสย Harddisk กไมจำาเปนตองเสยดวย ใน UML ความสมพนธจะถกตงสมมตฐานไวเปนแบบ Bidirectional (ไมมลกศร) เสมอ เวนแตวาจะมการกำาหนดสญลกษณลกศรเพอจำากดไว และถาไมระบ Multiplicity default เปน many (*) parts and one whole.
จาก Class Diagram ขางตน จงอธบาย
Object ของ Class .... และยกตวอยาง Aggregation Relationship มา 1
ตวอยาง
Composition Relationshipเปนความสมพนธแบบ Aggregation ทเขมงวด(Strong)ขนซง
จะมชวงชวตรวมกน- สวนทเปน whole จะทำาหนาทเปนเจาของสวนทเปน part- สวนทเปน part อาจเปนของสวนทเปน whole ไดเพยงหนงเดยว - Multiplicity ของสวนทเปน whole จะตองมคาเปน 0
หรอ 1 เทานน - ชวงชวตของสวนทเปน part จะขนอยกบสวนทเปน whole เสมอ
นนคอจะเกยวของการสรางหรอ ลบสวนทเปน part เสมอ
48
Composition Relationship
ใช สญลกษณ เชน
กำาหนดไวทางดาน Book เนองจาก Book จะประกอบไปดวย Chapter
สญลกษณลกศรแสดงถงความสมพนธเปนแบบทางเดยว นนคอ Chapter ไมรจกสวนทเปน Book
Aggregation & Compositionเปนความสมพนธแบบ Transitive ถาวตถ A เปนสวนหนง
ของ B และ B เปนสวนหนงของ C แลว A เปนสวนหนงของ C ดวย เชน ถาทจบประตเปนสวนหนงของประต ประตเปนสวนหนงของรถยนต แลว ทจบประตเปนสวนหนงของรถยนต เปนความสมพนธแบบ Anti-symmetric วตถใดๆ อาจไมจำาเปนตองเปนสวนประกอบของตวเองทงทางตรงและทางออม เชน ถาประตเปนสวนหนงของรถยนต แตรถยนตไมจดเปนสวนหนงของประต
ความสมพนธระหวาง ClassDependency
เปนความสมพนธระหวาง Class แบบขนตอกน การเปลยนแปลงตางๆทเกดขนกบ Class หนงจะมผลกบอก Class หนงทขนตอกน
49
Class Source จะขนกบ Class Targetการเปลยนแปลงทเกดขนกบ Target จะกระทบกบ Source เสมอ
หมายเหต Target อาจเรยกวา Class ทถกพงพง (Independent Class)
Source อาจเรยกวา Class ทพงพง (Dependent Class)
เสนความสมพนธจะคลายกบ Association แตเปนเสนประ
ตวอยาง Dependency Relationship
การเปลยนแปลงของ School จะมผลกระทบตอ Student
หลกการในการสราง Class Diagram (Class Diagram Modeling Techniques)
ในการจำาลอง (Model) Class และ Relationship ตางๆ ใน Class Diagram ใน OOA นน สงทตองคำานงถงกคอ Class ทงหมดทตองมอยในระบบหรอใน Real World ( ตองมอยครบไมขาดหายและไมมมากจนเกนความจำาเปน) โดยยงไมตองคำานง Class ตาง ๆ ทตองเพมขนเมอทำางานในคอมพวเตอร อาท เชน User Interface หรอหนาจอตาง ๆ เปนตน เพอการสราง Class Diagram ทถกตองและสมบรณใน Analysis Phase เราสามารถสรปเปนหลกการเพอใชในการสราง Class Diagram ไดดงน
(จาก กตต ภกดวฒนะกล, กตตพงษ กลมกลอม. UML วเคราะห และออกแบบระบบเชงวตถ)
50
1. กำาหนดกรอบของ Problem Domain ใหชดเจนและยดถอ Problem Domain นเปนมาตรฐานและบรรทดฐานในการวเคราะหระบบ (ขอบเขตของ Problem Domain น สามารถเปลยนแปลงไดตามชวงเวลาแตไมควรเปลยนแปลงบอยจนเกนความจำาเปน) เขยน Use Case Diagram ของ Problem Domain ทกำาหนดไวแลวพจารณาวา ในแตละ Use Case จะม Objects อะไรอยบาง เมอทำาเชนนจนครบทก Use Case แลวจะได Object ทมอยใน Problem Domain ทงหมด
2. พจารณาหา Objects ทสามารถจบตองได เหนได สมผสไดซงเรยกวา Tangible Objects หรอหาตวแทนของ Tangible Objects ในกรณทม Tangible Objects หลาย ๆ ตวใน Problem Domain เดยวกนใหครบทกตว
3. พจารณา Objects ทไมสามารถจบตองไดซงเรยกวา Intangible Objects หรอหาตวแทนของ Intangible Objects ในกรณทม Intangible Objects หลาย ๆ ตวใน Problem Domain เดยวกน ทมอยหรอทนาจะมอยใน Problem Domain ใหครบทกตว
4. ใช Classification Abstraction เพอแยกแยะและสราง Class
จาก Objects ทมอย และพยายามหา Attributes และ Functions ทมอยใน Class นน ๆ เทาทจะหา มาได วาด Class ทไดทงหมดลงใน Class Diagram
5. หา Aggregation Abstraction โดยพจารณา Class ทไดจาก Classification Abstraction วา
ม Class ใดหรอไมทมความสมพนธ แบบเปนสวนหนงหรอประกอบดวย (whole-part) กบ Class อน ๆ
ถามพยายามหาวา Aggregation ทเกดขนนนเปนแบบ One to One หรอ Many to One และใส Cardinality ใหถกตอง
51
6. ใช Generalization มาพจารณา Class ตางๆ ใน Class Diagram หากเกดมความสมพนธแบบ Generalization หรอ
Specialization เกดขน ใหเพมเตมลงใน Class Diagram ซงในขนตอนนอาจมการสราง Class ใหมได
7. ใช Association มาพจารณา Class ตาง ๆ ใน Class Diagram เพมเตมสญลกษณของ Association ลงใน Class Diagram
และพจารณาประเภทของความสมพนธ และ Cardinality (Multiplicity) ใหถกตอง 8. พจารณา Class Diagram ทสรางมาทงหมดวา ทก Class และทกกลมของ Class มความสมพนธ (Relationship) แบบใดแบบหนงกบ Class หรอกลมของ Class อนหรอไม
หากวาม Class ใด Class หนงหรอกลมหนง ยงไมม Relationship ใดกบ Class อนเลย อาจเกดเนองจาก Class นนเปน Class ทเกนความจำาเปนจรง ๆ ไมตองมในระบบกได หรออาจเกดเนองจาก ยงขาด Class อนๆ ทจำาเปนตองมและตองม Relationship กบ Class ดงกลาว สงทตองทำาหากเกดกรณนขน คอเรมตนใหมตงแตขนตอนท 1 โดยพจารณาหา Objects ทนาจะขาดหายหรอเกนขนมา แลวทำาตอมาจนจบหรอจนกวาจะได Class Diagram ทสมบรณหมายเหต ขอ 4 ถง 7 สามารถทำาสลบขนตอนกนได
ตวอยางจงสราง Class Diagram จาก Problem Domain ทกำาหนดให
ตอไปน ในคณะวทยาศาสตรของสถาบนการศกษาแหงหนงมบคลากรหลาย
ประเภทดวยกน ไดแก อาจารย นกศกษา และเจาหนาท โดยทอาจารยแตละทานมหนาทในการสอนวชาใดวชาหนงหรอมากกวา 1 วชากได และ
52
นกศกษากมหนาทในการศกษาวชาใดวชาหนง หรอมากกวา 1 วชากไดในเวลาเดยวกนเจาหนาทของภาควชา คอเจาหนาทประจำาหองทดลองตางๆ โดยกำาหนดวาใน 1 หองทดลองจะตองมเจาหนาท 1 คนเสมอ
หา Use Case จาก Problem Domainuse case ของระบบคอ
การเรยนการสอนประกอบดวย Actor คอ นกเรยน อาจารย
การใชหองทดลอง ประกอบดวย Actor คอ นกเรยน อาจารย
การดแลหองทดลองประกอบดวย Actor คอ เจาหนาท
Actors ทมจาก use case คอนกเรยนอาจารยเจาหนาท
เขยน Use Case Diagram
จาก Use Case ทได เราสามารถหา Objects/Classes ทมอยในระบบ
Use case การเรยนการสอนนกเรยน อาจารย // Object/Class Actor หองเรยน วชาเรยน ชวโมงเรยน // Object/Class อนๆ
53
Use case การใชหองทดลองนกเรยน อาจารย // Object/Class Actor หองทดลอง // Object/Class อนๆ Use
case การดแลหองทดลองเจาหนาท // Object/Class Actor หองทดลอง // Object/Class อนๆ
เขยน Class Diagram เบองตน (ไมม Attributes, Operations) จาก Scenario
ได เพม Class บาง Class ทจำาเปนไดแก คณะวทยาศาสตร เกดจาก Aggregation Abstraction (ของหองเรยน หองทดลองและบคลากร)บคลากร เกดจาก Generalization (บคลากร จำาแนกเปนเจาหนาท นกเรยนและอาจารย)
54
จาก Class Diagram เบองตนประกอบดวย Class ทเปน Tangible ไดแกบคลากร (จำาแนกเปน
เจาหนาท นกเรยนและอาจารย) หองเรยน และหองทดลอง สวน Class ทเปน Intangible ไดแก คณะวทยาศาสตร วชาเรยน
และชวโมงเรยน นอกจากนจาก Problem Domain ทกำาหนดให เราจะพบวา
Class Diagram จะมความสมพนธกนอนเกดจากการใช Abstraction แบบตาง ๆ และมการสราง Class เพมขนดวย เพอเพมความสมบรณใหกบ Class Diagram ไดแก Class ชวโมงเรยน เพอชวยในการโยงความสมพนธระหวางหองเรยนกบวชาเรยน การปรบเปลยน Class Diagram ใหสมบรณขน (คำาวา สมบรณขน คอทำาให Class Diagram เขาใจไดงายและครบถวนขน อาจมการเพม Class หรอความสมพนธขน แตตองไมทำาใหเรองราวทมเปลยนไป) โดยการเพม Class หอง ซงเปน Generalized Class หรอ Super class ของหองเรยนกบหองทดลองนนเองเมอปรบเปลยน Class Diagram ใหสมบรณมากยงขน
55
สามารถปรบเปลยน Class Diagram อกครง เพอใหได Class Diagram ทสมบรณขน โดยเพมเตม Attributes และ Operations ลงไป
อยางไรกตาม Class Diagram ทได จะถกทำา Refinement ในขนตอนของ Object-Oriented Design (OOD) เพอเพมความสมบรณ จนกระทงสามารถนำามาใชเปนตนแบบในการพฒนาระบบงานในคอมพวเตอรไดในทสด
แบบฝกหด1. จงสราง Class Diagram ของระบบลงทะเบยน Online ผาน
Internet ของมหาวทยาลย
56
2. จงสราง Class Diagram ถาใน 1 ปประกอบดวยเดอน 12 เดอน ไดแก มกราคม กมภาพนธ - ธนวาคม ในแตละเดอนจะประกอบไปดวย วนจำานวนหนง ซงวนทมในเดอนนน จำาแนกไดเปน วนธรรมดา (Working Days) วนหยดปลายสปดาห (Weekends) และวนหยดนกขตฤกษ (Holidays) ซงวนหยดนกขตฤกษสามารถจำาแนกไดเปน
1) วนหยดสากล เชน วนแรงงาน วนปใหม2) วนหยดทางศาสนา เชน วนมาฆบชา3) วนหยดทประกาศโดยรฐ เชน วนจกร