บทที่ 3 แนวคิดการเขียนโปรแกรมเชิงวัตถุ

แนวคิดการเขียนโปรแกรมเชิงวัตถุ
จากเนื้อหาเรื่องของการเขียนโปรแกรมเชิงโครงสร้างจะพบว่าแม้ว่า โปรแกรมประกอบด้วยคำสั่งและข้อมูล ซึ่งการจัดระเบียบคำสั่งเพียงอย่างเดียวก็อาจจะทำให้เกิดข้อผิดพลาดขึ้นได้ แม้มีการนำฟังก์ชันหรือซับรูทีนมาช่วยในการจัดการกับข้อมูล แต่ก็อาจจะถูกวางไว้อย่างกระจัดกระจาย สร้างความลำบากในการติดตามสืบหาว่าข้อมูลนี้ถูกเปลี่ยนแปลงโดยฟังก์ชันใด
ดังนั้นจากปัญหานี้จึงมีการนำแนวคิดเชิงวัตถุมารวบรวมกลุ่มของเมธอดและแอบทริบิวต์ ที่มีลักษณะการทำงานคล้ายกันไว้ในที่เดียวกันเพื่อให้ง่ายต่อการเรียกใช้ ซึ่งในแนวคิดนี้ชุดคำสั่งของการเขียนโปรแกรมเชิงวัตถุแทนที่นักศึกษาจะเป็นคำสั่งเขียนเรียงต่อกันไปเรื่อยๆ แต่จะเป็นการนิยามวัตถุหรือสร้างวัตถุขึ้นมา จากนั้นโปรแกรมจะทำงานได้เอง ถ้าวัตถุนั้นถูกนิยามขึ้นอย่างเหมาะสม แต่การเขียนโปรแกรมเชิงวัตถุ จะต้องอาศัยระยะเวลาในการศึกษานานพอสมควร ดังนั้นการเตรียมพร้อมในการเขียนโปรแกรมเชิงวัตถุจะต้องทำความเข้าใจการเขียนเขียนโปรแกรมเชิงโครงสร้างมาบ้าง  และโดยเฉพาะอย่างยิ่งนักเขียนโปรแกรมต้องมีความชำนาญในแนวคิดการสร้างวัตถุสมมติที่ทำงานตามอย่างที่เราต้องการได้ ซึ่งเหตุผลสำคัญที่ควรศึกษาการเขียนโปรแกรมเชิงวัตถุนั้น เนื่องจากโปรแกรมประยุกต์ที่ใช้งานจริงในปัจจุบันส่วนมากแล้วเป็นการเขียนด้วยโปรแกรมด้วยแนวคิดเชิงวัตถุ การศึกษาการเขียนโปรแกรมเชิงวัตถุจึงเป็นสิ่งที่นักเขียนโปรแกรมรุ่นใหม่ทุกคนควรจะฝึกฝนไว้  การทำความเข้าใจองค์ประกอบของวัตถุมีความจำเป็นที่นักศึกษาต้องทำความเข้าใจเนื่องจากเป็นแนวคิดขั้นพื้นฐานในระบบเชิงวัตถุก่อนการลงมือศึกษาการเขียนโปรแกรมเชิงวัตถุซึ่งในการเขียนโปรแกรมเพื่อวิเคราะห์ปัญหานั้นนักศึกษาจะต้องเข้าใจถึงการที่วัตถุจะสามารถสื่อสารกันโดยการส่งข้อความระหว่างวัตถุ โดยวัตถุนั้นก็จะสามารถโต้ตอบกันได้โดยไม่จำเป็นต้องทราบรายละเอียดของข้อมูลหรือชุดคำสั่งที่เขียนของวัตถุนั้น

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


การจะสร้างบ้านในแต่ละหลังได้จำเป็นอย่างยิ่งที่ต้องมีแบบแปลนหรือพิมพ์เขียวที่สถาปนิก ทำการออกแบบไว้ดังนั้นเมื่อนำไปสร้างเป็นบ้าน บ้านแต่ละหลังก็จะมีความเหมือนกันเนื่องจากมีต้นแบบจากแบบแปลนเดียวกัน ซึ่งบ้านบางหลังสามารถต่อเติมองค์ประกอบเพิ่มเข้าไปได้ แต่จะต้องมีคุณสมบัติและการทำงานจากคลาสแม่ การกระทำอย่างนี้เรียกได้ว่าเป็นการสืบทอดคุณสมบัติจากคลาสแม่ไปสู่คลาสลูก
สำหรับวัตถุมีส่วนประกอบหลักๆ คือ  พฤติกรรมการทำงานของวัตถุหรือเมธอด(method) และ คุณลักษณะหรือแอบทริบิวต์(Attribute) โดยเนื้อหาที่ผ่านมาเป็นการได้ศึกษาการจัดระเบียบในการเขียนโปรแกรมเชิงโครงสร้างโดยใช้ ฟังก์ชั่น หรือ ซับรูทีน มาช่วยเพื่อให้การเขียนโค้ดมีความกระชับและสามารถแก้ไขได้สะดวกมากยิ่งขึ้น
ประโยชน์ของการเขียนโปรแกรมเชิงวัตถุ
1.  ช่วยลดเวลาในการพัฒนาโปรแกรม
          2.  สามารถนำเอาออบเจ็คที่คนอื่นพัฒนามาใช้งานได้ (
reuseability)
          3.  สามารถพัฒนาต่อยอด (
Extensibility) จากออบเจ็คที่มีอยู่แล้วได้
          4.  สามารถดูแลแก้ไขโปรแกรมได้ง่าย เนื่องจากออบเจ็คจะมีความสมบูรณ์ในตัว การแก้ไขโปรแกรมสามารถแก้ไขเฉพาะออบเจ็คที่ต้องการเท่านั้น ซึ่งจะไม่กระทบต่อส่วนอื่นๆ ของโปรแกรมแต่อย่างใด
          5. และมีประโยชน์อีกมากมายที่ไม่ได้กล่าวไว้ในที่นี้



