การเขียนโปรแกรมเชิงวัตถุ
จากวิกิพีเดีย สารานุกรมเสรี
การเขียนโปรแกรมเชิงวัตถุ (Object-Oriented Programming, OOP) เป็นแบบอย่างการเขียนโปรแกรมคอมพิวเตอร์ ที่ให้ความสำคัญกับ วัตถุ ซึ่งสามารถนำมาประกอบกันและนำมาทำงานรวมกันได้ โดยการแลกเปลี่ยนข่าวสารเพื่อนำมาประมวลผลและส่งข่าวสารที่ได้ไปให้ วัตถุ อื่นๆที่เกี่ยวข้องเพื่อให้ทำงานต่อไป
แนวคิดการเขียนโปรแกรมแบบดังเดิมมักนิยมใช้ การเขียนโปรแกรมเชิงกระบวนการ (Procedural Programming) ซึ่งให้ความสำคัญกับขั้นตอนกระบวนการที่ทำ โดยแบ่งโปรแกรมออกเป็นส่วนๆตามลำดับขั้นตอนการทำงาน แต่แนวคิดการเขียนโปรแกรมเชิงวัตถุนั้นให้ความสำคัญกับ ข้อมูล(data) และ พฤติกรรม(behavior) ของวัตถุ และความสัมพันธ์กันระหว่างวัตถุกันมากกว่า
สารบัญ |
[แก้] เปรียบเทียบแนวคิดระหว่างการเขียนโปรแกรมเชิงกระบวนการ และเชิงวัตถุ
ตัวอย่างตู้ขายเครื่องดื่มอัตโนมัติ
[แก้] วิธีการคิดแบบการเขียนโปรแกรมเชิงกระบวนการ
เมื่อมีการหยอดเหรียญเข้าตู้:
- ตรวจสอบจำนวนเหรียญและชนิดของเหรียญ
- แสดงผลชนิดของน้ำที่สามารถเลือกซื้อได้
- ตรวจสอบจำนวนน้ำกระป๋องที่มีอยู่ในตู้
- รับผลการเลือกชนิดน้ำ
- ส่งน้ำที่เลือกออกมาจากช่อง
- จัดเก็บเงินเข้าระบบ
- หากมีเงินถอน ให้ถอนเงินที่เหลือ ที่ช่องรับเงินทอน
[แก้] วิธีการคิดแบบการเขียนโปรแกรมเชิงวัตถุ
ตู้ขายเครื่องดื่มอัตโนมัติ ประกอบด้วยส่วนประกอบต่างๆได้แก่ หน่วยตรวจสอบและจัดการเรื่องเงิน หน่วยจัดการเครื่องดื่ม หน่วยแสดงผลและรอรับคำสั่ง
- หน่วยตรวจสอบและจัดการเรื่องเงิน มีข้อมูลเกี่ยวกับเงินที่ได้รับ และเงินที่มีอยู่ในระบบ สามารถรับและตรวจสอบเงินที่หยอดเข้ามาได้ และถอนเงินได้
- หน่วยจัดการเครื่องดื่ม มีข้อมูลชนิดของเครื่องดื่ม จำนวนเครื่องดื่ม สามารถจัดเตรียมชนิดเครื่องดื่มที่พอกับเงินที่หยอด และสามารถจ่ายเครื่องดื่มออกมาจากตู้ได้
- หน่วยแสดงผลและรอรับคำสั่ง มีหน้าที่รอรับคำสั่ง และแสดงผลเงินที่หยอดเข้ามา
หมายเหตุ ตัวอย่างนี้เป็นเพียงตัวอย่างโดยสังเขป
[แก้] แนวคิดที่สำคัญของการเขียนโปรแกรมเชิงวัตถุ
- คลาส (Class) - เป็นชนิดของ วัตถุ โดยกำหนดว่า วัตถุ จะประกอบไปด้วย ข้อมูล(data) หรือคุณสมบัติ(property) และ พฤติกรรม(Behavior)หรือการกระทำ(method) อะไรบ้าง ซึ่ง คลาส (เช่น มนุษย์) เป็นโครงสร้างพื้นฐานของการเขียนโปรแกรมเชิงวัตถุ
- วัตถุ (Object) - โดยมากจะเรียกว่า ออปเจ็ค คือ ตัวตน(instance) ของ คลาส(เช่น นายทักษิณ, นายสนธิ) ซึ่งจะเกิดขึ้นระหว่าง run-time โดยแต่ละ ออปเจ็ค จะมีข้อมูลเฉพาะของตัวเอง ทำให้ ออปเจ็ค แต่ละ ออปเจ็ค ของ คลาส ซึ่งใช้ source code เดียวกันมีคุณลักษณะและคุณสมบัติที่แตกต่างกัน
- Encapsulation - วิธีการกำหนดสิทธิในการเข้าถึงข้อมูล หรือการกระทำกับ ออปเจ็ค ของ คลาสนั้นๆ ทำให้แน่ใจได้ว่าข้อมูลของออปเจ็คนั้นจะถูกเปลี่ยนแปลงแก้ไขผ่านทาง methods หรือ properties ที่อนุญาตเท่านั้น (เช่น การกำหนดตำแหน่งทางการเมือง เป็น public method ที่ผู้อื่นสามารกระทำได้ ส่วนการลาออกจากตำแหน่ง เป็น private method ที่มีแต่ ออปเจ็ค ของ คลาส เท่านั้นที่จะสามารถทำได้ แต่การกดดันและการขับไล่สามารถสร้าง data ที่อาจจะส่งผลเกิดการลาออกได้เช่นกัน)
- Inheritance - การสืบทอดคุณสมบัติ เป็นวิธีการสร้าง คลาสย่อย (subclass) ซึ่งจะเป็นกำหนดประเภทของวัตถุให้จำเพาะเจาะจงขึ้น ซึ่ง ซับคลาส จะได้รับถ่ายทอดคุณสมบัติต่างๆมาจากคลาสหลักด้วย (เช่น คลาส มนุษย์ สืบทอดมากจาก คลาส สิ่งมีชีวิต)
- Abstraction - การแสดงถึงคุณลักษณะและพฤติกรรมของ object เท่าที่จำเป็นต้องรับรู้และใช้งาน โดยซ่อนส่วนที่เหลือเอาไว้เพื่อไม่ให้เกิดความสับสน เช่น ตามปกติแล้ว นายทักษิณ จัดเป็นตัวตนของ คลาส มนุษย์ ซึ่งจะมีพฤติกรรม การกระทำทุกอย่างที่ตามที่กำหนดไว้ตามโครงสร้างของ คลาส มนุษย์ แต่ในบางกรณีที่นำไปใช้งาน เราไม่ต้องการให้เกิดการสับสนต่อการใช้งานหรือการจัดประเภทมากเราสามารถจัดการหรือใช้งาน ออปเจ็ค นายทักษิณ ให้อยู่ในรูปของสิ่งมีชิวิต ก็ได้
- Polymorphism - เป็นวิธีการกำหนดรูปแบบการกระทำที่เหมือนกันแต่ได้ผลที่แตกต่างการ เช่น การเปล่งเสียง เป็น method หลักของ คลาส สิ่งมีชีวิต ซึ่งมีคลาส มนุษย์ และคลาสสุนัข เป็น ซับคลาส แต่ผลของการเปล่งเสียงของออปเจ็คจากคลาสทั้งสองจะออกมาไม่เหมือนกัน
[แก้] ตัวอย่างภาษาที่สนับสนุนการเขียนโปรแกรมเชิงวัตถุ
- Ada 95
- C#
- C++
- Common Lisp Object System
- Eiffel
- Fortran 2003
- JADE
- Java
- Modula-3
- Nice
- Oberon
- Objective-C
- Objective Modula-2
- OCaml
- Object Pascal
- Perl
- PHP
- Python
- REALbasic
- Ruby
- Simula
- Sleep
- Smalltalk
- Specman
- SystemVerilog
- UnrealScript
- Visual Basic
- Visual Basic.NET
- Visual FoxPro
![]() |
การเขียนโปรแกรมเชิงวัตถุ เป็นบทความเกี่ยวกับ ซอฟต์แวร์ หรือโปรแกรมคอมพิวเตอร์ ที่ยังไม่สมบูรณ์ ต้องการตรวจสอบ เพิ่มเนื้อหา หรือเพิ่มแหล่งอ้างอิง คุณสามารถช่วยเพิ่มเติมหรือแก้ไข เพื่อให้สมบูรณ์มากขึ้น |