การออกแบบ Object
จะกล่าวครอบคลุมเกี่ยวกับความสัมพันธ์ระหว่าง Object ซึ่งในบทก่อนหน้านี้ได้กล่าวไปบ้างแล้วเกี่ยวกับเรื่องนี้ ที่มีความเกี่ยวข้องกันของ object ที่ใช้ในการออกแบบคือ inheritance และ composition และภายในบทเรียนนี้ยังได้กล่าวถึง aggregation และ association ซึ่งเป็นส่วนประกอบของ composition ต่อจากนั้นจะกล่าวเพิ่มเติมถึงความสัมพันธ์ระหว่าง object ซึ่งเรียกว่า Cardinality โดยในการออกแบบสามารถใช้แสดงเป็นตัวเลขหรือ ตัวอักษรบนแผนภาพ UML ด้วย นอกจากนี้แล้วในตอนท้ายของบท ยังได้ยกตัวอย่างการออกแบบระบบโดยใช้ความรู้ที่ได้เรียนมา มาประกอบเข้าด้วยเป็นระบบขนาดเล็กระบบหนึ่ง
ในการออกแบบระบบทาง OBJECT-ORINTED นั้น คุณสมบัติที่สำคัญและสามารถช่วยในการออกแบบได้คือ การ inheritance และ composition ซึ่งทั้งสองความหมายนี้มีความแตกต่างกัน เพราะโดยหลักความเป็นจริงแล้ว inheritance หมายถึง class ใดๆ ที่สืบทอดลักษณะมาจาก class อื่นที่เป็น Superclass โดยมีการเชื่อมต่อกันในลักษณะระดับชั้น (level) ซึ่งความสัมพันธ์ในลักษณะนี้ไม่ใช้การติดต่อกันของ object แต่เป็นการสืบทอดลักษณะเท่านั้น เช่น Employee คือ person และการทำงานของ Employee จะไม่มีส่ง message ไปยัง person object เพราะ Employee object มีหน้าที่เพียงให้บริการต่อ person object นั้น สรุปได้ว่า Employee object คือ person object หนึ่งนั่นเอง
อย่างไรก็ตาม compositionจะอยู่ในสถานะที่ต่างจาก inheritance เพราะ composition จะแทนได้ด้วยการติดต่อกันระหว่าง object ต่างๆ มีการับส่ง message แลกเปลี่ยนกันเพื่อร้องขอการทำงานหรือให้บริการ ซึ่ง composition จะช่วยให้ออกแบบระบบได้ง่ายขึ้น
ความสัมพันธ์ในแบบ Composition
ความสัมพันธ์แบบ inheritance จะเป็นแบบ is-a relationship ซึ่งต่างจากความสัมพันธ์ในแบบcomposition ที่เป็นแบบ is-a relationship ที่แสดงให้เห็นถึงความสัมพันธ์ระหว่างพวงมาลัยรถยนต์และรถยนต์ เมื่อได้เห็นจะรู้ได้ทันทีว่าภายในรถยนต์ต้องมีพวงมาลัยรถเป็นส่วนประกอบ เขียนลักษณะความสัมพันธ์ด้วยโครงสร้างภาษาอังกฤษได้ว่า car has a steeting wheel
ข้อดีของ composition มีดังนี้
-ทำให้ระบบมีความซับซ้อนน้อยที่สุด โดยจดจำเพียงข้อมูลชิ้นใหญ่ๆ ที่ประกอบจากส่วนประกอบย่อยๆ หลายๆ ส่วน เช่น เมื่อพูดถึง พวงมาลัย เกียร์ เครื่องยนต์ เบรก เบาะนั่ง กระจก ฯลฯ สิ่งที่กล่าวมาทั้งหมดนี้สามารถพูดได้ง่ายๆ ว่า “รถยนต์” และสามารถรู้ได้ทันทีว่าภายในรถยนต์ประกอบด้วยส่วนต่างๆ เหล่านี้ โดยไม่จำเป็นต้องบรรยายถึงส่วนประกอบย่อยๆ ทั้งหมด
-composition มีส่วนช่วยในการ reuse เช่น การแลกเปลี่ยนส่วนต่างๆ ของระบบสามารถทำได้เพราะชิ้นส่วนต่างๆ เป็น object ที่มีการทำงานเป็นของตนเอง และไม่ถูกควบคุมจาก object อื่นยกตัวอย่าง รถยนต์หนึ่งคัน ล้อที่ทำหน้าที่ช่วยในการเคลื่อนที่รถยนต์นั้นสามารถถอดเปลี่ยนได้ละสามารถใช้ล้อยี่ห้ออื่นได้เช่นกัน ไม่จำเป็นจะต้องเป็นชิ้นส่วนเดิมเท่านั้น
ดังนั้น ในการสร้างโครงสร้าง class ของ ล้อรถยนต์ ขึ้นมาเพียง 1 ครั้ง จะสามารถนำ class ล้อนี้ไปใช้ได้กับ class รถยนต์ ทุกๆ คัน จึงไม่ต้องมีการสร้าง class ล้อ ขึ้นมาใหม่
การแบ่งระบบออกเป็นส่วนการทำงานย่อยๆ นั้น ส่วนต่างๆ จะสามารถทำงานได้เป็นอิสระต่อกันส่งผลให้การทดสอบ หรือปรับปรุงแก้ไขแต่ละส่วนสามารถทำได้อย่างอิสระ ไม่ส่งผลกระทบต่อ object หรือส่วนย่อยอื่นๆ ในระบบ จะเห็นได้ว่า class ของรถยนต์หนึ่งคันจะประกอบไปด้วย class ต่างๆ โดยที่แต่ละ class เหล่านี้มีหน้าที่เฉพาะในการทำงานของตนเอง เช่น class ล้อ จะทำหน้าที่หมุนเพื่อให้รถเคลื่อนที่ class ประตู จะทำหน้าที่เปิด และปิดเมื่อต้องการเข้าหรือออกจากรถ เป็นต้น เมื่อต้องทำการแก้ไขส่วนประกอบภายในของ class รถยนต์ เช่น แบตเตอรี่หมด ก็ทำการเปลี่ยนแบตเตอรี่ (ข้องเกี่ยวกับ class แบตเตอรี่เพียง class เดียว) หรือต้องการให้เครื่องยนต์มีความแรงเพิ่มมากขึ้น ก็สามารถเพิ่มกำลังความเร่งให้กับเครื่องยนต์ได้ (ข้องเกี่ยวกับ class เครื่องยนต์เพียง class เดียว) หรือเมื่อยางล้อแบน ก็สามารถสูบลมเพิ่มให้กับยางรถยนต์ได้ (ข้องเกี่ยวกับ class ยางรถยนต์ เพียง class เดียว) จะเห็นได้ว่าเมื่อแยกส่วนประกอบต่างๆ ออกเป็น class จะสะดวกในการทำงานของระบบมากขึ้น
Coppyright 2004 By Webmaster All Right Reserved Comments