การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming – OOP) เป็นแนวคิดในการเขียนโปรแกรมเลียนแบบวัตถุที่มีอยู่ในโลกจริง การเขียนโปรแกรมเชิงวัตถุจะแตกต่างจากการเขียนโปรแกรมแบบบนลงล่าง (water fall) และ การเขียนโปรแกรมแบบโมดูลล่า (modular)
การเขียนโปรแกรมแบบบนลงล่างคือการเขียนโปรแกรมที่มีการทำงานตามลำดับทีละบรรทัดตั้งแต่บรรทัดแรกไปเรื่อยๆจนกระทั่งจบโปรแกรม ต่อมาได้มีการพัฒนาการเขียนโปรแกรมแบบโมดูลล่าขึ้นมาเพื่อลดความซ้ำซ้อนของการเขียนโปรแกรมแบบบนลงล่าง โดยดึงเอาส่วนของโปรแกรมที่มีการทำงานซ้ำๆกันมาเขียนไว้ที่เดียวและสามารถถูกเรียกใช้ได้จากส่วนอื่นในโปรแกรม ถ้าส่วนของโปรแกรมดังกล่าวไม่มีการคืนค่ากลับจะเรียกว่าโพรซีเดอร์ (procedure) แต่ถ้ามีการคืนค่ากลับจะเรียกว่าฟังก์ชั่น (function)
หลังจากนั้นจึงมีการพัฒนาการเขียนโปรแกรมเชิงวัตถุขึ้นมาซึ่งเป็นการเขียนโปรแกรมเพื่อสร้างสิ่งที่เป็นแผนผังหรือพิมพ์เขียวของสิ่งที่เรียกว่าวัตถุและเขียนโปรแกรมเพื่อสร้างวัตถุขึ้นมาจากแผนผังหรือพิมพ์เขียวดังกล่าวอีกทีหนึ่ง การเขียนโปรแกรมเชิงวัตถุนอกจากจะสามารถลดความซ้ำซ้อนในการเขียนโปรแกรมแบบเก่าได้อย่างมากแล้วยังมีความยืดหยุ่นในการพัฒนาโปรแกรมอย่างมากอีกด้วย
วัตถุคืออะไร
ก่อนที่จะทำความเข้าใจการเขียนโปรแกรมเชิงวัตถุ เราต้องทำความเข้าใจกับคำว่าวัตถุในโลกจริงที่เราอยู่กันก่อน หากเรามองไปรอบๆตัว เราจะเห็นสิ่งต่างๆ เช่น เครื่องคอมพิวเตอร์ สัตว์ รถ บ้าน คน เป็นต้น เราจะเรียกสิ่งเหล่านี้ว่าวัตถุหรือออบเจกต์ (object) ในโลกจริง เราแยกแยะว่าวัตถุต่างๆเป็นชนิดเดียวกันหรือไม่โดยดูจากสถานะ (state) และพฤติกรรม (behavior) ของวัตถุ วัตถุชนิดเดียวกันอาจจะมีสถานะที่แตกต่างกันไปแต่จะมีพฤติกรรมที่เหมือนกัน
ในชีวิตจริงเราไม่ต้องมานั่งแยกแยะความแตกต่างของวัตถุด้วยสถานะและพฤติกรรมว่าอะไรคือวัตถุชนิดไหน เพราะสมองของเราแยกแยะให้แล้วโดยที่เราไม่รู้ตัว เช่น เรารู้ว่าอะไรคือรถยนต์แม้ว่าจะมีรูปลักษณ์ รูปทรง สี จำนวนประตู ที่แตกต่างกันไป
วัตถุแต่ละชนิดสามารถแยกย่อยลงไปได้อีกได้ตามความแตกต่างของมัน เช่น เราสามารถแยกแยะรถยนต์ว่าเป็นรถสปอร์ต รถซีดาน รถสำหรับครอบครัว รถเอนกประสงค์ รถกระบะ รถบรรทุก เป็นต้น แต่ยังคงไว้ซึ่งลักษณะหลักของมัน (common characteristic) เราเรียกลักษณะหลักว่าเป็นซุปเปอร์เซตของลักษณะของวัตถุ (super set หรือ parent) เช่น ลักษณะหลักของรถยนต์ทุกๆแบบ ต้องมีตัวถัง มีเครื่องยนต์ มีล้อ มีประตู ส่วนลักษณะย่อยเราเรียกว่าเป็นซับเซต (subset หรือ child) ของลักษณะหลักอีกทีหนึ่ง เช่น รถยนต์แต่ละชนิดจะมีลักษณะย่อยคือ รูปแบบตัวถังที่แตกต่างกันไป ขนาดเครื่องยนต์ที่แตกต่างกันไป จำนวนประตูที่แตกต่างกัน จำนวนล้อที่แตกต่างกัน เป็นต้น ซึ่งรถยนต์แต่ละชนิดจะมีทั้งลักษณะหลักและลักษณะย่อยรวมกันในตัวของมัน
สำหรับสถานะและพฤติกรรมของวัถตุ เช่น สำหรับรถยนต์สถานะคือ ขนาดของเครื่องยนต์ที่แตกต่างกัน จำนวนล้อ จำนวนประตู สีตัวถัง เครื่องยนต์ไม่ได้ทำงาน เครื่องยนต์กำลังทำงานอยู่ สถานที่ที่รถอยู่ ประตูรถปิดอยู่ ประตูรถเปิดอยู่ รถจอดนิ่งอยู่ รถกำลังเคลื่อนที่ ความเร็วปัจจุบันของรถ เป็นต้น ส่วนพฤติกรรมของรถยนต์คือ การสตาร์ทเครื่องยนต์ การดับเครื่องยนต์ การเหยียบคันเร่ง การเบรค การเลี้ยวซ้าย การเลี้ยวขวา การเปิดประตู การปิดประตู เป็นต้น
หากเราต้องการใช้งานวัตถุ เราจะต้องใช้งานผ่านทางพฤติกรรมของวัตถุและสถานะของวัตถุจะเปลี่ยนไปตามผลลัพธ์ที่ได้จากพฤติกรรมนั้นๆ เช่น เมื่อเราสตาร์ทรถ พฤติกรรมคือการสตาร์ทรถซึ่งจะเปลี่ยนสถานะของรถยนต์จากเครื่องยนต์ไม่ได้ทำงานไปเป็นเครื่องยนต์กำลังทำงานอยู่ และเมื่อเราทำพฤติกรรมเหยียบคันเร่ง สถานะของรถยนต์จะเปลี่ยนเป็นเคลื่อนที่ และความเร็วปัจจุบันของรถยนต์ก็เปลี่ยนไป เป็นต้น