ผลต่างระหว่างรุ่นของ "การเขียนโปรแกรมเชิงวัตถุ"
ล โรบอต เพิ่ม: ilo:Panangprograma a naitaratar iti bambanag |
ล Bot: Migrating 64 interwiki links, now provided by Wikidata on d:q79872 (translate me) ป้ายระบุ: ลบลิงก์ข้ามภาษา |
||
บรรทัด 81: | บรรทัด 81: | ||
{{Link FA|vi}} |
{{Link FA|vi}} |
||
[[af:Objekgeoriënteerde programmering]] |
|||
[[ar:برمجة كائنية التوجه]] |
|||
[[az:Obyekt yönümlü proqramlaşdırma]] |
|||
[[be:Аб'ектна-арыентаванае праграмаванне]] |
|||
[[be-x-old:Аб’ектна-арыентаванае праграмаваньне]] |
|||
[[bg:Обектно-ориентирано програмиране]] |
|||
[[bn:অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং]] |
|||
[[bs:Objektno orijentisano programiranje]] |
|||
[[ca:Programació orientada a objectes]] |
|||
[[cs:Objektově orientované programování]] |
|||
[[da:Objektorienteret programmering]] |
|||
[[de:Objektorientierte Programmierung]] |
|||
[[el:Αντικειμενοστρεφής προγραμματισμός]] |
|||
[[en:Object-oriented programming]] |
|||
[[eo:Objektema programado]] |
|||
[[es:Programación orientada a objetos]] |
|||
[[et:Objektorienteeritud programmeerimine]] |
|||
[[eu:Objektuei orientatutako programazio]] |
|||
[[fa:برنامهنویسی شیءگرا]] |
|||
[[fi:Olio-ohjelmointi]] |
|||
[[fr:Programmation orientée objet]] |
|||
[[gl:Programación orientada a obxectos]] |
|||
[[he:תכנות מונחה-עצמים]] |
|||
[[hr:Objektno orijentirano programiranje]] |
|||
[[hu:Objektumorientált programozás]] |
|||
[[id:Pemrograman berorientasi objek]] |
|||
[[ilo:Panangprograma a naitaratar iti bambanag]] |
|||
[[io:Objekt-orientizita programifo]] |
|||
[[is:Hlutbundin forritun]] |
|||
[[it:Programmazione orientata agli oggetti]] |
|||
[[ja:オブジェクト指向]] |
|||
[[ka:ობიექტზე ორიენტირებული პროგრამირება]] |
|||
[[kk:Объектіге-бағытталған бағдарламалау]] |
|||
[[ko:객체 지향 프로그래밍]] |
|||
[[ky:Обжектке багытталган программалоо]] |
|||
[[lt:Objektinis programavimas]] |
|||
[[lv:Objektorientētā programmēšana]] |
|||
[[mk:Објектно-ориентирано програмирање]] |
|||
[[ml:ഒബ്ജക്റ്റ് ഓറിയന്റഡ് പ്രോഗ്രാമിങ് ഭാഷ]] |
|||
[[mn:Объект хандалтат програмчлал]] |
|||
[[ms:Pengaturcaraan berorientasi objek]] |
|||
[[my:အော့ဗ်ဂျက် အိုရီယင့်တက် ပရိုဂရမ်းမင်း]] |
|||
[[nl:Objectgeoriënteerd]] |
|||
[[nn:Objektorientert programmering]] |
|||
[[no:Objektorientert programmering]] |
|||
[[pl:Programowanie obiektowe]] |
|||
[[pt:Orientação a objetos]] |
|||
[[ro:Programare orientată pe obiecte]] |
|||
[[ru:Объектно-ориентированное программирование]] |
|||
[[rue:Обєктово орьєнтоване проґрамованя]] |
|||
[[scn:Prugrammazzioni urientata all'uggetta]] |
|||
[[sh:Objektno orijentisano programiranje]] |
|||
[[simple:Object-oriented programming]] |
|||
[[sk:Objektové programovanie]] |
|||
[[sq:Programimi i orientuar në objekte]] |
|||
[[sr:Објектно-оријентисано програмирање]] |
|||
[[sv:Objektorienterad programmering]] |
|||
[[ta:பொருள் நோக்கு நிரலாக்கம்]] |
|||
[[tr:Nesne Yönelimli Programlama]] |
|||
[[uk:Об'єктно-орієнтоване програмування]] |
|||
[[ur:برمجہ شئے التوجہ]] |
|||
[[vi:Lập trình hướng đối tượng]] |
|||
[[wuu:面向对象程式编制]] |
|||
[[zh:面向对象程序设计]] |
รุ่นแก้ไขเมื่อ 05:31, 8 มีนาคม 2556
บทความนี้ไม่มีการอ้างอิงจากแหล่งที่มาใด |
การเขียนโปรแกรมเชิงวัตถุ (อังกฤษ: Object-oriented programming, OOP) คือหนึ่งในรูปแบบการเขียนโปรแกรมคอมพิวเตอร์ ที่ให้ความสำคัญกับ วัตถุ ซึ่งสามารถนำมาประกอบกันและนำมาทำงานรวมกันได้ โดยการแลกเปลี่ยนข่าวสารเพื่อนำมาประมวลผลและส่งข่าวสารที่ได้ไปให้ วัตถุ อื่นๆที่เกี่ยวข้องเพื่อให้ทำงานต่อไป
แนวคิดการเขียนโปรแกรมแบบดังเดิมมักนิยมใช้ การเขียนโปรแกรมเชิงกระบวนการ (Procedural Programming) ซึ่งให้ความสำคัญกับขั้นตอนกระบวนการที่ทำ โดยแบ่งโปรแกรมออกเป็นส่วนๆตามลำดับขั้นตอนการทำงาน แต่แนวคิดการเขียนโปรแกรมเชิงวัตถุนั้นให้ความสำคัญกับ ข้อมูล(data) และ พฤติกรรม(behavior) ของวัตถุ และความสัมพันธ์กันระหว่างวัตถุกันมากกว่า
เปรียบเทียบแนวคิดระหว่างการเขียนโปรแกรมเชิงกระบวนการ และเชิงวัตถุ
ตัวอย่างตู้ขายเครื่องดื่มอัตโนมัติ
วิธีการคิดแบบการเขียนโปรแกรมเชิงกระบวนการ
เมื่อมีการหยอดเหรียญเข้าตู้
- ตรวจสอบจำนวนเหรียญและชนิดของเหรียญ
- แสดงผลชนิดของน้ำที่สามารถเลือกซื้อได้
- ตรวจสอบจำนวนน้ำกระป๋องที่มีอยู่ในตู้
- รับผลการเลือกชนิดน้ำ
- ส่งน้ำที่เลือกออกมาจากช่อง
- จัดเก็บเงินเข้าระบบ
- หากมีเงินทอน ให้ทอนเงินที่เหลือ ที่ช่องรับเงินทอน
แนวทางการออกแบบและแก้ปัญหา
ความท้าทายในการออกแบบและพัฒนาโปรแกรมเชิงวัตถุมีหลายด้าน โดยแนวทางดังต่อไปนี้ เป็นแนวทางที่ได้รับการยอมรับอย่างกว้างขวางในการใช้เพื่อแก้ไขปัญหา
ดีไซน์แพตเทิร์น - แบบแผนและแนวทางการออกแบบ
ในการออกแบบและการพัฒนาโปรแกรมเชิงวัตถุ ได้มีการรวบรวมบันทึกวิธีการแก้ปัญหาที่ใช้ได้ผลสำหรับปัญหาที่เกิดขึ้นซ้ำๆ เสมอๆ วิธีการแก้ไขเหล่านี้สามารถนำมาใช้ได้บ่อยๆ ในสถานการณ์ที่หลากหลาย บันทึกรวบรวมนี้มีชื่อเรียกเฉพาะว่า ดีไซน์แพตเทิร์น (Design Patterns)
Design Patterns ซึ่งเป็นหนังสือที่ออกจัดจำหน่ายเมื่อปี 2538 โดยผู้แต่งร่วม 4 คนได้แก่ Erich Gamma, Richard Helm, Ralph Johnson และ John Vlissides หรือที่รู้จักในนามของ GoF (Gang of four) ถือว่าเป็น แบบแผนและแนวทางการออกแบบ ที่ได้รับความนิยมและเป็นที่รู้จักอย่างกว้างขวางในการนำมาประยุกต์ใช้งานจริง
การเขียนโปรแกรมเชิงวัตถุและฐานข้อมูล
การเขียนโปรแกรมเชิงวัตถุและระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (Relational Database Management Systems) ได้ถูกใช้งานร่วมกันอย่างแพร่หลายในปัจจุบัน แต่เนื่องจากฐานข้อมูลเชิงสัมพันธ์ไม่สามารถเก็บข้อมูลเชิงวัตถุได้โดยตรง จึงมีความจำเป็นที่จะต้องเชื่อมต่อเทคโนโลยีทั้งสองเข้าด้วยกัน การแก้ปัญหาสองแบบที่ได้รับความนิยมแพร่หลายคือการใช้ตัวส่งระหว่างโมเดลเชิงวัตถุและเชิงสัมพันธ์ (Object-Relational Mapping: ORM)
อีกวิธีการคือการใช้งานระบบจัดการฐานข้อมูลเชิงวัตถุ (Object-Relational Database Management Systems) แทนที่ระบบจัดการฐานข้อมูลเชิงสัมพันธ์ แต่วิธีการนี้ก็ยังไม่ได้รับความนิยมมากนัก
โปรแกรมเชิงวัตถุและการเทียบเคียงกับโลกของความเป็นจริง
การเขียนโปรแกรมเชิงวัตถุสามารถนำมาใช้จำลองการทำงานตามโลกของความเป็นจริงได้ แต่ไม่ได้เป็นที่นิยมนักเนื่องจากมีนักวิชาการจำนวนหนึ่งที่ไม่เห็นด้วยและมองว่าไม่ใช่วิธีการที่ถูกต้อง
ปัจจุบันวิธีการมาตรฐานที่ใช้ในการเทียบเคียงกับโลกของความเป็นจริง ตามแนวทางของคณิตศาสตร์คือ Circle-ellipse problem ซึ่งก็ถูกต้องบางส่วน แต่แนวคิดการสร้างยังคงต้องให้สอดคล้องกับความเป็นจริงของพื้นฐานธรรมชาติที่เป็นไปได้ผนวกกับคณิตศาสตร์ด้วย เพื่อให้เกิดสมดุล
ตัวอย่างภาษาที่สนับสนุนการเขียนโปรแกรมเชิงวัตถุ
- ABAP
- Ada 95
- C#
- C++
- Common Lisp Object System
- Delphi++
- 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 C#.NET
- Visual FoxPro