บทที่ 1 Object Orientation

Download Report

Transcript บทที่ 1 Object Orientation

บทที่ 1 Object Orientation
อ.วิวฒ
ั น์ ชินนาทศิรกิ ล
ุ
Object Orientation คืออะไร

เกิดจากคา 2 คา คือ
1. Object
2. Orientation


่ บต ้องได ้และไม่สามารถจับต ้องได ้
แปลว่า วัตถุ ทีจั
(รูปธรรมกับนามธรรม) เช่น คน สุนัข รถยนต ์ รายวิชา
ภาควิชา เกรด
Orientation มาจากคาว่า Orient แปลว่านาทางหรือนาไป
Object
Object Orientation คืออะไร (ต่อ)


หมายถึง การใช ้ Object เป็ นหลักในการ
่ ดขึน้
พิจารณา ความเป็ นจริงต่างๆทีเกิ
สามารถนาหลักการของ Object Orientation มาใช ้ในการ
วิเคราะห ์และออกแบบระบบคอมพิวเตอร ์ได ้ ทาให ้เกิด
ศาสตร ์ใหม่ทเรี
ี่ ยกว่า Object Oriented Analysis and Design
หรือเรียกย่อๆว่า OOAD
Object Orientation
Object, Relation และ Interaction


ในชีวต
ิ ประจาวัน จะพบวัตถุ(Object)ต่างๆ อยู่รอบๆตัวเรา
เช่น คน
่ นวัตถุที่
รถยนต ์ คอมพิวเตอร ์ โต๊ะเรียน เก ้าอี ้ ซึงเป็
่ นวัตถุ
สามารถจับต ้องได ้ หรือ รายวิชาเรียน เกรด ซึงเป็
่ สามารถจับต ้องได ้
ทีไม่
Object ต่างๆ จะประกอบด ้วยคุณลักษณะ หรือคุณสมบัต ิ
(properties) และพฤติกรรม (behavior) หรือการกระทา หรือ
กิจกรรม ทีวั่ ตถุน้ันสามารถกระทาได ้ เช่น คน มี
คุณลักษณะดังนี ้ มีผม มีแขน มีขา มีหู ตา จมูก ปาก
่ ้ นอนได ้
คน มีพฤติกรรมดังนี ้ คนพูดได ้ กินได ้ วิงได
Object, Relation และ Interaction (ต่อ)

่ ดขึนรอบๆตั
้
กิจกรรมต่างๆทีเกิ
วเรา ล ้วนแต่เกิดจากการมี
ความสัมพันธ ์ (Relationship) และการมีปฏิสม
ั พันธ ์
้
เช่น
(Interaction) ระหว่าง Object 2 ตัวขึนไป
คน ร ับประทาน อาหาร จากประโยคดังกล่าวนี ้
Object ได ้แก่ คน , อาหาร
Interaction ได ้แก่ ร ับประทาน
Relation ได ้แก่ เป็ นเจ ้าของ (คน เป็ นเจ ้าของ อาหารที่
ร ับประทาน)
Object, Relation และ Interaction (ต่อ)


่
คือ ความเกียวข
้อง หรือความสัมพันธ ์
้
ระหว่าง object 2 ตัวขึนไป
เช่น การเป็ นเข ้ามี การมี
การสังกัด
่ ดขึน้
Interaction คือ ปฏิสม
ั พันธ ์ หรือการกระทาใดๆทีเกิ
้
ระหว่าง object 2 ตัวขึนไป
เช่น การกิน การเล่น การ
สร ้าง
Relationship
Domain


่ เราให
่
เป็ นกรอบ หรือขอบเขต ของสิงที
้ความ
สนใจ หรือพิจารณา
้
้
ใน Domain หนึ่ งๆ สามารถมี object ได ้ตังแต่
2 ตัวขึนไป
object ตัวเดียวสามารถอยู่ในหลายๆ Domain ได ้ ซึง่
้
่
ขึนอยู
่กบั ว่าเราจะกาหนด Domain ทีสนใจอย่
างไร
Domain
Object และ Class


Concept
่ ่ในโลกของความเป็ นจริง (Real World Object)
Object ทีอยู
เราไม่สามารถนา มาใส่ในคอมพิวเตอร ์ได ้ แต่สงที
ิ่ ่
สามารถทาได ้คือ การใส่แนวคิด (Concept) ให ้กับ Object
่ าไปใส่ไว ้ในคอมพิวเตอร ์
เพือน
่ ให ้กับ Object นั้นๆ
Concept หมายถึง ความคิดรวบยอดทีมี
่ าหนด (Domain) เช่น
ภายใต ้กรอบทีก
Concept ของรถยนต ์ คือ รถยนต ์ทุกคัน มีตว
ั ถัง มีล ้อ มี
่
เครืองยนต
์
Concept ของคน คือ มี 2 แขน 2 ขา 1 ศีรษะ
Class


