Class Diagram.

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โครงสร้างโปรแกรมภาษา JAVA
Advertisements

Object-Oriented Programming IUP02 At Exceep camp.
Object-Oriented Analysis and Design
UML Diagrams Functional Model Seree Chinodom
Class Diagram.
Business Modeling (บางส่วนอ้างอิงจาก ดร.อดิศร ณ อุบล)
Object-Oriented Analysis and Design
Object-Oriented Programming
Object Oriented Programing
ครั้งที่ 7 Composition.
SCC : Suthida Chaichomchuen
Classification Abstraction
Object-Oriented System Analysis and Design
SCC : Suthida Chaichomchuen
OOP (Object-Oriented Programming)
Generalization & Specialization
Lecture 9 Class (คลาส) To do: Hand back assignments
UML มหาวิทยาลัยเนชั่น Unified Model Language บุรินทร์ รุจจนพันธุ์ .
ความสัมพันธ์ระหว่างคลาส (Class Relationship)
ที่ใช้ใน Object-Oriented Design
Method of Class อ.สุพจน์ สิงหัษฐิต
บทที่ 4 Aggregation Abstraction
การวิเคราะห์และออกแบบระบบเชิงวัตถุ (OOAD)
การวิเคราะห์และออกแบบระบบเชิงวัตถุ Object Oriented Analysis and Design
วิชาวิเคราะห์และออกแบบระบบเชิงวัตถุ Lec08 :: Behavioral Modeling with UML Behavioral Diagrams Interaction Diagrams Nattapong Songneam
Object-Oriented Programming
Object Oriented Analysis and Design
Advanced Class Design in Java Java Packages Week #6 Jarungjit Parnjai
Lecture 2 แก้ไขปัญหาด้วย OOP (Solving problems using OOP in Java)
Midterm outline Object-oriented programming Wattanapong suttapak, Software Engineering, school of Information communication Technology, university of phayao.
วิชา เทคโนโลยีสารสนเทศสำหรับงานทะเบียนบุคคลและการจ่ายเงินเดือน (Information Technology for Personal Record and Payroll) - การพัฒนาระบบสารสนเทศ.
school of Information communication Tecnology,
Object Oriented Programming : OOP
Unified Modeling Language
Object-Oriented Programming
วิชา การวิเคราะห์และออกแบบเชิงวัตถุ รหัส
บทที่ 3 การสืบทอด (Inheritance)
State Diagram Wattanapong suttapak, Software Engineering,
Chapter 8 – UML Design.
การจัดทำมาตรฐานข้อมูล
Chapter 3 : แบบจำลองฐานข้อมูล (Data Model)
Object Oriented Software Analysis and Design
Object Oriented Development with UML
The Unified Modeling Language
The Unified Modelling Language (UML)
Object Oriented Development with UML
Java class ,ความสัมพันธ์ของ Class Diagram (UML)
Object Oriented Development with UML
2 การพัฒนาระบบสารสนเทศ (Information System Development)
Chapter 6 : แบบจำลอง E-R (Entity-Relationship Model)
โดย อ.พัฒนพงษ์ โพธิปัสสา
Inheritance and Method Overriding
บทที่ 5 ความต้องการ วิศวกรรมความต้องการ แบบจําลองการวิเคราะห์
การวิเคราะห์ซอฟต์แวร์
พื้นฐานการวิเคราะห์และออกแบบระบบเชิงวัตถุด้วย UML
for Display Antique and Art Object Information
Object-Oriented Programs Design and Construction
UML (Unified Modeling Language)
ตัวชี้วัดปศุสัตว์อำเภอ ปีงบประมาณ ๒๕๖๑
Object-Oriented Analysis and Design
Method and Encapsulation
Inheritance Chapter 07.
Overload Method and Poly Morphism
บทที่ 5 การจำลองข้อมูลเชิงวัตถุ (Object-Oriented Modeling)
Analysis Model & Object Oriented Analysis
Class Inheritance and Interfaces.
การวิเคราะห์ความต้องการ
การเขียนโปรแกรมคอมพิวเตอร์ แบบภาษาเชิงวัตถุ
Class Diagram.
Class Diagram.
ใบสำเนางานนำเสนอ:

Class Diagram

