# การเขียนโปรแกรมเชิงวัตถุ
การเขียนโปรแกรมเชิงวัตถุ  คือหนึ่งในรูปแบบการเขียนโปรแกรมคอมพิวเตอร์ ที่ให้ความสำคัญกับ วัตถุ ซึ่งสามารถนำมาประกอบกันและนำมาทำงานรวมกันได้ โดยการแลกเปลี่ยนข่าวสารเพื่อนำมาประมวลผลและส่งข่าวสารที่ได้ไปให้วัตถุอื่น ๆ ที่เกี่ยวข้องเพื่อให้ทำงานต่อไป

แนวคิดการเขียนโปรแกรมแบบดังเดิมมักนิยมใช้  ในการสร้างเว็บไซต์ต่าง ๆ

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

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

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

 เมื่อมีการหยอดเหรียญเข้าตู้
 ตรวจสอบจำนวนน้ำกระป๋องที่มีอยู่ในตู้
 รับผลการเลือกชนิดน้ำ
 ส่งน้ำที่เลือกออกมาจากช่อง
 จัดเก็บเงินเข้าระบบ
 หากมีเงินทอน ให้ทอนเงินที่เหลือ ที่ช่องรับเงินทอน

วิธีการคิดแบบการเขียนโปรแกรมเชิงวัตถุ
ตู้ขายเครื่องดื่มอัตโนมัติ ประกอบด้วยส่วนประกอบต่าง ๆ ได้แก่ หน่วยตรวจสอบและจัดการเรื่องเงิน หน่วยจัดการเครื่องดื่ม หน่วยแสดงผลและรอรับคำสั่ง
หน่วยตรวจสอบและจัดการเรื่องเงิน มีข้อมูลเกี่ยวกับเงินที่ได้รับ และเงินที่มีอยู่ในระบบ สามารถรับและตรวจสอบเงินที่หยอดเข้ามาได้ และทอนเงินได้ 
หน่วยจัดการเครื่องดื่ม มีข้อมูลชนิดของเครื่องดื่ม จำนวนเครื่องดื่ม สามารถจัดเตรียมชนิดเครื่องดื่มที่พอกับเงินที่หยอด และสามารถจ่ายเครื่องดื่มออกมาจากตู้ได้ 
หน่วยแสดงผลและรอรับคำสั่ง มีหน้าที่รอรับคำสั่ง และแสดงผลเงินที่หยอดเข้ามา 
หมายเหตุ ตัวอย่างนี้เป็นเพียงตัวอย่างโดยสังเขป

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

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

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

อีกวิธีการคือการใช้งานระบบจัดการฐานข้อมูลเชิงวัตถุ (Database Management Systems) แทนที่ระบบจัดการฐานข้อมูลเชิงสัมพันธ์ แต่วิธีการนี้ก็ยังไม่ได้รับความนิยมมากนัก

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

การเขียนโปรแกรมเชิงวัตถุสามารถนำมาใช้จำลองการทำงานตามโลกของความเป็นจริงได้ แต่ไม่ได้เป็นที่นิยมนักเนื่องจากมีนักวิชาการจำนวนหนึ่งที่ไม่เห็นด้วยและมองว่าไม่ใช่วิธีการที่ถูกต้อง

ปัจจุบันวิธีการมาตรฐานที่ใช้ในการเทียบเคียงกับโลกของความเป็นจริง ตามแนวทางของคณิตศาสตร์คือ Circle-ellipse problem ซึ่งก็ถูกต้องบางส่วน แต่แนวคิดการสร้างยังคงต้องให้สอดคล้องกับความเป็นจริงของพื้นฐานธรรมชาติที่เป็นไปได้ผนวกกับคณิตศาสตร์ด้วย เพื่อให้เกิดสมดุล

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

 Ada 95
 C#
 C++
 Common Lisp Object System
 Delphi++
 Eiffel
 Fortran 2003
 JADE
 Java
 Javascript
 Modula-3
 Nice
 Oberon
 Objective-C
 Objective Modula-2
 OCaml
 Object Pascal
 Perl
 PHP
 Python
 REALbasic
 Ruby
 Simula
 Sleep
 Smalltalk
 Specman
 Swift
 SystemVerilog
 UnrealScript
 Visual Basic
 Visual Basic.NET
 Visual C#.NET
 Visual FoxPro

 แหล่งข้อมูลอื่น 
 การเขียนโปรแกรมเชิงวัตถุด้วยภาษา C#

การเขียนโปรแกรมเชิงวัตถุ
หมวดหมู่:แบบอย่างการเขียนโปรแกรม