Class Diagram

    Class Diagramคือแผนภาพที่ใช้แสดง Class และความสัมพันธ์ในแง่ต่างๆ (Relation) ระหว่าง Class เหล่านั้น ซึ่งความสัมพันธ์ที่กล่าวถึงใน Class Diagram นี่ถือเป็นความสัมพันธ์เชิสถิตย์ (Static Relationship) หมายถึงความสัมพันธ์ที่มีอยู่แล้วเป็นปกติในระหว่าง Class ต่างๆ ไม่ใช่ความสัมพันธ์ที่เกิดขึ้นเนื่องจากกิจกรรมต่างๆ ซึ่งเรียกว่าความสัมพันธ์เชิงกิจกรรม( Dynamic Relationship) lสิ่งที่ปรากฎใน Class Diagram นั้นประกอบด้วยกลุ่มของ Class และกลุ่มของ Relationship โดยสัญลักษณ์ที่ใช้ในการแสดง Class นั้นจะแทนด้วยสี่เหลี่ยมแบ่งออกเป็น 3 ส่วน โดยแต่ละส่วนนั้น (จากบนลงล่าง) จะใช้ในการแสดง ชื่อของ Class,Attribute และฟังค์ชั่นต่างๆตามลำดับ





ความสัมพันธ์ระหว่าง Class
ความสัมพันธ์ระหว่าง Class (Relationship) คือ ความสัมพันธ์ระหว่าง Class ที่ทำงานร่วมกัน สามารถจำแนกได้ดังนี้
ความสัมพันธ์แบบพึ่งพา ( Dependency) เช่น “Class ลูกค้า กับ “Class ขายสินค้า กล่าวได้ว่า “Class ขายสินค้า” ขึ้นอยู่กับ “Class ลูกค้า” เพราะเมื่อลูกค้ามีการเปลี่ยนแปลงคำสั่งซื้อ
หรือคำสั่งผลิตรายการขายก็จะต้องถูกเปลี่ยนแปลง (Update) ตามลูกค้า
ความสัมพันธ์แบบสืบทอดคุณสมบัติ (Inheritance) เช่น “Class แม่” (super class) สืบทอดคุณลักษณะเฉพาะที่ตนมีอยู่ไปยัง “Class ลูก” (sub class)
ความสัมพันธ์แบบร่วมกัน (Association) คือความสัมพันธ์ที่เกี่ยวเนื่องมีความสัมพันธ์ซึ่งกันและกันเช่น “Class นักเรียน” สัมพันธ์กับ “Class รายวิชา” ในเรื่องของการลงทะเบียนเรียน
องค์ประกอบของ Class diagram

Class Name
Attribute 
 Methods
สัญลักษณ์ของ Class diagram

 Man 
- Name
# Surname
- Age
+ Tell_Name
+ Tell_Age
ในการเขียนสัญลักษณ์แทน Class สิ่งที่ต้องคำนึงถึงอีกสิ่งหนึ่งคือระดับการเข้าถึงเรียกสัญลักษณ์ที่ใช้แทนการเข้าถึงนี้ว่า Visibility แบ่งออกได้เป็น 3 ประเภท ได้แก่
1 Private เขียนแทนด้วยสัญลักษณ์   -   หมายถึง Attribute หรือ ฟังก์ชัน ที่ไม่สามารถมองเห็นได้จากภายนอก   แต่สามารถมองเห็นได้จากภายในตัวของ Class เองเท่านั้น
Protect เขียนแทนด้วยสัญลักษณ์   #   หมายถึง Attribute หรือ ฟังก์ชัน ที่สงวนไว้สำหรับการทำ Inheritance โดยเฉพาะ Attribute หรือ ฟังก์ชันเหล่านี้ จะเป็นของ Super class เมื่อ
ทำการ Inheritance แล้ว Attribute หรือ ฟังก์ชัน ที่มี Visibility แบบ Protect จะกลายไปเป็น Private Attribute/ฟังก์ชัน หรือ Protected ขึ้นอยู่กับภาษา Programming ที่นำไปใช้

3 Public เขียนแทนด้วยสัญลักษณ์   +   หมายถึง Attribute หรือ ฟังก์ชัน ที่สามารถมองเห็นได้จากภายนอก และสามารถเข้าไปเปลี่ยนค่า อ่านค่าหรือเรียกใช้งาน Attribute หรือ ฟังก์ชัน 
นั้นได้ทันทีโดยอิสระจากภายนอก (โดยทั่วไปแล้ว Visibility แบบ Public มักจะใช้กับฟังก์ชันมากกว่า Attribute)