ผลจาก การให ้ Concept กับ Object ทาให ้เกิดการจัดกลุม
่
่ ้จากกระบวนการ
ของ Object ขึน้ กลุม
่ ของ Object ทีได
นี ้ เรียกว่า Abstract Objects หรือเรียกว่า Class
่ ้อ TOYOTA , HONDA ต่างก็มี 4
ตัวอย่าง เช่น รถยนต ์ยีห
่
้ นเชือเพลิ
้
ล ้อ มีเครืองยนต
์ และใช ้นามั
ง เหมือนกัน
้
สามารถจัดให ้ รถ ทังสองคั
นนี ้ อยู่ในคลาส รถยนต ์
่ ้อ MAZDA ก็มี 4 ล ้อ มีเครืองยนต
่
ดังนั้น รถยนต ์ยีห
์ ใช ้
้ นเชือเพลิ
้
นามั
ง ก็สามารถจัดอยู่ในคลาส รถยนต ์ได ้
เพราะมี Concept แบบเดียวกัน แต่รถจักรยานยนต ์ ไม่
สามารถจัดอยู่ในคลาส รถยนต ์ ได ้
Class (ต่อ)


Class ถือเป็ นนามธรรม (Abstract) นั่นแสดงว่า คลาสไม่
มีตวั ตน คลาสมีแต่แนวคิด ดังนั้นเราจึงไม่สามารถทาให ้
class ดาเนิ นกิจกรรมใดๆได ้
เช่น จากประโยค คน กิน อาหาร ในแง่ของ Object
้ ง
Orientation ถือว่าไม่ได ้เป็ นเหตุการณ์ทเกิ
ี่ ดขึนจริ
เพราะ คน จะหมายถึง แนวความคิด อาหารก็เป็ น
แนวความคิด แต่ถ ้ากล่าวว่า สมชาย กิน ข ้าวมันไก่ จะ
่ อยูจ
่
หมายถึง นายสมชาย ซึงมี
่ ริงบนโลกนี ้ ซึงสมชายเป็
น
วัตถุ ของคลาส คน ข ้าวมันไก่ เป็ นวัตถุของคลาส อาหาร
Class (ต่อ)


้
่
่ อยู
่ ่ใน
ต่างๆทัหมดใน
Domain ทีเราสนใจ
เป็ นสิงที
ความคิดของเรา ไม่สามารถดาเนิ นกิจกรรมอะไรได ้ ถ ้า
เราต ้องการให ้เกิดกิจกรรมขึน้ เราจะต ้องสร ้าง Object
ของ Class นั้นๆแล ้วจึงใช ้ Object ทางานหรือดาเนิ น
กิจกรรม
่
เมือเปรี
ยบเทียบกับการพัฒนาโปรแกรมแบบเดิม Class
จะคล ้ายๆกับ ชนิ ดข ้อมูล (Type) และ Object จะคล ้ายๆกับ
ตัวแปร
Class
Abstraction และ Instantiation


Abstraction
เป็ นกระบวนการให ้ Concept กับ Object จน
เกิดเป็ น Class
Instantiation เป็ นกระบวนการของการทาให ้เกิด Object
่
จาก Class ทีเราสร
้างขึน้ ตาราบางเล่มจะเรียก Object ว่า
Instance เพราะว่า Object เกิดจากการกระบวนการ
Instantiation
Attributes และ Function


่ ณสมบัติ
เป็ นคุณสมบัตข
ิ อง วัตถุ โดยทีคุ
้ ้องเป็ นคุณสมบัตท
ดังกล่าวนี ต
ิ เราสนใจ
ี่
หรืออยู่ใน
่
Domain ทีเราสนใจ
้ สีเขียว
เช่น มีผลไม้ ประกอบด ้วย มะม่วง มีรสเปรียว
เงาะ มีรสหวาน สีแดง ชมพู่ มีรถหวาน สีชมพู
Object ในตัวอย่างนี ้ ได ้แก่ มะม่วง เงาะ ชมพู่
้ อ ผลไม้
Class ในตัวอย่างนี คื
Attribute ในตัวอย่างนี ้ ได ้แก่ 1. รสชาด 2. สี
Attribute
Function

