OO Design and Development 32
บทท 5 แผนภาพคลาส (Class Diagram)
Class diagram จดเปน Structural Model (Static Model) คอ มมมองของระบบทเนนโครงสรางของวตถ
รวมทงคลาสของวตถ (Class) ความสมพนธระหวางคลาส (Relationship) แอททรบวต (Attribute) และโอเปอเรชน (Operation) ความสมพนธทแสดงเปนความสมพนธเชงสถตย (คงท Static) ไมใชความสมพนธทเกดขนเนองจากกจกรรม (Dynamic) จงไมสามารถมองเหนการเปลยนแปลงตางๆทเกดขน แมจะเกดเหตการณใด ๆ
Class Diagram Static relationship เจาของบญชเปนเจาของบญชเงนฝาก Dynamic relationship เจาของบญชฝากเงนเขาบญชเงนฝาก เจาของบญชถอนเงนจากบญชเงนฝาก เจาของบญชปรบปรงยอดบญชเงนฝาก
องคประกอบของ Class Diagram Class โครงสรางของ Class พฤตกรรมของ Class ตวบงช Multiplicity Navigation ชอของ Role ความสมพนธ Association Generalization (Inheritance) Aggregation Composition Dependency
OO Design and Development 33
Class ใน Class Diagram
UML Syntax for Class Name ชอ Class ไมมชองวาง และขนตนดวยตวพมพใหญ เชน Bank ถามมากกวา 1 ค าตวแรกของแตละค าเปนตวพมพใหญ เชน BankAccount UML Syntax for Attributes Visibility Name: Type [= คาเรมตน] Visibility ประกอบดวย + (public), - (private), # (protected) Name คอ ชอ Attribute ไมมชองวาง ขนตนดวยตวพมพเลก ตวแรกของค าถดไปเปนตวพมพใหญ เชน userID Type คอ ชนดขอมล (ขนกบแตละภาษา) Primitive Type ขอมลพนฐาน เชน integer, boolean Class Type Attribute ของ Class หนงอาจมชนดเปน Class อนได UML Syntax for Operations
Visibility Name (Parameter List: Type) : Return type Visibility ประกอบดวย + (public), - (private), # (protected) Name คอ ชอ เหมอนกบชอของ Attribute แตเปนค ากรยา เชน withdrawMoney
Parameter List คอ รายการตวแปรหรอ Objects ทถกสงเขาไปใน Operation (Method) เพอใชด าเนนการอยางใดอยางหนง (อาจไมมกได)
Type, Return type คอ ชนดขอมล เหมอน Attribute (อาจไมมกได)
OO Design and Development 34
Visibility private ( - ) มกใชกบ Attributes มากกวา Operations เหนไดภายในเฉพาะตว class ไมสามารถเหนได จากภายนอก การเขาถงจากภายนอกจะกระท าผาน Operation ทเตรยมไว public ( + ) มกใชกบ Operations มากกวา Attributesมองเหนและเขาถงไดโดยตรงจากภายนอก 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 (จะกลาวถงในสวนถดไป)
OO Design and Development 35
Association name และ Role name Association name เปนค ากรยา Role name เปนค านาม ปกต จะเลอกใช 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 เดยวกน
Binary Relationship เปนความสมพนธระหวางสอง Class ซงพบเหนไดมากทสด
OO Design and Development 36
ตวอยาง ความสมพนธระหวาง 2 Class
พนกงาน 1 คนถกก าหนดใหมทจอดรถได 1 คน หมายเหต กรณ 1 ไมระบได
Ternary Relationship
เปนความสมพนธระหวาง 3 Classes
ซงจะมการน าชอความสมพนธ แปลงใหเปน Class
จากตวอยางกอนหนา Class Part(อะไหล), Vender (ผจ าหนาย), Warehose(คลงสนคา) มความสมพนธแบบ Ship(จดสง) และเนองจากจ านวนสนคาทสงให Vender และ Warehouse นนตางกน จงน าความสมพนธ Ship มาสรางเปน Class ตวกลาง Multiplicity ในความสมพนธ (Relationship) เปนการแสดงจ านวน Object ของ Class หนง ซงมความสมพนธกบ Objects ของอก Class หนง บนเสนความสมพนธ โดยใชรปแบบ
Minumum Cardinality .. Maximum Cardinality
OO Design and Development 37
ตวอยาง
Association Multiplicity
วธการอานคาความสมพนธ
1. อานดานทม Min เปน 1 เพอก าหนด Min..Max ของฝงตรงขาม เชน Video 1 มวน อาจไมบนทกหนง (0) หรอ บนทกได 1 เรอง 2. เปลยนไปอานฝงตรงกนขาม โดยก าหนดใหสมาชกเรมตนเปน 1 เชน หนง 1 เรองบนทกโดยใช Video ต าสด 1 มวน และสงสด 1 มวน หมายเหต ไมพจารณาทศทางของชอความสมพนธ เพราะตองอานทง 2 ดานอยแลว
Associations ความสมพนธทวไป (Associate) เปนความสมพนธทไมมการระบผลของการสบทอด และการเปนสวนหนงของ Class ทสมพนธดวย แต Class นนจะสมพนธกนในดานอนๆ และเปนความสมพนธในระดบเดยวกน (ไมม Class ใด ส าคญกวา Class ใด )
OO Design and Development 38
ลกคาอาจมหลายใบสงซอ ใบสงซอเกดจากลกคาคนเดยว
ตวอยาง ความสมพนธ Association
ความสมพนธทศทางเดยว
แมสามารถคลอดลกได แตลกไมสามารถ
ความสมพนธแบบสองทศทาง
ชาย 1 คน จดทะเบยนสมรสกบหญงได 1 คนเทานน และ หญง 1 คน จดทะเบยนสมรสกบชายได 1 คนเทานน
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
OO Design and Development 39
การสบทอด (Inheritance) Subclass จะรบคณสมบต (Attributes and Methods) จาก Superclass มาไวในตวเองโดยอตโนมตและ Subclass สามารถเพมเตมคณสมบตใหม (Attributes and Methods) จาก Superclass ซงเรยกวา Extending หรอแกไขคณสมบตทรบมา ซงเรยกวา Overriding การสรางความสมพนธแบบ Generalization - เลอก Generalization จาก Diagram Toolbar - ท าการลากเสน Generalization จาก Subclass ไปยง Super class
จงสราง Class Diagram ตามตวอยางตอไปน พรอมทงอธบาย
OO Design and Development 40
Aggregation Relationship เปนความสมพนธ Association แบบหนง (แบบพเศษ)คอ Object หนง ม Objects อนๆ เปนสวนประกอบอาจเรยกวา whole-part relationship (ทงหมด-สวนประกอบ) ซงมกจะใชค าวา consists of , contains , is part of เชน Car ม Engine และwheels เปนสวนประกอบ
ลกษณะส าคญของ Aggregation Relationship
เมอลบ 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 เสมอ
OO Design and Development 41
Composition Relationship ใชสญลกษณ เชน ก าหนดไวทางดาน Book เนองจาก Book จะประกอบไปดวย Chapter สญลกษณลกศรแสดงถงความสมพนธเปนแบบทางเดยว นนคอ Chapter ไมรจกสวนทเปน Book Aggregation & Composition เปนความสมพนธแบบ Transitive ถาวตถ A เปนสวนหนงของ B และ B เปนสวนหนงของ C แลว A เปนสวนหนงของ C ดวย เชน ถาทจบประตเปนสวนหนงของประต ประตเปนสวนหนงของรถยนต แลว ทจบประตเปนสวนหนงของรถยนต เปนความสมพนธแบบ Anti-symmetric วตถใดๆ อาจไมจ าเปนตองเปนสวนประกอบของตวเองทงทางตรงและทางออม เชน ถาประตเปนสวนหนงของรถยนต แตรถยนตไมจดเปนสวนหนงของประต ความสมพนธระหวาง Class Dependency เปนความสมพนธระหวาง Class แบบขนตอกน การเปลยนแปลงตางๆทเกดขนกบ Class หนงจะมผลกบอก Class หนงทขนตอกน
OO Design and Development 42
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 วเคราะหและออกแบบระบบเชงวตถ)
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 ใหครบทกตว
OO Design and Development 43
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 ใหถกตอง
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 วชากได และนกศกษากมหนาทในการศกษาวชาใดวชาหนง หรอมากกวา 1 วชากไดในเวลาเดยวกนเจาหนาทของภาควชา คอเจาหนาทประจ าหองทดลองตางๆ โดยก าหนดวาใน 1 หองทดลองจะตองมเจาหนาท 1 คนเสมอ
OO Design and Development 44
หา Use Case จาก Problem Domain use case ของระบบคอ การเรยนการสอน ประกอบดวย Actor คอ นกเรยน อาจารย การใชหองทดลอง ประกอบดวย Actor คอ นกเรยน อาจารย การดแลหองทดลอง ประกอบดวย Actor คอ เจาหนาท Actors ทมจาก use case คอ นกเรยน อาจารย เจาหนาท เขยน Use Case Diagram จาก Use Case ทได เราสามารถหา Objects/Classes ทมอยในระบบ Use case การเรยนการสอน นกเรยน อาจารย // Object/Class Actor หองเรยน วชาเรยน ชวโมงเรยน // Object/Class อนๆ Use case การใชหองทดลอง นกเรยน อาจารย // Object/Class Actor หองทดลอง // Object/Class อนๆ Use case การดแลหองทดลอง เจาหนาท // Object/Class Actor หองทดลอง // Object/Class อนๆ
OO Design and Development 45
เขยน Class Diagram เบองตน (ไมม Attributes, Operations) จาก Scenario ไดเพม Class บาง Class ทจ าเปนไดแก คณะวทยาศาสตร เกดจาก Aggregation Abstraction (ของหองเรยน หองทดลองและบคลากร) บคลากร เกดจาก Generalization (บคลากร จ าแนกเปนเจาหนาท นกเรยนและอาจารย) จาก 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 ใหสมบรณมากยงขน
OO Design and Development 46
สามารถปรบเปลยน Class Diagram อกครง เพอใหได Class Diagram ทสมบรณขน โดยเพมเตม Attributes และ Operations ลงไป
OO Design and Development 47
อยางไรกตาม Class Diagram ทได จะถกท า Refinement ในขนตอนของ Object-Oriented Design (OOD) เพอเพมความสมบรณ จนกระทงสามารถน ามาใชเปนตนแบบในการพฒนาระบบงานในคอมพวเตอรไดในทสด แบบฝกหด
1. จงสราง Class Diagram ของระบบลงทะเบยน Online ผาน Internet ของมหาวทยาลย 2. จงสราง Class Diagram ถาใน 1 ปประกอบดวยเดอน 12 เดอน ไดแก มกราคม กมภาพนธ -
ธนวาคม ในแตละเดอนจะประกอบไปดวย วนจ านวนหนง ซงวนทมในเดอนนน จ าแนกไดเปน วนธรรมดา (Working Days) วนหยดปลายสปดาห (Weekends) และวนหยดนกขตฤกษ (Holidays) ซงวนหยดนกขตฤกษสามารถจ าแนกไดเปน 1) วนหยดสากล เชน วนแรงงาน วนปใหม 2) วนหยดทางศาสนา เชน วนมาฆบชา 3) วนหยดทประกาศโดยรฐ เชน วนจกร