ความสัมพันธ์ระหว่าง Object ประกอบด้วย
  1. Association
  2. Aggregation
  3. Composition
  4. Generalization
           Association
           เป็นความสัมพันธ์ระหว่าง Object หรือ Class แบบ 2 ทิศทาง

                             

  1. Aggregation
    เป็นความสัมพันธ์ระหว่าง Object หรือ Class แบบ “Whole-Part” หรือ “is part of” โดยจะมี Class ที่ใหญ่ที่สุดที่เป็น Object หลัก และมี Class อื่นเป็นส่วนประกอบ


                                                                 


                



Composition
เป็นความสัมพันธ์ระหว่าง Object หรือ Class แบบขึ้นต่อกันและมีความเกี่ยวข้องกันเสมอ โดยจะมี Class ซึ่งเป็นองค์ประกอบของ Class อื่นที่ใหญ่กว่า เมื่อ Class ที่ใหญ่กว่าถูกทำลาย Class ที่เป็นองค์ประกอบก็จะถูกทำลายไปด้วย





                                                                     


Generalization

เป็นความสัมพันธ์ระหว่าง Object หรือ Class ในลักษณะของการสืบทอดคุณสมบัติจาก Class หนึ่ง (Super class) ไปยังอีก Class หนึ่ง (Subclass)


                                                                        






Specialization
คือกระบวนการที่ตรงกันข้ามกับ กระบวนการ Generalization Abstraction กล่าวคือ ถ้าต้องการสร้าง Class ใหม่ โดยอาศัย Concept ของ Class เก่าบางส่วน และเพิ่มเติมใหม่บางส่วนจนเกิดเป็น Class ใหม่



                                                                     



         -


หลักในการสร้าง Class Diagram
สิ่งที่ต้องคำนึงถึงสำหรับการจำลอง Class และ Relationship ต่างๆใน Class Diagram ใน OOA คือ
         - Class ทั้งหมดที่ต้องมีอยู่ในระบบหรือใน Real World
         ต้องมีอยู่ครบ ไม่ขาดหาย
         - ไม่มากเกินความจำเป็น

1. กำหนดกรอบของ Problem Domain ให้ชัดเจน
          - ให้ยึดถือ Problem Domain นี้เป็นบรรทัดฐานในการวิเคราะห์ระบบ
          - เขียน Use Case Diagram ของ Problem Domain
          - พิจารณาว่า ในแต่ละ Use Case จะมี Objects อะไรอยู่บ้าง
2. พิจารณาหา Objects ที่สามารถจับต้องได้เห็นได้สัมผัสได้ ซึ่งเรียกว่า Tangible Objects
3. พิจารณาหา Objects ที่ไม่สามารถจับต้องได้ซึ่งเรียกว่า Intangible Objects
4. ใช้ Classification Abstraction เพื่อแยกแยะและสร้าง Class จาก Objects ที่มีอยู่
          - พยายามหา Attributes และ Functions ของ Class เท่าที่จะหาได้
          - วาด Class ทั้งหมดที่ได้ ลงใน Class Diagram
5. หา Aggregation Abstraction (โดยพิจารณาการเป็นส่วนประกอบ)
          1. เพิ่มเติมสัญลักษณ์
          2. ใส่ Cardinality ให้ถูกต้อง
6. ใช้ Generalization มาพิจารณา
          - เพิ่มเติมสัญลักษณ์
          - อาจเกิด Class ใหม่เพื่อเป็น Generalized Class ได้
7. ใช้ Association มาพิจารณา
          - เพิ่มเติมสัญลักษณ์
          - พิจารณาประเภทของความสัมพันธ์และ Cardinality ให้ถูกต้อง
8. พิจารณา Class Diagram ว่ามี Class หรือ กลุ่มของ Class ที่ไม่มีความสัมพันธ์กับ Class อื่นๆ หรือไม่
          - อาจจะพบ Class ที่ไม่จำเป็นสำหรับระบบ
          - อาจจะขาด Class อื่นๆที่จำเป็นในระบบ







1 ความคิดเห็น:

  1. You can learn how to draw class diagrams in-depth from this Class Diagram Tutorial .There are tools and templates available to draw class diagrams with 100s of examples to be used freely. You can create UML class diagrams with Creately online diagramming and collaboration software.

    ตอบลบ