ตัวอย่าง สร้าง Class Diagram จาก Problem Domain ในคณะวิทยาศาสตร์ของสถาบันการศึกษาแห่งหนึ่งมีบุคลากรหลายประเภทด้วยกัน ได้แก่ อาจารย์ นักศึกษา และเจ้าหน้าที่ โดยที่อาจารย์แต่ละท่านมีหน้าที่ในการสอนวิชาใดวิชาหนึ่งหรือมากกว่า 1 วิชาก็ได้ และนักศึกษาก็มีหน้าที่ในการศึกษาวิชาใดวิชาหนึ่ง หรือมากกว่า 1 วิชาก็ได้ในเวลาเดียวกันเจ้าหน้าที่ของภาควิชา คือเจ้าหน้าที่ประจำห้องทดลองต่างๆ โดยกำหนดว่าใน 1 ห้องทดลองจะต้องมีเจ้าหน้าที่ 1 คนเสมอ

หา Use Case จาก Problem Domain การเรียนการสอน ประกอบด้วย Actor คือ นักเรียน อาจารย์ การใช้ห้องทดลอง การดูแลห้องทดลอง ประกอบด้วย Actor คือ เจ้าหน้าที่ Actors ที่มีจาก use case คือ นักเรียน อาจารย์ เจ้าหน้าที่

จาก Use Case ที่ได้ เราสามารถหา Objects/Classes ที่มีอยู่ในระบบ นักเรียน อาจารย์ // Object/Class Actor ห้องเรียน วิชาเรียน ชั่วโมงเรียน // Object/Class อื่นๆ Use case การใช้ห้องทดลอง นักเรียน อาจารย์ // Object/Class Actor ห้องทดลอง // Object/Class อื่นๆ Use case การดูแลห้องทดลอง เจ้าหน้าที่ // Object/Class Actor ห้องทดลอง // Object/Class อื่นๆ

เขียน 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 ให้สมบูรณ์มากยิ่งขึ้น

เมื่อปรับเปลี่ยน Class Diagram ให้สมบูรณ์มากยิ่งขึ้น

สามารถปรับเปลี่ยน Class Diagram อีกครั้ง เพื่อให้ได้ Class Diagram ที่สมบูรณ์ขึ้น โดยเพิ่มเติม Attributes และ Operations

หมายเหตุ อย่างไรก็ตาม Class Diagram ที่ได้ จะถูกทำ Refinement ในขั้นตอนของ Object-Oriented Design (OOD) เพื่อเพิ่มความสมบูรณ์ จนกระทั่งสามารถนำมาใช้เป็นต้นแบบในการพัฒนาระบบงานในคอมพิวเตอร์ได้ในที่สุด

องค์ประกอบของ Class Diagram https://www.smartdraw.com/class-diagram/ องค์ประกอบของ Class Diagram

องค์ประกอบของ Class Diagram ตัวบ่งชี้ Multiplicity Navigation ชื่อของ Role ความสัมพันธ์ Association Generalization (Inheritance) Aggregation Composition Dependency

Visibility (การมองเห็นหรือความสามารถในการเข้าใช้ข้อมูล)

ตัวอย่าง การเขียน Class โดยใช้ภาษา จาวา

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 Attributes

UML Syntax for Operations Visibility Name(Parameter List : Type) : Return type UML Syntax for Operations Visibility ประกอบด้วย + (public) , - (private), # (protected) Name คือ ชื่อ เหมือนกับชื่อของ Attribute แต่เป็นคำกริยา เช่น withdrawMoney Parameter List คือ รายการตัวแปรหรือ Objects ที่ถูกส่ง เข้าไปใน Operation (Method) เพื่อ ใช้ดำเนินการอย่างใดอย่างหนึ่ง ( อาจไม่มีก็ได้ ) Type , Return type คือ ชนิดข้อมูล เหมือน Attribute

