ความสัมพันธ์ระหว่างคลาส (Class Relationship) Boonrit kidngan boonrit@feu.ac.th
Class Diagram ถูกสร้างขึ้นจากมุมมองของนักพัฒนาโปรแกรม สามารถนำไปใช้ในการเขียนโปรแกรมโดยตรง แบ่งออกเป็น 3 ส่วนหลักๆ ได้แก่ ส่วนบนจะใช้สำหรับระบุชื่อของคลาส ส่วนกลางจะใช้สำหรับระบุข้อมูลหรือแอททริบิวต์ (Attribute) ส่วนล่างจะเป็นการระบุพฤติกรรมการทำงาน (method) Class’s name - attributeName : data type + method(arg list) : return type
การสร้าง Class Diagram กำหนดคลาสที่ใช้งานภายในระบบ กำหนดแอททริบิวต์ของคลาส กำหนดการทำงานของคลาสในรูปของเมธอด กำหนดความสัมพันธ์ระหว่างคลาส
Student Student id : String name : String test : int mid : int finals : int Student - id : String - name : String - test : int - mid : int - finals : int + getID() : String + getName() : String + calGPA(test, mid, final) : double
การเข้าถึงข้อมูลภายใน สิทธิ สัญลักษณ์ การเข้าถึงข้อมูลภายใน Public + ทุกๆ ออปเจคภายในระบบ Protected # ออปเจคของคลาสที่มีคุณลักษณะเป็นคลาสสืบทอด Private - ออปเจคจากคลาสหนึ่งๆ โดยเฉพาะ
ความสัมพันธ์ระหว่างคลาส โดยปกติแล้วคลาส X และคลาส Y จะมีความสัมพันธ์กันในกรณีดังต่อไปนี้: ออปเจคของคลาส X ทำหน้าที่ส่ง message ไปยังออปเจคของคลาส Y ออปเจคของคลาส X สร้างออปเจคของคลาส Y ออปเจคของคลาส X มี attribute ที่เป็นออปเจคจากคลาส Y หรือกลุ่มของออปเจคจากคลาส Y ออปเจคของคลาส X ทำหน้าที่รับ message จากออปเจคของคลาส Y ในรูปของ argument
Unrelated Classes
class CarDemo1 { public static void main (String [] args) { Student st=new Student(5403013014,”hunsa”); Book book=new Book(“java”); System.out.print(st.getName() +” read “ +book.getName()); }
Dependency Relationship (ความสัมพันธ์แบบขึ้นอยู่กับ) เป็นความสัมพันธ์ที่เกิดขึ้นจากการทำงานของคลาสหนึ่งที่มีลักษณะขึ้นอยู่กับคลาสอื่น ๆ ความสัมพันธ์ที่เกิดขึ้นนี้จะมีระยะเวลาสั้น ๆ ใน UMLความสัมพันธ์แบบนี้อาจสรุปการทำงานได้ดังนี้ ออปเจคอาจสร้างออปเจคอื่นในลักษณะที่เป็นส่วนหนึ่งของเมธอด เพื่อร้องขอให้เกิดการกระทำสิ่งใดสิ่งหนึ่งจนกระทั่งเสร็จสิ้น และความสัมพันธ์นั้น ๆ จะสิ้นสุดลงทันที ออปเจคอาจทำการสร้างออปเจคอื่นในลักษณะที่เป็นส่วนหนึ่งของเมธอด เพื่อกระทำสิ่งใดสิ่งหนึ่งและคืนค่ากลับไปยังเมธอดที่เรียกใช้ ออปเจคอาจเรียกใช้เมธอดที่รับค่าพารามิเตอร์ในรูปของของออปเจค เพื่อใช้และแก้ไขข้อมูลภายในออปเจคนั้น ๆ จากนั้นความสัมพันธ์จะสิ้นสุดลงเมื่อการทำงานของเมธอดเสร็จสิ้น
Dependency Relationship
class Car { private String model; private String manufacturer; public Car (String model, String manufacturer) { this.model = model; this.manufacturer = manufacturer; } public String getEngine ( Engine e) { return e.getType(); public String getModel () { return model; public String getManufacturer () { return manufacturer; class Engine { private String type; Engine (String type) { this.type = type; } public String getType () { return type;
Association Relationship (ความสัมพันธ์แบบเกี่ยวข้องโดยตรง) ความสัมพันธ์แบบนี้จะคล้ายกับความสัมพันธ์แบบ Dependency แต่จะแตกต่างกันตรงที่ช่วงเวลาที่เกิดความสัมพันธ์กันจะมีระยะเวลานาน และมีลักษณะเป็นความสัมพันธ์แบบโครงสร้าง ความสัมพันธ์แบบนี้อาจสร้างขึ้นได้โดยการการกำหนดคลาสอื่นในรูปของแอททริบิวต์ภายในคลาส และสามารถเรียกใช้เมธอดจากคลาสนั้นได้ในกรณีที่ต้องการ ความสัมพันธ์แบบนี้อาจถูกมองในรูปของการมีอยู่ (has-a) ได้ เช่น ออปเจคจากคลาสหนึ่งมีค่าอ้างอิงไปยังออปเจคจากคลาสอื่นได้
แสดงความเกี่ยวข้องระหว่างนักศึกษากับรถ
Aggregation เป็นรูปแบบหนึ่งของ Association ซึ่งมีความสัมพันธ์ระหว่างWhole และParts โดยเรียกความสัมพันธ์นี้ว่า Whole -part ซึ่งAggregation (Whole-part ) นี้ยังแบ่งออกเป็น 2 รูปแบบคือ แบบShared Aggregation และComposite Aggregation
Shared Aggregation หมายถึง ความสัมพันธ์แบบเป็นส่วนหนึ่งของ (a part of ) โดยจะมีคลาสที่ใหญ่ที่สุดเป็นออบเจ็กต์หลัก และมีคลาสอื่น ๆ เป็นส่วนหนึ่งของออบเจ็กต์ ดังรูป ที่สามารถแยกจากกันได้ แสดงความสัมพันธ์แบบ Aggregation
Shared Aggregation public class Car { private String nameCar; private engine myEngine; private wheel myWheel; public void run( ) }
Composite Aggregation หมายถึง ความสัมพันธ์ที่มีความข้องเกี่ยวกันเสมอ เช่นห้องเรียนจะไม่สามารถมีได้หากไม่มีนักศึกษา ดังรูป
public class ClassRoom { private Sdudent[] studentIn; public String nameclassroom; public String getNameClassRoom( ) return nameclassroom; }
Generalization หมายถึง ความสัมพันธ์ระหว่างคลาสในลักษณะของการสืบทอดคุณสมบัติ จากโครงสร้างคลาสหนึ่งไปยังโครงสร้างอีกคลาสหนึ่ง (SuperClass และ SubClass) ดังรูป
แสดงความสัมพันธ์แบบ Generalization People Student Teacher