ผลต่างระหว่างรุ่นของ "การเขียนโปรแกรมเชิงวัตถุ"
ล โรบอต เพิ่ม: mn:Объект Хандалтат Програмчлал |
ล โรบอต แก้ไข: mn:Объект хандалтат програмчлал; ปรับแต่งให้อ่านง่าย |
||
บรรทัด 8: | บรรทัด 8: | ||
ตัวอย่างตู้ขายเครื่องดื่มอัตโนมัติ |
ตัวอย่างตู้ขายเครื่องดื่มอัตโนมัติ |
||
===วิธีการคิดแบบการเขียนโปรแกรมเชิงกระบวนการ=== |
=== วิธีการคิดแบบการเขียนโปรแกรมเชิงกระบวนการ === |
||
เมื่อมีการหยอดเหรียญเข้าตู้: |
เมื่อมีการหยอดเหรียญเข้าตู้: |
||
บรรทัด 19: | บรรทัด 19: | ||
# หากมีเงินทอน ให้ทอนเงินที่เหลือ ที่ช่องรับเงินทอน |
# หากมีเงินทอน ให้ทอนเงินที่เหลือ ที่ช่องรับเงินทอน |
||
== |
== แนวทางการออกแบบและแก้ปัญหา == |
||
ความท้าทายในการออกแบบและพัฒนาโปรแกรมเชิงวัตถุมีหลายด้าน โดยแนวทางดังต่อไปนี้ เป็นแนวทางที่ได้รับการยอมรับอย่างกว้างขวางในการใช้เพื่อแก้ไขปัญหา |
ความท้าทายในการออกแบบและพัฒนาโปรแกรมเชิงวัตถุมีหลายด้าน โดยแนวทางดังต่อไปนี้ เป็นแนวทางที่ได้รับการยอมรับอย่างกว้างขวางในการใช้เพื่อแก้ไขปัญหา |
||
บรรทัด 40: | บรรทัด 40: | ||
ปัจจุบันวิธีการมาตรฐานที่ใช้ในการเทียบเคียงกับโลกของความเป็นจริง ตามแนวทางของคณิตศาสตร์คือ Circle-ellipse problem ซึ่งก็ถูกต้องบางส่วน แต่แนวคิดการสร้างยังคงต้องให้สอดคล้องกับความเป็นจริงของพื้นฐานธรรมชาติที่เป็นไปได้ผนวกกับคณิตศาสตร์ด้วย เพื่อให้เกิดสมดุล |
ปัจจุบันวิธีการมาตรฐานที่ใช้ในการเทียบเคียงกับโลกของความเป็นจริง ตามแนวทางของคณิตศาสตร์คือ Circle-ellipse problem ซึ่งก็ถูกต้องบางส่วน แต่แนวคิดการสร้างยังคงต้องให้สอดคล้องกับความเป็นจริงของพื้นฐานธรรมชาติที่เป็นไปได้ผนวกกับคณิตศาสตร์ด้วย เพื่อให้เกิดสมดุล |
||
==ตัวอย่างภาษาที่สนับสนุนการเขียนโปรแกรมเชิงวัตถุ== |
== ตัวอย่างภาษาที่สนับสนุนการเขียนโปรแกรมเชิงวัตถุ == |
||
*[[ABAP]] |
* [[ABAP]] |
||
*[[Ada 95]] |
* [[Ada 95]] |
||
*[[ภาษาซีชาร์ป|C#]] |
* [[ภาษาซีชาร์ป|C#]] |
||
*[[C++]] |
* [[C++]] |
||
*[[Common Lisp Object System]] |
* [[Common Lisp Object System]] |
||
*[[Delphi++]] |
* [[Delphi++]] |
||
*[[Eiffel]] |
* [[Eiffel]] |
||
*[[Fortran]] 2003 |
* [[Fortran]] 2003 |
||
*[[JADE]] |
* [[JADE]] |
||
*[[Java]] |
* [[Java]] |
||
*[[Modula-3]] |
* [[Modula-3]] |
||
*[[Nice]] |
* [[Nice]] |
||
*[[Oberon]] |
* [[Oberon]] |
||
*[[Objective-C]] |
* [[Objective-C]] |
||
*[[Objective Modula-2]] |
* [[Objective Modula-2]] |
||
*[[OCaml]] |
* [[OCaml]] |
||
*[[Object Pascal]] |
* [[Object Pascal]] |
||
*[[Perl]] |
* [[Perl]] |
||
*[[PHP]] |
* [[PHP]] |
||
*[[Python]] |
* [[Python]] |
||
*[[REALbasic]] |
* [[REALbasic]] |
||
*[[Ruby]] |
* [[Ruby]] |
||
*[[Simula]] |
* [[Simula]] |
||
*[[Sleep]] |
* [[Sleep]] |
||
*[[ภาษาสมอลทอล์ค|Smalltalk]] |
* [[ภาษาสมอลทอล์ค|Smalltalk]] |
||
*[[Specman]] |
* [[Specman]] |
||
*[[SystemVerilog]] |
* [[SystemVerilog]] |
||
*[[UnrealScript]] |
* [[UnrealScript]] |
||
*[[Visual Basic]] |
* [[Visual Basic]] |
||
*[[Visual Basic.NET]] |
* [[Visual Basic.NET]] |
||
*[[ภาษาซีชาร์ป|Visual C#.NET]] |
* [[ภาษาซีชาร์ป|Visual C#.NET]] |
||
*[[Visual FoxPro]] |
* [[Visual FoxPro]] |
||
== แหล่งข้อมูลอื่น == |
== แหล่งข้อมูลอื่น == |
||
* [http://thai-cs.spaces.live.com การเขียนโปรแกรมเชิงวัตถุด้วยภาษา C#] |
* [http://thai-cs.spaces.live.com การเขียนโปรแกรมเชิงวัตถุด้วยภาษา C#] |
||
⚫ | |||
[[หมวดหมู่:การเขียนโปรแกรมเชิงวัตถุ| ]] |
[[หมวดหมู่:การเขียนโปรแกรมเชิงวัตถุ| ]] |
||
[[หมวดหมู่:แบบอย่างการเขียนโปรแกรม]] |
[[หมวดหมู่:แบบอย่างการเขียนโปรแกรม]] |
||
⚫ | |||
{{Link FA|vi}} |
{{Link FA|vi}} |
||
บรรทัด 117: | บรรทัด 117: | ||
[[lv:Objektorientētā programmēšana]] |
[[lv:Objektorientētā programmēšana]] |
||
[[mk:Објектно-ориентирано програмирање]] |
[[mk:Објектно-ориентирано програмирање]] |
||
[[mn:Объект |
[[mn:Объект хандалтат програмчлал]] |
||
[[ms:Pengaturcaraan berorientasi objek]] |
[[ms:Pengaturcaraan berorientasi objek]] |
||
[[nl:Objectgeoriënteerd]] |
[[nl:Objectgeoriënteerd]] |
รุ่นแก้ไขเมื่อ 07:16, 9 ตุลาคม 2553
การเขียนโปรแกรมเชิงวัตถุ (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