Visibility private ( - ) มักใช้กับ Attributes มากกว่า Operations เห็นได้ภายในเฉพาะตัว class ไม่สามารถเห็นได้ จากภายนอก การเข้าถึงจากภายนอกจะกระทำผ่าน Operation ที่เตรียมไว้ public ( + ) มักใช้กับ Operations มากกว่า Attributesมองเห็นและเข้าถึงได้โดยตรงจากภายนอก protected (#) สงวนไว้สำหรับการทำ Inheritance โดยเฉพาะโดยปกติจะเป็นของ Super class เมื่อทำ inheritance แล้ว Attributes และ Operations เหล่านี้จะเป็นได้ทั้ง Private หรือ Protect ซึ่งขึ้นอยู่กับภาษาที่ใช้

ความสัมพันธ์ระหว่างคลาส (Class Relationship)

ระดับความสำคัญ มีอยู่ 3 รูปแบบ ระดับความสำคัญ มีอยู่  3  รูปแบบ 1 . Unary Relationship  เป็นความสัมพันธ์ที่เกิดกับคลาสเดียว  เช่น หัวหน้าห้องของนักศึกษาแต่ละคน 2 . Binary Relationship เป็นความสัมพันธ์ที่เกิดขึ้นระหว่างคลาส  2  คลาส 3 . Ternary Relationship เป็นความสัมพันธ์ที่เกิดขึ้นระหว่างคลาสมากกว่า  2  คลาสขึ้นไป Relationships Between Class

1 . Unary Relationship  เป็นความสัมพันธ์ที่เกิดกับคลาสเดียว  เช่น หัวหน้าห้องของนักศึกษาแต่ละคน

2 . Binary Relationship  เป็นความสัมพันธ์ที่เกิดขึ้นระหว่างคลาส  2  คลาส  เช่น  ความสัมพันธ์ระหว่างคลาส “นักศึกษา” กับ  คลาส  “คณะวิชา”  ซึ่งสัมพันธ์กันโดยความสัมพันธ์ “สังกัด”

3 . Ternary Relationship  เป็นความสัมพันธ์ที่เกิดขึ้นระหว่างคลาสมากกว่า  2  คลาสขึ้นไป

รูปแบบความสัมพันธ์

การสืบทอดคุณสมบัติ (Generalization การเป็นส่วนหนึ่งของ (Aggregation) ระหว่างคลาส (class relationship) ของคลาสไดอะแกรมสามารถแบ่งออกได้เป็นรูปแบบต่าง ๆ ดังต่อไปนี้ การสืบทอดคุณสมบัติ (Generalization การเป็นส่วนหนึ่งของ (Aggregation) การเป็นองค์ประกอบของ (Composition) ความเกี่ยวข้องกัน (Association) จำนวนของสมาชิกที่อยู่ในความสัมพันธ์ (multiplicity)

1. การสืบทอดคุณสมบัติ (Generalization) ในแนวคิดของการพัฒนาระบบแบบแนวคิดเชิงวัตถุ  (Object Oriented Programming : OOP) นั้น วัตถุ (object) สามารถที่จะสืบทอดคุณสมบัติถึงกันได้  เช่นเดียวกับคลาสซึ่งเป็นต้นแบบที่จะนำไปสร้างวัตถุอีกต่อหนึ่ง คลาสหนึ่งสามารถที่จะสืบทอดคุณสมบัติจากอีกคลาสหนึ่งได้  โดยคลาสที่เป็นผู้รับการสืบทอดจะมีคุณสมบัติเช่นเดียวกับคลาสที่เป็นผู้ให้การสืบทอด โดยเราวาดเส้นแสดงการสืบทอดคุณสมบัติ (generalization) ด้วยเส้นตรงที่มีปลายลูกศรสีขาวจากคลาสที่เป็นผู้รับการสืบทอดชี้ไปที่คลาสที่เป็นผู้ให้การสืบทอดดังรูปที่แสดงข้างบน เราเรียกการสืบทอดคุณสมบัติแบบนี้ว่า การเป็นประเภทหนึ่งของ (a-kind-of)

1. การสืบทอดคุณสมบัติ (Generalization)

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

คลาสที่เป็นส่วนประกอบ Composition and Aggregation https://www.smartdraw.com/class-diagram/ คลาสที่เป็นส่วนประกอบ Composition and Aggregation

2. การเป็นส่วนหนึ่งของ (Aggregation) แนวคิดนี้ต่างจากแนวคิดการสืบทอดคุณสมบัติที่จะมองว่าคลาสหนึ่งสืบทอดคุณสมบัติจากอีกคลาสหนึ่ง แต่จะมองคลาสหนึ่ง ๆ สามารถมีส่วนประกอบเป็นคลาสย่อย ๆ อะไรบ้าง การเป็นส่วนหนึ่งของ จึงหมายถึงคลาสที่เป็นส่วนประกอบย่อยของคลาสหลัก ที่ถึงแม้ว่าจะไม่มีคลาสย่อยเหล่านี้ก็ไม่ทำให้คุณสมบัติของความเป็นคลาสหลักสูญเสียไปแต่อย่างใด เราแทนความสัมพันธ์ในลักษณะนี้ด้วยเส้นตรงที่ลากจากคลาสที่เป็นส่วนประกอบไปหาคลาสหลักที่เป็นเจ้าของส่วนประกอบ โดยปลายเส้นตรงใช้รูปสี่เหลี่ยมข้าวหลามตัดสีขาว เราเรียกความสัมพันธ์ในลักษณะนี้ว่าการเป็นส่วนหนึ่งของ (a-part-of)

2. การเป็นส่วนหนึ่งของ (Aggregation)

2. การเป็นส่วนหนึ่งของ (Aggregation)

3 การเป็นองค์ประกอบของ (Composition) ความสัมพันธ์ในลักษณะนี้จะคล้าย ๆ กับความสัมพันธ์แบบเป็นส่วนหนึ่งของ คือคลาสย่อยเป็นส่วนหนึ่งของคลาสหลัก  แต่ต่างกันตรงที่ส่วนประกอบย่อยนี้จะไม่สามารถถูกนำออกจากส่วนประกอบหลักได้  เพราะถ้านำส่วนประกอบย่อยออกไปแล้วส่วนประกอบหลักก็จะสูญเสียคุณสมบัติของความเป็นคลาสนั้น ๆ  จัดเป็ฯองค์ประกอบที่ไม่อาจขาดได้

3 การเป็นองค์ประกอบของ (Composition)

ความเหมือนและความแตกต่างระหว่าง Aggregation และ Composition http://prachya-kmutnb.blogspot.com/2009_02_01_archive.html

4. ความเกี่ยวข้องกัน (Association) ความสัมพันธ์แบบนี้เป็นความสัมพ้นธ์ส่วนใหญ่ของคลาสต่าง ๆ ในระบบ ซึ่งจะทำงานร่วมกันด้วยความสัมพันธ์ที่เกี่ยวข้องกัน  เป็นความสัมพันธ์ในรูปแบบของการทำงานร่วมกันเช่นเดียวกับการทำงานในชีวิตประจำวันของเรา  

5. จำนวนของสมาชิกที่อยู่ในความสัมพันธ์ (multiplicity) จากรูปแบบความสัมพันธ์ที่เราได้เห็นมาในข้อ 2, 3, 4  จะสังเกตุเห็นว่าได้มีการระบุตัวเลขและเครื่องหมาย 1, 0..*, 1..*  ซึ่งเครื่องหมายและตัวเลขดังกล่าวใช้ระบุถึงจำนวนของสมาชิกที่อยู่ในความสัมพันธ์ของแต่ละคลาส  โดยตัวเลขที่ปลายสุดของคลาสฝั่งตรงกันข้ามจะใช้บอกจำนวนของความสัมพันธ์ของคลาสที่อยู่อีกฝั่งหนึ่ง

5. จำนวนของสมาชิกที่อยู่ในความสัมพันธ์ (multiplicity) จากรูปข้างบนเราแปลความหมายได้ว่า  บริษัท(company) สามารถมีพนักงาน(person)ได้ตั้งแต่ 1 คนถึงหลาย ๆ คน แต่พนักงานหนึ่งคนสามารถสังกัดได้แค่หนึ่งบริษัทเท่านั้น

5. จำนวนของสมาชิกที่อยู่ในความสัมพันธ์ (multiplicity) โดยรูปแบบนั้นสามารถกำหนดได้โดยใช้ตัวเลขต่างประกอบกับเครื่องหมาย .. และ * โดยตัวอย่างรูปแบบความสัมพันธ์แบบต่าง ๆ มีดังต่อไปนี้

http://slidegur.com/doc/1705608/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%A7%E0%B8%B4%E0%B9%80%E0%B8%84%E0%B8%A3%E0%B8%B2%E0%B8%B0%E0%B8%AB%E0%B9%8C%E0%B9%81%E0%B8%A5%E0%B8%B0%E0%B8%AD%E0%B8%AD%E0%B8%81%E0%B9%81%E0%B8%9A%E0%B8%9A%E0%B8%A3%E0%B8%B0%E0%B8%9A%E0%B8%9A%E0%B9%80%E0%B8%8A%E0%B8%B4%E0%B8%87%E0%B8%A7%E0%B8%B1%E0%B8%95%E0%B8%96%E0%B8%B8--ooad-

http://classdiagramwork.blogspot.com/2014/09/class-diagram.html

Realization / implementation

ตัวอย่าง

http://sdodo3.com/blog/wp-content/themes/modernity/img/class%20model%20example-09704.html

สรุปความสัมพันธ์

ตัวอย่าง http://shareinformation.circlecamp.com/index.php?page=CreateAClassDiagram