Class Diagram (ตอนที่ 2)



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

                        รูปแบบความสัมพันธ์ระหว่างคลาส (class relationship) ของคลาสไดอะแกรมสามารถแบ่งออกได้เป็นรูปแบบต่าง ๆ ดังต่อไปนี้

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



2. การเป็นส่วนหนึ่งของ (Aggregation)
แนวคิดนี้ต่างจากแนวคิดการสืบทอดคุณสมบัติที่จะมองว่าคลาสหนึ่งสืบทอดคุณสมบัติจากอีกคลาสหนึ่ง แต่จะมองคลาสหนึ่ง ๆ สามารถมีส่วนประกอบเป็นคลาสย่อย ๆ อะไรบ้าง (ดูรูปข้างล่างประกอบ)




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




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




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


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

1..1 หนึ่งถึงหนึ่ง
0..* ศูนย์ถึงหลายๆ
1..* หนึ่งถึงหลายๆ
0..1 ศูนย์ถึงหนึ่ง
2..4 สองถึงสี่
1..3,5 หนึ่งถึงสาม หรือถึงห้า



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