อ.วิวัฒน์ ชินนาทศิริกุล Association Abstraction อ.วิวัฒน์ ชินนาทศิริกุล
วัตถุประสงค์ 1. เพื่อให้สามารถสร้างความสัมพันธ์ระหว่าง class ต่าง ๆ ใน problem domain โดยใช้ Association Abstraction ได้ 2. เพื่อให้สามารถใส่ Cardinality ของความสัมพันธ์ในเชิง Association ได้ถูกต้อง
Relationship (ความสัมพันธ์) ความสัมพันธ์ ต่าง ๆ ในชีวิตประจำวัน แม่มีลูก สามีรักภรรยา นายกบริหารประเทศ ปากกาอยู่บนโต๊ะทำงาน นักเรียนลงทะเบียนเรียน
สามารถจัดเอาความสัมพันธ์แบบ Aggregation เป็นความสัมพันธ์แบบ “is related to” ได้เช่นกัน เพราะการเป็นส่วนประกอบ หรือ การมีส่วนประกอบ ก็คือ ความสัมพันธ์เป็นเจ้าของ ( has a )นั่นเอง จากหลักการที่ว่า Class ต่างๆใน Domain สามารถมีความสัมพันธ์กันได้ เป็นที่มาของ Abstraction ที่เรียกว่า Association Abstraction
Cardinary ใน Association Abstraction จำนวนสมาชิกหรือตัวเลขที่ใช้แสดงจำนวนสมาชิก ที่สามารถมีได้ใน Class หนึ่งๆ ที่มีส่วนร่วมใน Association
ตัวอย่าง ผู้ชายมีภรรยาได้เพียง 1 คน หรือไม่มีเลย ในขณะเดียวกันผู้หญิงก็มีสามีได้เพียงคนเดียวหรือไม่มีเลย Cardinary ของความสัมพันธ์ได้แก่ Class Min Card Max Card ผู้ชาย 1 ผู้หญิง
Cardinary ของความสัมพันธ์ได้แก่ แม่ ลูก แม่สามารถมีลูกได้ตั้งแต่ 0 คน ถึงกี่คนก็ได้ ในทางกลับกันลูก 1 คนมีแม่ได้เพียงคนเดียว Cardinary ของความสัมพันธ์ได้แก่ Class Min Card Max Card แม่ 1 ลูก N
หลักการเขียน Diagram แสดง Association - ลากเส้นตรงเชื่อม Class โดยมีชื่อ Association กำกับที่เส้น - มีลูกศร แสดงเส้นทางในการอ่านความสัมพันธ์ - กำหนด min card และ max card กำกับที่ปลายเส้นตรงที่ติดกับ Class
ลูก แม่ ลูก แม่ ลูก แม่ ลูก แม่ ลูก แม่ ตัวอย่าง Association Abstraction แสดงความสัมพันธ์ของแม่มีลูก มี ลูก แม่ 1 มี ลูก แม่ 2 0..n มี ลูก แม่ 3 1..1 มี ลูก แม่ 4 1..1 0..n มี ลูก แม่ 5
ตัวอย่าง Association ของผู้ชายแต่งงานกับผู้หญิง 0..1 0..1 แต่งงาน ผู้หญิง ผู้ชาย ตัวอย่าง Association ของนักศึกษาลงทะเบียนรายวิชา 0..n 1..n ลงทะเบียน วิชา นักศึกษา
ตัวอย่าง จงเขียน Association Abstraction แสดงความสัมพันธ์ของคลาส เมื่อกำหนด Problem Domain ดังนี้ นักศึกษา สามารถไม่ลงทะเบียนเรียน หรือลงทะเบียนเรียนได้หลาย วิชา และในแต่ละรายวิชา อาจไม่มีนักศึกษาลงทะเบียนเลย หรือมีนักศึกษาลงทะเบียนได้หลายคน และอาจารย์ อาจไม่มีวิชาสอน หรือสอนได้หลายรายวิชา อาจารย์สอนนักศึกษาตั้งแต่ 1 คนขึ้นไป และนักศึกษาเรียนกับอาจารย์ตั้งแต่ 1 คนขึ้นไป
Association Abstraction แสดงความสัมพันธ์ระหว่าง นักเรียน – วิชาเรียน – อาจารย์ผู้สอน ลงทะเบียนเรียน สอน 1..n
ตัวอย่าง จงเขียน Association Abstraction แสดงความสัมพันธ์ของคลาส เมื่อกำหนด Problem Domain ดังนี้ บริษัทแห่งหนึ่ง มีประธานบริษัท 1 คนทำหน้าที่บริหารงาน และประธานทำหน้าที่ออกนโยบาย เพื่อใช้บริหารงานได้หลายนโยบาย หรือไม่ออกนโยบายเลย หัวหน้าแผนกรับนโยบายไปปฏิบัติ โดยที่นโยบายหนึ่งๆอาจถูกนำไปปฏิบัติโดยหัวหน้าแผนกได้หลายๆคน ขณะที่หัวหน้าแผนกแต่ละคนสามารถรับนโยบายได้หลายๆนโยบาย หน้าที่ของหัวหน้าแผนกคือการบริหารงานในแผนกของตนเพียง 1 แผนกเท่านั้น หัวหน้าแผนกจะจัดทำแผนกี่แผนก็ได้เพื่อกำหนดนโยบายการทำงานภายในแผนก แต่ละแผนกจะถูกแบ่งเป็นชิ้นงานย่อยๆตั้งแต่ 1 ชิ้นงานขึ้นไป โดยแต่ละชิ้นงานอาจถูกปฏิบัติด้วยเจ้าหน้าที่กี่คนก็ได้ และเจ้าหน้าที่แต่ละคนสามารถไม่ปฏิบัติ หรือปฏิบัติงานกี่ชิ้นก็ได้
Association Diagram ที่ได้ บริษัท ประธานบริษัท นโยบาย แผนก หัวหน้าแผนก แผนกงาน เจ้าหน้าที่ ชิ้นงาน 1..1 0..n 1..n บริหาร ออก ปฏิบัติ จัดทำ ปฏิบัติงาน
นักศึกษาที่ลงทะเบียน ตัวอย่าง การใช้ Abstraction ทั้ง 4 แบบ ใน Problem Domain มหาวิทยาลัย คณะวิชา อาจารย์ผู้สอน อาจารย์พิเศษ วิชาเรียน นักศึกษาที่ลงทะเบียน เรียนตามปกติ แบบไม่เอาหน่วยกิต สมชาย สมศรี วิชัย วินัย 1..n 0..n เรียน 1..1 มี วิชาสถิติ วิชาคอมพิวเตอร์ ภาษาอังกฤษ สอน อ.สมบูรณ์ อ.สุนัน คณะวิทยาศาสตร์ คณะครุศาสตร์ คณะวิทยาการจัดการ อ.ชุมพล
แบบฝึกหัด 1.2 ธนาคาร - สมุดบัญชี – ผู้ฝากเงิน 1. จงสร้าง Class Diagram ที่แสดงถึง Association ที่มี Cardinality ที่ถูกต้องของความสัมพันธ์ดังต่อไปนี้ 1.1 นักเรียน – วิชาเรียน – อาจารย์ผู้สอน 1.2 ธนาคาร - สมุดบัญชี – ผู้ฝากเงิน 1.3 ห้องสมุด – บรรณารักษ์ – หนังสือ - หมวดหนังสือ 1.4 เครื่องบิน – พนักงาน – ผู้โดยสาร - อาหาร 1.5 ผู้จัดการ - ร้านอาหาร – ลูกค้า – อาหาร - โต๊ะอาหาร
2. จงอธิบายความสัมพันธ์ ตามที่กำหนดในแผนภาพ 1..n 1..n ผู้จัดการ ร้านอาหาร เป็นเจ้าของ 1..n จ่ายเงินค่าอาหาร MK นายตัน 1..n Oishi 1..n โต๊ะอาหาร 1..n ลูกค้า 1..1 กิน นาย ศรราม มี อาหาร 0..n นางสาว สุวนันท์