ผลต่างระหว่างรุ่นของ "การเขียนโปรแกรมเชิงวัตถุ"

จากวิกิพีเดีย สารานุกรมเสรี
เนื้อหาที่ลบ เนื้อหาที่เพิ่ม
SieBot (คุย | ส่วนร่วม)
Xqbot (คุย | ส่วนร่วม)
โรบอต แก้ไข: 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) ของวัตถุ และความสัมพันธ์กันระหว่างวัตถุกันมากกว่า

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

ตัวอย่างตู้ขายเครื่องดื่มอัตโนมัติ

วิธีการคิดแบบการเขียนโปรแกรมเชิงกระบวนการ

เมื่อมีการหยอดเหรียญเข้าตู้:

  1. ตรวจสอบจำนวนเหรียญและชนิดของเหรียญ
  2. แสดงผลชนิดของน้ำที่สามารถเลือกซื้อได้
  3. ตรวจสอบจำนวนน้ำกระป๋องที่มีอยู่ในตู้
  4. รับผลการเลือกชนิดน้ำ
  5. ส่งน้ำที่เลือกออกมาจากช่อง
  6. จัดเก็บเงินเข้าระบบ
  7. หากมีเงินทอน ให้ทอนเงินที่เหลือ ที่ช่องรับเงินทอน

แนวทางการออกแบบและแก้ปัญหา

ความท้าทายในการออกแบบและพัฒนาโปรแกรมเชิงวัตถุมีหลายด้าน โดยแนวทางดังต่อไปนี้ เป็นแนวทางที่ได้รับการยอมรับอย่างกว้างขวางในการใช้เพื่อแก้ไขปัญหา

ดีไซน์แพตเทิร์น - แบบแผนและแนวทางการออกแบบ

ในการออกแบบและการพัฒนาโปรแกรมเชิงวัตถุ ได้มีการรวบรวมบันทึกวิธีการแก้ปัญหาที่ใช้ได้ผลสำหรับปัญหาที่เกิดขึ้นซ้ำๆ เสมอๆ วิธีการแก้ไขเหล่านี้สามารถนำมาใช้ได้บ่อยๆ ในสถานการณ์ที่หลากหลาย บันทึกรวบรวมนี้มีชื่อเรียกเฉพาะว่า ดีไซน์แพตเทิร์น (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 ซึ่งก็ถูกต้องบางส่วน แต่แนวคิดการสร้างยังคงต้องให้สอดคล้องกับความเป็นจริงของพื้นฐานธรรมชาติที่เป็นไปได้ผนวกกับคณิตศาสตร์ด้วย เพื่อให้เกิดสมดุล

ตัวอย่างภาษาที่สนับสนุนการเขียนโปรแกรมเชิงวัตถุ

แหล่งข้อมูลอื่น

แม่แบบ:Link FA