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