วันพฤหัสบดีที่ 11 มิถุนายน พ.ศ. 2552


การเขียนโปรแกรมเชิงวัตถุ (Object-oriented programming, OOP)


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



แนวคิดที่สำคัญของการเขียนโปรแกรมเชิงวัตถุ


คลาส (Class) - ประเภทของวัตถุ เป็นการกำหนดว่า วัตถุ จะประกอบไปด้วย ข้อมูล(data) หรือคุณสมบัติ(property) และ พฤติกรรม (behavior)หรือการกระทำ (method) อะไรบ้าง ซึ่ง คลาส (เช่น มนุษย์) เป็นโครงสร้างพื้นฐานของการเขียนโปรแกรมเชิงวัตถุ

วัตถุ (Object) - โดยมากจะเรียกว่า อ็อบเจกต์ คือ ตัวตน(instance) ของ คลาส ซึ่งจะเกิดขึ้นระหว่าง run-time โดยแต่ละ อ็อบเจกต์ จะมีข้อมูลเฉพาะของตัวเอง ทำให้ อ็อบเจกต์ แต่ละ อ็อบเจกต์ ของ คลาส ซึ่งใช้ source code เดียวกันมีคุณลักษณะและคุณสมบัติที่แตกต่างกัน

Encapsulation - การปิดบังข้อมูล เป็นวิธีการกำหนดสิทธิในการเข้าถึงข้อมูล หรือการกระทำกับ อ็อบเจกต์ ของ คลาสนั้นๆ ทำให้แน่ใจได้ว่าข้อมูลของอ็อบเจกต์นั้นจะถูกเปลี่ยนแปลงแก้ไขผ่านทาง methods หรือ properties ที่อนุญาตเท่านั้น (เช่น การกำหนดตำแหน่งทางการเมือง เป็น public method ที่ผู้อื่นสามารกระทำได้ ส่วนการลาออกจากตำแหน่ง เป็น private method ที่มีแต่ อ็อบเจกต์ ของ คลาส เท่านั้นที่จะสามารถทำได้ แต่การกดดันและการขับไล่สามารถสร้าง data ที่อาจจะส่งผลเกิดการลาออกได้เช่นกัน)

Inheritance - การสืบทอดคุณสมบัติ เป็นวิธีการสร้าง คลาสย่อย ที่เรียกว่าซับคลาส (subclass) ซึ่งจะเป็นกำหนดประเภทของวัตถุให้จำเพาะเจาะจงขึ้น ซึ่ง ซับคลาส จะได้รับถ่ายทอดคุณสมบัติต่างๆมาจากคลาสหลักด้วย (เช่น คลาส มนุษย์ สืบทอดมาจาก คลาส สิ่งมีชีวิต)

Abstraction - นามธรรม เป็นการแสดงถึงคุณลักษณะและพฤติกรรมของ object เท่าที่จำเป็นต้องรับรู้และใช้งาน โดยซ่อนส่วนที่เหลือเอาไว้เพื่อไม่ให้เกิดความสับสน เช่น ตามปกติแล้ว นายทักษิณ จัดเป็นตัวตนของ คลาส มนุษย์ ซึ่งจะมีพฤติกรรม การกระทำทุกอย่างที่ตามที่กำหนดไว้ตามโครงสร้างของ คลาส มนุษย์ แต่ในบางกรณีที่นำไปใช้งาน เราไม่ต้องการให้เกิดการสับสนต่อการใช้งานหรือการจัดประเภทมากเราสามารถจัดการหรือใช้งาน อ็อบเจกต์ นายทักษิณ ให้อยู่ในรูปของสิ่งมีชิวิต ก็ได้

Polymorphism - ภาวะที่มีหลายรูปแบบ เป็นวิธีการกำหนดรูปแบบการกระทำที่เหมือนกันแต่ได้ผลที่แตกต่างกัน เช่น การเปล่งเสียง เป็น method หลักของ คลาส สิ่งมีชีวิต ซึ่งมีคลาส มนุษย์ และคลาสสุนัข เป็น ซับคลาส แต่ผลของการเปล่งเสียงของอ็อบเจกต์จากคลาสทั้งสองจะออกมาไม่เหมือนกัน


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





Object diagram



OOP นั้น ก็ คือ OBJECT ORIENTED PROGRAMMING

เป็นการ เขียน โปรแกรม โดย อ้างอิง จาก วัตถุ ในโลก ของ ความจริง THE OBJECT CONCEPTOBJECT =AN OBJECT IS A SOFTWARE BUNDLE OF VARIABLE AND RELATED METHODs

"วัตถุ ที่ ซึ่ง เป็น software ผูกมัด กัน ระหว่าง ตัวแปร และ สัมพันธ์ กับ วิธีการ "

object จะมี 2สถาณะ

1 state สถาณะ

2 behavior พฤติกรรม


Object ของรถจักรยาน

Ex จักรยาน = object

state={ล้อ,เกียร,แฮนด์, เบาะ, บันได }

behavior={การแบรก,การเร่ง ,การชะลอตัว,การทรงตัว}

ดู ภาพ concept objectในภาพจะเห็น ได้ว่า variable จะอยู่ ตรง กลาง ล้อมรอบ ไปด้วย method ซึ่งถือว่า variable คือ nucluesจะผ่าน เข้า ออก ได้ ก็ต้อง ผ่าน method (ในที่ นี้ method ก็คือ function หรือ module)และเรา จะเห็น แค่ method เท่านั้น ซึ่ง เรียก ว่าencapsulation หรือ การ ห่อหุ้ม encapsulation จะประกอบ ไปด้วย สอง อย่าง

1 Modularity เรา สามารถสร้าง โปรแกรม ย่อย หลาย โปรแกรม โดย มัน สามารถที่ จะติดต่อกัน ได้ ในที่นี้ เรา จะเรียกว่า การ ส่ง message "ซึ่ง หาก คุณ มีจักรยาน คุณ ก็ สามารถให้คนอื่น ยืม ขี่ได้ "

2 Information Hiding การ ปกปิดการทํางานไม่ให้ ผู้ใช้รู้ "คุณ ขี่จักรยาน ได้ โดย คุณ ไม่ต้องรู้ ว่า กลไก จักรยาน เป็นยังไง"