เป็ นความสามารถในการทากิจกรรมของ Object
่ ไว ้เพือให
่ ้ Object อืนใน
่
ทีมี
Domain เรียกใช ้หรือกระตุนได
้ ้
่
เช่น นายสมชาย เปิ ดเครืองคอมพิ
วเตอร ์ หมายเลข 001
่
Object ได ้แก่ นายสมชาย และ เครืองคอมพิ
วเตอร ์
หมายเลข 001
Class ได ้แก่ คน และ คอมพิวเตอร ์
Interaction ได ้แก่ การเปิ ด
Function ได ้แก่ ฟังก ์ช ันเปิ ดของคอมพิวเตอร ์ 001
Function
Function (ต่อ)

Object ในโลกของ Object Orientation เป็ น
่ กกระทา หรือเป็ นอ็อบเจกต ์ทีให
่ ้อ็อบเจกต ์
Objects ทีถู
่ มาเรียกใช ้หรือกระตุ้น เพือให
่ ้เกิดการทางานเสมอ
อืน
สัญลักษณ์ทใช้
ี่ อธิบาย Class
Class Name
Attribute 1
Attribute 2
Attribute n
Function 1
Function 2
Function n
Object-Oriented Software Engineering

้
การพัฒนาระบบคอมพิวเตอร ์ กินความหมายตังแต่
การ
วิเคราะห ์ การออกแบบ การพัฒนาโปรแกรม และการ
นาไปใช ้ เราเรียกการพัฒนาระบบคอมพิวเตอร ์ด ้วย
หลักการ Object Orientation ว่า Object-Oriented Software
Engineering

ใน OOSE จะใช ้คาว่า Problem Domain หรือ Domain of
Problem
แทนคาว่า Domain เพราะ OOSE มองว่าการพัฒนา
โปรแกรมคือการแก ้ปัญหา
Object-Oriented Software Engineering (ต่อ)

OOSE
้
ประกอบด ้วย 3 ขันตอน
1. Object-Oriented Analysis (OOA)
ว่า
Problem Domain
่
เป็ นการวิเคราะห ์เพือหา
คืออะไร และทาความเข ้าใจใน
รายละเอียดของ
ปัญหานั้น เป็ นการหาคาตอบให ้กับคาถามทีว่่ า what is
the
problem to be solved?
้
2. Object-Oriented Design (OOD) เป็ นขันตอนการ
ออกแบบหรือ
่
Object-Oriented Software Engineering (ต่อ)
้
เป็ นขันตอนการสร
้าง
้
หนทางแก ้ปัญหาในรายละเอียดให ้เกิดขึนและใช
้งานได ้
จริง เป็ นการตอบคาถามทีว่่ า How to implement the
3. Object-Oriented Programming (OOP)
solution?
Abstraction

เป็ นกระบวนการในการให ้ Concept กับ Object ต่างๆในโลก
่
่ ง
แห่งความเป็ นจริง (Real World) เพือสร
้าง Class นั้น ซึงแบ่
ออกได ้เป็ น 4 กระบวนการคือ
1. Classification Abstraction
2. Aggregation Abstraction
3. Generalization Abstraction
4. Association Abstraction
Abstraction (ต่อ)

่ เคราะห ์ Domain Problem ไม่ได ้
ในการใช ้ Abstraction เพือวิ
มีข ้อกาหนดตายตัว ว่าจะต ้องใช ้กระบวนการย่อยของ
Abstraction ทุกตัว หรือใช ้ตามลาดับก่อนหลัง แต่ส่วน
่ กใช ้คือ Classification หลังจาก
ใหญ่ Abstraction แรกทีถู
้
นั้นจะขึนอยู
่กบั มุมมองของผู้วเิ คราะห ์ว่าจะใช ้ Abstraction
่
ตัวใดทีเหมาะสมมาวิ
เคราะห ์ Domain Problem อีก
Classification Abstraction


่ ้แยกประเภทของ Object ต่างๆทีอยู
่ ่
เป็ นกระบวนการทีใช
่ ้ได ้
ใน Domain และให ้ Concept กับ Object ต่างๆ เพือให
้
่ ้องการ
Class พืนฐานที
ต
่ าคัญทีสุ
่ ดเพราะ
ถือว่า Classification เป็ น Abstraction ทีส
้ ้วย Classification Abstraction
Class เกิดขึนด
Classification Abstraction (ต่อ)


