แนวความคิดในการจำลองของ Object Orientation

Download Report

Transcript แนวความคิดในการจำลองของ Object Orientation

การเขียนโปรแกรมเชิงวัตถุ
Object Oriented Programming
Object
• หลัก การที่ ส าคัญ คื อ ให้ ม องสิ่ ง ที่ เ ราสนใจทุ ก อย่ า งให้ เ ป็ น
Object ซึ่งเป็ นแนวคิดที่ใกล้เคียงธรรมชาติของมนุษย์มากที่สุด
• Object แบ่ งได้เป็ น 2 ประเภทคื อ สิ่ งที่ เป็ นรู ปธรรม และ
นามธรรม
- สิ่ งที่เป็ นรู ปธรรม สามารถจับต้องได้ เช่น รถ สุ นขั ใบ
รายการ เป็ นต้น
- สิ่ งที่เป็ นนามธรรมไม่สามารถจับต้องได้ เช่น ความเป็ น
เจ้าของ แสง การยืน เป็ นต้น
Object (2)
Object ทุก Object จะประกอบด้วย 2 ส่ วนปฏิบตั ิการคือ
- attribute หรื อเรี ยกอีกอย่างว่า data ( ซึ่งเป็ นชื่อเรี ยกใน OOP)
Object จะเป็ นส่ วนของข้อมูลเฉพาะของ Object นั้นๆ เช่น Object
คน จะมี attribute คือ หมายเลขประชาชน, วันเดือนปี
- method หรื อเรี ยกอีกอย่างว่า behavior คือ สิ่ งที่ object นั้น
สามารถทาได้ ในทาง Procedural language จะเรี ยก behavior
เป็ น procedure, function ส่ วนในทาง OOP จะเรี ยกเป็ น method
Object Oriented
- การใช้ Object เป็ นตัวหลักเพื่อการพิจารณาความเป็ นจริ ง
ต่างๆ ที่เกิดขึ้นในโลก (Real World)
- การมองทุกๆ สิ่ งในโลกเป็ นวัตถุท้ งั หมด (Object Model)
- มองว่ากิจกรรมทั้งหมดที่เกิดขึ้นในโลกนี้เกิดจาก
ความสัมพันธ์และปฏิสมั พันธ์ระหว่างวัตถุ
- การนาคอมพิวเตอร์เข้ามาแก้ปัญหาด้วยการพัฒนาเป็ น
ซอฟแวร์
Object Oriented Programming (OOP)
หมายถึง การเขียนโปรแกรมที่ประกอบไปด้วยกลุ่ม
ของ Objects
ซึ่งแต่ละ Object จะถูกจัดกลุ่มอยูใ่ น
รู ปของ Class โดยที่แต่ละ Class สามารถมีการถ่ายทอด
(Inheritance) ลักษณะกันลงมาอย่างเป็ นลาดับ
(Hierarchy)
แบบดั้งเดิม VS แบบเชิงวัตถุ
• แนวคิดการเขียนโปรแกรมแบบดังเดิมเป็ นการแก้ปัญหาโดยใช้
คอมพิวเตอร์เป็ นเครื่ องมือ และมักนิยมใช้การเขียนโปรแกรม
เชิงกระบวนการ (Procedural Programming) ซึ่งให้ความสาคัญ
กับขั้นตอนกระบวนการที่ทา โดยแบ่งโปรแกรมออกเป็ นส่วนๆ
ตามลาดับขั้นตอนการทางาน
• แต่แนวคิดการเขียนโปรแกรมเชิงวัตถุน้ นั เน้นถึงปั ญหา และ
องค์ประกอบของปัญหา ให้ความสาคัญกับ ข้อมูล(data) และ
พฤติกรรม(behavior) ของวัตถุ และความสัมพันธ์กนั ระหว่าง
วัตถุกนั มากกว่า
การแก้ ปัญหาด้ วยแนวคิดเดิม
ปัญหา การหาพืน้ ที่สี่เหลีย่ มผืนผ้ า
• แนวคิดเดิม
–การหาพื้นที่สี่เหลี่ยมผืนผ้าจะใช้สูตร พื้นที่ = กว้าง X ยาว
–โดยเราจะต้องรับค่าความกว้างและความยาวของพื้นที่สี่เหลี่ยมเพือ่ นนามา
คานวณ
• เขียนเป็ นขั้นตอนการแก้ปัญหาได้ดงั นี้
1.รับค่าข้อมูล ความกว้าง และ ความยาว ของสี่ เหลี่ยม
2.คานวณ พื้นที่สี่เหลี่ยม = ความกว้าง X ความยาว
3.แสดงผล พื้นที่สี่เหลี่ยม
การแก้ ปัญหาด้ วยแนวคิดเชิงวัตถุ
ปัญหา การหาพืน้ ที่สี่เหลีย่ มผืนผ้ า
• โปรแกรมจะต้องมีวตั ถุอะไรบ้าง
–วัตถุ สี่ เหลี่ยมผืนผ้า
• วัตถุจะต้องมีคุณสมบัติหรื อข้อมูลอะไรบ้าง
–วัตถุสี่เหลี่ยมผืนผ้าจะต้องมีคุณสมบัติ ความกว้าง ความยาว พื้นที่
• วัตถุจะต้องมีพฤติกรรมอะไรบ้าง
–วัตถุสี่เหลี่ยมผืนผ้าจะต้องมีพฤติกรรม คานวณพื้นที่สี่เหลี่ยม , วาดตัวเอง
แนวความคิดในการจาลองของ Object Orientation
1. Abstraction
- Object ต่างๆ แล้วใส่ ความคิด (Concept) ลงไปเพื่อกาหนด
คุณลักษณะที่สาคัญและจาเป็ นของ Object นั้นๆ
- คุณลักษณะที่ถูกกาหนดขึ้นจาก Object เดียวกันอาจจะ
แตกต่างกัน ซึ่งขึ้นอยูก่ บั การมองของคนหลายคน ในมุมที่แตกต่าง
กันออกไป
- Abstraction เป็ นการมอง Object เฉพาะภายนอกเท่านั้น โดย
ไม่สนใจว่าวัตถุน้ นั เกิดขึ้นได้อย่างไร หรื อมีการทางานภายใน
อย่างไร
แนวความคิดในการจาลองของ Object Orientation (2)
2. Object
- ตัวแทนของบุคคล สถานที่ หรื อสิ่ งของ ที่สนใจในเหตุการณ์ใด
เหตุการณ์หนึ่ง
- Object เป็ นองค์ประกอบสาคัญของการเขียนโปรแกรมที่
สามารถรับค่าและส่ งค่าได้ และจะต้องมีคุณลักษณะ (Attribute) ที่
บ่งบอกถึง Object และมีพฤติกรรม (Behavior) ที่บอกให้ทราบว่า
Object นั้นทาอะไร
แนวความคิดในการจาลองของ Object Orientation (3)
ลักษณะที่ Object หนึ่ง ๆจะต้องมี ได้แก่
- State คือค่าของ Attributes และความสัมพันธ์ที่ Object หนึ่งๆ มี ณ เวลา
ใดๆ นั้น สามารถเปลี่ยนแปลงได้เมื่อมีการกระตุน้ จาก Object อื่นด้วยการ
ส่ ง Message (เหตุการณ์ที่เกิดขึ้น) เช่น Lift จะมีปุ่มเปิ ดปิ ดซึ่ งจะทางานด้วย
เมื่อเกิดการกระตุน้ จาก Object อื่น นัน่ คือ ผูใ้ ช้การกดปุ่ ม
- Behavior หมายถึงพฤติกรรมที่ Object กระทาและตอบสนองทุกครั้งเมื่อ
สถานะของ Object เปลี่ยนไปโดนการกระตุน้ ของ Object อื่นด้วยการส่ ง
Message ต่อกัน
- Identity หมายถึง เอกลักษณ์เฉพาะตัวที่ทาให้ Object หนึ่งแตกต่างจาก
อีก Object หนึ่ง เช่น รถยนต์ขนาดเดียวกัน แต่มีคนละสี กนั
แนวความคิดในการจาลองของ Object Orientation (4)
3. Class
- หมายถึงกลุ่มของ Object ที่มีคุณลักษณะ(Attributes) และ
พฤติกรรม(Behavior) หรื อการกระทา (Action)
- แต่ละ Object ใน Class เดียวกัน จะมีค่าของ Attribute ไม่
เหมือนกัน ทาให้สามารถแยกแยะความแตกต่างระหว่าง Object ใน
Class เดียวกันได้ เช่น รถยนต์ BMW ไม่วา่ รุ่ นใด สี ใดก็ตามก็จะ
อยูใ่ น Class เดียวกัน หรื อ
แนวความคิดในการจาลองของ Object Orientation (5)
4. Message and Methods
- การที่ Object จะเกิดการกระทาได้น้ นั จะต้องมีความสัมพันธ์ระหว่าง
Object หนึ่ง โดยการส่ ง Message เพื่อให้ดาเนินกิจกรรมใดๆ ใน Object
Orientation
- การส่ ง Message สามารถทาได้โดยที่ Object ที่เป็ นฝ่ ายส่ ง Message จะ
ทาการเรี ยกใช้ Method จาก Object ที่เป็ นฝ่ ายรับเพื่อทาให้เกิดการทางาน
- Method เป็ นเครื่ องมือที่อยูใ่ น Class และ Object ที่กาหนดขึ้นมาเพื่อ
ทางานหรื อทาหน้าที่อย่างใดอย่างหนึ่ง ซึ่ง Method สามารถเปรี ยบเทียบ
ได้กบั Function หรื อ Procedure ในการเขียนโปรแกรมแบบดั้งเดิมนัน่ เอง
แนวความคิดในการจาลองของ Object Orientation (6)
5. Interface and Implementation
Interface หมายถึง ส่ วนที่ใช้ในการแสดงเฉพาะโครงสร้าง
ภายนอกของ Class ที่สามารถมองเห็นได้จาก Object ของ Class
อื่น โดยที่ Class อื่นนั้นจะไม่สามารถมองเห็นพฤติกรรมภายใน
Class นั้นได้
Implementation หมายถึง ส่ วนที่แสดงรายละเอียดภายใน Class
ทั้งหมด ไม่วา่ จะเป็ นรายละเอียดของ Attribute หรื อว่า
รายละเอียดการทางานของ Method ใน Class
แนวความคิดในการจาลองของ Object Orientation (7)
6. Encapsulation and Information Hiding
Encapsulation หมายถึง การห่อหุม้ Attribute และ Function/Method
ของ Object เข้าไว้ดว้ ยกันเพื่อปกปิ ดการมองเห็นและการเข้าถึงข้อมูลจาก
Object อื่นๆ ซึ่งจะส่ งผลให้ Attribute และ Function/Method นั้นง่ายต่อ
การถูกเรี ยกใช้อย่างผิดๆ ทาให้ค่าของ Attribute เปลี่ยนแปลงไป ก่อให้เกิด
การทางานที่ผดิ พลาดในที่สุด
Information hiding เป็ นคุณสมบัติของ Encapsulation คือจากัดการ
มองเห็นข้อมูลภายใน Object เช่น การกาหนดคุณลักษณะเป็ น “public”
เพื่อให้สามารถเชื่อมต่อกับ object ภายนอกได้ และกาหนดเป็ น “private”
เพื่อจากัด attribute ให้อยูภ่ ายใน object เท่านั้น
แนวความคิดในการจาลองของ Object Orientation (9)
7. Reuse ( Inheritance, Composition)
หลักการของ Object Orientation เป็ นการนาส่ วนของโปรแกรมที่มีการ
พัฒนาไว้แล้วกลับมาใช้ใหม่ (Reuse) คือ Inheritance และ Composition
Inheritance เป็ นการการสื บทอดคุณลักษณะ (Attribute) และ พฤติกรรม
(Behavior) เช่น สี ผวิ ที่พอ่ ถ่ายทอดมาสู่ลูก ในทาง Object Oriented จะ
หมายถึง การที่ Class หนึ่ง Class หรื อ หลาย ๆ Class ถูกสร้างขึ้นมาใหม่
(Subclass) ภายใต้ Class ใดๆ (Superclass) โดยการสื บทอดคุณลักษณะ
และ พฤติกรรม หรื อการกระทา ที่สาคัญนั้นๆ มาด้วย ดังนั้น Subclass ที่
ถูกสร้างขึ้นมาใหม่ จะมี Attribute และ Method เหมือนกับ Superclass
แนวความคิดในการจาลองของ Object Orientation (10)
Composition หมายถึงการที่ Class หนึ่ง สามารถเรี ยกใช้ Class อื่นที่ได้
สร้างไว้แล้วเพื่อนามาใช้งานใหม่ โดย Class ที่ถูกสร้างไว้แล้วจะเรี ยก
Composite แต่เมื่อ Class นั้นถูกเรี ยกมาใช้งานโดย Class อื่นๆ จะเรี ยก
Class นั้นว่า Component
Vehicle
Car
Bicycle
แนวความคิดในการจาลองของ Object Orientation (11)
8. Polymorphism
- Object มากกว่า 1 Object สามารถตอบสนองต่อ Message หรื อ
Method เดียวกันที่ได้รับด้วยการแสดงพฤติกรรมหรื อดาเนินกิจกรรม
ต่างกัน เช่น การสร้าง Class Vechical ขึ้นมา และClass ยังมี Subclass ที่
เป็ นพาหนะประเภทต่างๆ เช่น Subclass Car, Subclass Bicycle เป็ นต้น ซึ่ง
Subclass ทั้ง 2 ชนิด มีพฤติกรรมที่ต่างกัน