โดย ดารณี เส้งศักดิ์
ถ้าย้อนหลังไปถึงสมัย 1960s เป็นต้นมา การออกแบบโดยใช้ Structured Programming Model มีบทบาทมาก แต่มาในปัจจุบัน Object Oriented Modeling and Design กลับมีบทบาทมากกว่า ทั้งนี้ก็เนื่องมาจาก การพัฒนาซอฟต์แวร์ โดยใช้ Structured Programming Approach ไม่เป็นที่ยอมรับนัก ในการพัฒนาระบบใหญ่ๆ ที่มีความซับซ้อน เนื่องจากซอฟต์แวร์ ที่พัฒนาโดยใช้วิธี Structure Programming นั้น มีขีดจำกัด และยากต่อการ maintain เมื่อมีการเปลี่ยนแปลง user requirements ด้วยเหตุนี้ จึงได้มีการพัฒนา Methodology ใหม่ขึ้นมา เรียกว่า Object Oriented จริงๆ แล้ว เนื้อหาของ Object Oriented นั้น มีรายละเอียดมาก และซับซ้อน ในบทความนี้ ผู้เขียนมีจุดประสงค์ ที่จะช่วยให้ผู้อ่าน เข้าใจถึง Concept ของ Object Oriented อย่างง่ายๆ ดังนี้
Object Oriented คืออะไร
เพื่อที่จะให้ผู้อ่านเข้าใจ ถึงความหมายของ Object Oriented Design ง่ายขึ้น ให้เริ่มจาก การมองไปรอบๆ ตัวเรา ทุกๆ ที่คุณจะเห็น วัตถุ เรียกว่า Objects เช่น คน รถ ก้อนหิน เป็นต้น นี่เป็นขั้นตอนแรก ของการคิดแบบ Object Oriented approach ต่อมา เราก็มารู้จัก Object นั้นๆ โดยการศึกษา ถึงลักษณะหรือ คุณสมบัติ เรียกว่า Attributes และการทำงาน หรือ พฤติกรรม เรียกว่า Behaviors ของ Objects นั้นๆ เช่น คน มี Attributes คือ ชื่อ นามสกุล ความสูง เป็นต้น และมี Behaviors คือสามารถ กิน เดิน วิ่ง นั่ง ได้ เราสามารถบอกถึง Attributes และ Behaviors ของ Objects อื่นๆ ได้เช่นเดียวกัน ตอนนี้หันไปทางไหน คุณก็จะเห็นสิ่งต่างๆ เป็น Object ที่มี Attributes และ Behaviors ได้แล้ว แต่อย่างไรก็ตาม ต่าง Object กัน สามารถมี Attributes และ Behaviors ที่คล้ายกันได้ ยกตัวอย่าง เปรียบเทียบระหว่าง เด็กทารกกับผู้ใหญ่หรือ รถยนต์กับรถบรรทุก ในกรณีนี้ Object Oriented Programming สามารถจัดประเภทของ Objects ที่คล้ายกัน เข้าไว้ด้วยกันเรียกว่า Class ซึ่ง Class ก็คือที่มาของ Object (Object ถูก Initiated จาก Class) เช่น รถยนต์กับรถบรรทุก สามารถจัดให้อยู่ใน Class ของรถ ซึ่งเป็น Superclass เมื่อ Class รถถูกสร้างขึ้นมา เราก็สามารถสร้าง Class ของรถยนต์และรถบรรทุก ซึ่งเป็น Subclasses โดยใช้ Attributes และ Behaviors ร่วมกับ Superclass ในกรณีนี้คือ Class รถ วิธีนี้เรียกว่า Inheritance ซึ่งก็คือการใช้ Attributes และ Behaviors ร่วมกันระหว่าง Class ต่างๆ นั่นเอง
รูปข้างล่างแสดงความสัมพันธ์ระหว่าง Superclass และ Subclass ในรูปของ Inheritance

เมื่อสร้าง Subclass เราสามารถเพิ่ม Attributes และ Behaviors เฉพาะตัว นอกเหนือจากส่วนที่ inherit มาจาก Superclass ได้ เช่นจุดประสงค์ในการใช้งาน ของรถยนต์ และรถบรรทุกต่างกัน
Inheritance มีประโยชน์มาก เราสามารถสร้าง Subclasses ขึ้นใหม่ ได้โดยไม่ยุ่งยาก เช่นจากตัวอย่างข้างบน คุณสามารถ เพิ่มรถชนิดอื่นเข้าไป โดยไม่ต้องแก้ไข Class ต่างๆ ที่มีอยู่แล้ว เพียงแต่สร้าง Subclass ขึ้นมาใหม่แล้ว inherit superclass เข้าไป จะเห็นได้ว่า ในการพัฒนาซอฟต์แวร์ โดยใช้ Object Oriented Programming จะเน้นการสร้าง Class อย่างเช่นในภาษา C++ และ Java เป็นต้น ในขณะที่ การพัฒนาซอฟต์แวร์ โดยใช้ Structured Programming อย่างเช่นในภาษา C และ Pascal จะเน้นการสร้าง Procedures และ Functions โดยสรุปแล้ว การออกแบบโดยวิธี Object Oriented หมายถึง การออกแบบให้ซอฟต์แวร์ ประกอบด้วย การทำงานร่วมกัน ของกลุ่มของ Structured Objects (Classes) โดยที่ Objects เหล่านั้น สามารถมีลักษณะร่วมกัน มี Relationship ต่อกัน และสมารถใช้ Attributes และ Behaviors เฉพาะตัว ในการระบุตัวเอง