่ ้องพิจารณา
ตัวอย่าง ถ ้าใน Problem Domain มีสงที
ิ่ ต
ได ้แก่ 1.รถยนต ์นั่งโตโยต ้า 2.รถจักรยานยนต ์ยามาฮ่า
3.รถโดยสาร 6 ล ้ออีซซ
ู ุ 4.จักรยาน BMX 5.เรือข ้าม
ฟาก
่ อนกันของ 1.รถยนต ์นั่งโตโยต ้า 2.
พบว่า Concept ทีเหมื
รถจักรยานยนต ์ยามาฮ่า 3.รถโดยสาร 6 ล ้ออีซซ
ู ุ คือ มี
่
่
้ น
เครืองยนต
์ มีล ้อจานวนหนึ่ ง วิงไปบนถนนได
้ ใช ้นามั
้
หรือแก๊สเป็ นเชือเพลิ
ง ดังนั้นสามารถให ้ Concept ของ
1,2,3 ว่าเป็ นคลาสรถยนต ์
รูปแสดง Classification ของรถยนต ์
Aggregation Abstraction


่ าเอา Class พืนฐาน
้
เป็ นกระบวนการทีน
มารวมกันหรือ
่ ดเป็ น Class ทีใหญ่
่
ประกอบกัน (Aggregate) เพือเกิ
ขน
ึ้
้
หรือซ ับซ ้อนขึน้ โดยที่ Class พืนฐานสร
้างมาจาก
้
ขันตอน
Classification
การทา Aggregation เป็ นการตอบคาถามว่า ใน Class
่ ้เกิด Class ใหม่ ที่
กลุม
่ หนึ่ งนั้น สามารถนามารวมเพือให
มี Concept ใหม่ได ้หรือไม่อย่างไร หรือในทางกลับกัน มี
่
Class ใดบ ้างทีสามารถแบ่
งย่อย ออกเป็ นส่วนประกอบ
่ Concept ต่างไปจากเดิมได ้
ต่างๆซึงมี

ตัวอย่าง รถยนต ์แต่ละคันประกอบด ้วย ตัวถัง ล ้อ
่
เครืองยนต
์ ในส่วนของตังถังประกอบด ้วย โครงรถ ประตู
กระจก จาก Domain ดังกล่าวสามารถแสดง
ความสัมพันธ ์แบบ Aggregation ได ้ดังรูป
Generalization Abstraction

่ ลก
เป็ นกระบวนการในการนา Class ทีมี
ั ษณะเหมือนกัน
หรือคล ้ายกัน หรือมีลก
ั ษณะอย่างใดอย่างหนึ่ งร่วมกัน มา
จัดหมวดหมู่ ไว ้เป็ น Class เดียวกัน กระบวนการ
ย ้อนกลับของ Generalization Abstraction เรียกว่า
Specialization ซึง่ กระบวนการ Specialization จะตอบ
คาถามว่าใน Class หนึ่ งๆสามารถจาแนกเป็ น Class อะไร
ได ้บ ้าง

ตัวอย่าง รถยนต ์สามารถแบ่งออกเป็ น รถบรรทุก รถเก๋ง
่ งได
่ ้เร็วกว่ารถปกติ สามารถเขียน
และรถสปอร ์ตซึงวิ
แสดงความสัมพันธ ์เชิง Generalization หรือ Specialization
ได ้ดังนี ้
Association Abstraction



เป็ นกระบวนการในการสร ้างความสัมพันธ ์ระหว่าง Class
่
ต่างๆใน Problem Domain ทีเราสนใจ
่ สามารถ
ความสัมพันธ ์ดังกล่าว เป็ นความสัมพันธ ์ทีไม่
อธิบาย Aggregation หรือ Generalization
Association เป็ นการอธิบายความสัมพันธ ์ของ Class
Association Abstraction (ต่อ)

้ นเป็ นเชือเพลิ
่
้
ตัวอย่าง รถยนต ์ใช ้นามั
ง รถยนต ์วิงบน
่
ถนน คนเป็ นผู้ขบ
ั ขีรถยนต
์ สามารถแสดง
ความสัมพันธ ์ของคลาสต่างๆใน Domain ได ้ดังนี ้
คน
ขับ
รถยนต ์
่
วิงบน
้
ใช ้เป็ นเชือเพลิ
ง
้ น
นามั
ถนน
Association Abstraction (ต่อ)

จากตัวอย่าง Class ต่างๆใน Problem Domain
้ น มีความสัมพันธ ์ต่อกัน
ได ้แก่ คน รถยนต ์ ถนน นามั
ได ้แก่
คนกับรถยนต ์ (คนขับรถยนต ์)
่
รถยนต ์กับถนน (รถยนต ์วิงบนถนน)
้ น (รถยนต ์ใช ้นามั
้ น)
รถยนต ์กับนามั
เอกสารอ้างอิง

กิตติ ภักดีวฒ
ั นะกุล และกิตติพงษ ์ กลมกล่อม. (2544).
UML วิเคราะห ์และออกแบบเชิงวัตถุ. กรุงเทพฯ:เคทีพ ี
คอมพ ์ แอนด ์ คอนซ ัลท ์ จากัด