แนวคิดของเอลัน เคย์ (Alan Kay)
เป็นผู้ที่พัฒนาภาษา small Talk ซึ่งเป็นต้นแบบของการเขียนโปรแกรมเชิงวัตถุได้ให้นิยามของภาษาเชิงวัตถุไว้ดังนี้
       1.  ทุกๆ สิ่งเป็นวัตถุ ทั้งวัตถุแบบรูปธรรมและนามธรรมล่วนแล้วเป็นวัตถุ ซึ่งในโปรแกรมจะจำลองลักษณะและความสามารถของวัตถุต่างๆ ที่อยู่ในโลกจริง เช่น
(1) สิ่งไม่มีชีวิต เช่น รูปสี่เหลี่ยม โทรทัศน์ หรือ บ้าน
(2) สิ่งมีชีวิต เช่น นักศึกษา นก หรือ ต้นไม้
(3) สิ่งที่เป็นนามธรรม เช่น แนวความคิด หลักการ หรือ วิธีการ
        2.  โปรแกรม คือ กลุ่มของวัตถุที่ส่งสารบอกกันเพื่อทำงาน ซึ่งการสั่งให้วัตถุทำงานนั้นจะมีวิธีการติดต่อกันโดยการส่งข้อความ (message) หรือคำสั่งไปหากันระหว่างวัตถุ เมื่อวัตถุได้รับข้อความแล้ว วัตถุนั้นก็จะทำงานตามวิธีการหรือคำสั่งต่างๆที่เขียนไว้ในเมธอด (method)
        3. วัตถุแต่ละวัตถุมีหน่วยความจำ วัตถุในความหมายของการเขียนโปรแกรมเชิงวัตถุ จะต้องมีหน่วยความจำของตัวเอง กล่าวคือในส่วนที่เก็บข้อมูลหรือส่วนที่ใช้ในการเก็บค่าในวัตถุนั้นๆ ซึ่งเรียกว่าคุณลักษณะ (Attribute) ซึ่งส่วนของข้อมูลนี้อาจจะประกอบขึ้นจากวัตถุอื่นๆ ได้
         4.  วัตถุจะต้องจัดอยู่ในกลุ่มหรือชนิด ซึ่งชนิดของวัตถุ คือ คลาส (Class) ในการเขียนโปรแกรมเชิงวัตถุจะต้องเขียนคลาสขึ้นมาก่อนเสมอ แล้วจึงจะสร้างวัตถุจากคลาส ดังนั้นวัตถุจึงจะต้องมีชนิดหรือต้นแบบของคลาสใดคลาสหนึ่ง ดังนั้น คลาส เปรียบเหมือน แม่พิมพ์ ส่วนวัตถุ คือ สิ่งที่เกิดจากแม่พิมพ์ วัตถุที่เกิดจากคลาสเดียวกันจึงมีคุณสมบัติพื้นฐานเหมือนกัน เช่น ดินสอไม้ และดินสอกดล่วนแล้วก็มีคุณสมบัติและพฤติกรรมพื้นฐานมาจาก ดินสอ
       5.  วัตถุที่จัดอยู่ในประเภทเดียวกันย่อมได้รับข่าวสารเหมือนกัน วัตถุที่อยู่ในประเภทเดียวกันย่อมได้ข่าวสารเหมือนกัน แต่วัตถุก็มีความอิสระจากกันในการทำงาน ซึ่งคุณสมบัติข้อนี้ทำให้การเขียนโปรแกรมเชิงวัตถุมีประสิทธิภาพเพิ่มขึ้นเพราะชนิดของวัตถุมิได้กำหนดหรืออยู่อย่างโดดๆ แต่สามารถจัดเป็นกลุ่ม  โดยคำสั่งสามารถกำหนดชนิดย่อย ๆ ของวัตถุได้อีก เช่น   คลาสแม่คือ shape (รูปร่าง) สามารถแตกออกเป็นชนิดที่จำเพาะลงไปเป็น Circle, Triangle, Rectangle เป็นต้น  ดังนั้น เมื่อวัตถุในคลาส Circle สามารถได้รับข่าวสารเหมือนกับ Triangle และ Rectangle


ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

บทที่ 11 ตอน 3 การออกแบบรายงานด้วย Crystal Report

บทที่ 6 กระบวนการพอลิมอร์ฟิซึม (Polymorphism)

บทที่ 11 ตอน 3 การออกแบบรายงานด้วย Crystal Report Ex2