Object Orientation -...

Preview:

Citation preview

Object Orientation

1

Object Orientation คืออะไร

• เกิดจากคาํ 2 คาํ คือ Object และ Orientation

• Object แปลวา่ วตัถุ ที่จบัตอ้งไดแ้ละไม่สามารถจบัตอ้งได ้(รูปธรรมกบันามธรรม) เช่น คน สุนขั รถยนต ์รายวชิา ภาควชิา เกรด

• Orientation มาจากคาํวา่ Orient แปลวา่นาํทางหรือนาํไป

• Object Orientation หมายถึง การใช ้Object เป็นหลกัในการพิจารณา ความเป็นจริงต่างๆที่เกิดขึ้น

• สามารถนาํหลกัการของ Object Orientation มาใชใ้นการวเิคราะห์และออกแบบระบบคอมพิวเตอร์ได ้ทาํใหเ้กิดศาสตร์ใหม่ที่เรียกวา่ Object Oriented Analysis and Design หรือเรียกยอ่ๆวา่ OOAD

2

Object, Relation และ Interaction

• ในชีวติประจาํวนั จะพบวตัถุ(Object)ต่างๆ อยูร่อบตวัเรา เช่น

คน รถยนต ์ คอมพิวเตอร์ โตะ๊เรียน เป็นตน้ ซึ่งเป็นวตัถุที่สามารถจบัตอ้งได ้

หรือ รายวชิาเรียน เกรด ซึ่งเป็นวตัถุที่ไม่สามารถจบัตอ้งได้

• Object จะประกอบดว้ยคุณลกัษณะ หรือคุณสมบตัิ (properties) และ

พฤติกรรม (behavior) หรือการกระทาํ หรือกิจกรรม ที่วตัถุนั้นสามารถ

กระทาํได ้เช่น คน มีคุณลกัษณะดงันี้ มีผม มีแขน มีขา มีหู ตา จมูก ปาก

คน มีพฤติกรรมดงันี้ คนพดูได ้กินได ้วิง่ได ้นอนได้

3

Object, Relation และ Interaction (ต่อ)

• กิจกรรมต่างๆที่เกิดขึ้นรอบตวัเรา เกิดจาก Relationship และมีปฏิสมัพนัธ์

(Interaction) ระหวา่ง Object 2 ตวัขึ้นไป เช่น

คน รับประทาน อาหาร จากประโยคดงักล่าวนี้

Object ไดแ้ก่ คน , อาหาร

Interaction ไดแ้ก่ รับประทาน

Relation ไดแ้ก่ เป็นเจา้ของ (คน เป็นเจา้ของ อาหารที่รับประทาน)

4

Object, Relation และ Interaction (ต่อ)

• Relationship คือ ความเกี่ยวขอ้ง หรือความสมัพนัธ์ระหวา่ง object 2

ตวัขึ้นไป เช่น การเป็นเขา้มี การมี การสงักดั

• Interaction คือ ปฏิสมัพนัธ์ หรือการกระทาํใดๆที่เกิดขึ้น ระหวา่ง object

2 ตวัขึ้นไป เช่น การกิน การเล่น การสร้าง

5

Domain

• Domain เป็นกรอบ หรือขอบเขต ของสิ่งที่เราใหค้วามสนใจ หรือ

พิจารณา

• ใน Domain หนึ่งๆ สามารถมี object ไดต้ั้งแต่ 2 ตวัขึ้นไป object ตวัเดียว

สามารถอยูใ่นหลายๆ Domain ได ้ซึ่งขึ้นอยูก่บัวา่เราจะกาํหนด Domain

ที่สนใจอยา่งไร

6

Object และ Class

• Concept

Object ที่อยูใ่นโลกของความเป็นจริง (Real World Object) เราไม่สามารถ

นาํ มาใส่ในคอมพิวเตอร์ได ้ แต่สิ่งที่สามารถทาํไดค้ือ การใส่แนวคิด

(Concept) ใหก้บั Object เพื่อนาํไปใส่ไวใ้นคอมพิวเตอร์

• Concept หมายถึง ความคิดรวบยอดที่มีใหก้บั Object นั้นๆ ภายใตก้รอบ

ที่กาํหนด (Domain) เช่น

Concept ของรถยนต ์คือ รถยนตท์ุกคนั มีตวัถงั มีลอ้ มีเครื่องยนต์

Concept ของคน คือ มี 2 แขน 2 ขา 1 ศีรษะ

7

Class

• ผลจาก การให ้Concept กบั Object ทาํใหเ้กิดการจดักลุ่มของ Object ขึ้น

กลุ่มของ Object ที่ไดจ้ากกระบวนการนี้ เรียกวา่ Abstract Objects หรือ

เรียกวา่ Class

• ตวัอยา่ง เช่น รถยนตย์ีห่อ้ TOYOTA , HONDA ต่างกม็ี 4 ลอ้ มี

เครื่องยนต ์และใชน้ํ้ ามนัเชื้อเพลิง เหมือนกนั สามารถจดัให ้รถ ทั้งสอง

คนันี้ อยูใ่นคลาส รถยนต ์ ดงันั้น รถยนตย์ีห่อ้ MAZDA กม็ี 4 ลอ้ มี

เครื่องยนต ์ใชน้ํ้ ามนัเชื้อเพลิง กส็ามารถจดัอยูใ่นคลาส รถยนตไ์ด ้เพราะ

มี Concept แบบเดียวกนั แต่รถจกัรยานยนต ์ไม่สามารถจดัอยูใ่นคลาส

รถยนต ์ได้

8

Class (ต่อ)

• Class ถือเป็นนามธรรม (Abstract) นัน่แสดงวา่ คลาสไม่มีตวัตน คลาสมี

แต่แนวคิด ดงันั้นเราจึงไม่สามารถทาํให ้class ดาํเนินกิจกรรมใดๆได้

• เช่น จากประโยค คน กิน อาหาร ในแง่ของ Object Orientation ถือวา่

ไม่ไดเ้ป็นเหตุการณ์ที่เกิดขึ้นจริง

เพราะ คน จะหมายถึง แนวความคิด อาหารกเ็ป็นแนวความคิด แต่ถา้

กล่าววา่ สมชาย กิน ขา้วมนัไก่ จะหมายถึง นายสมชาย ซึ่งมีอยูจ่ริงบน

โลกนี้ ซึ่งสมชายเป็น วตัถุ ของคลาส คน ขา้วมนัไก่ เป็นวตัถุของคลาส

อาหาร

9

Class (ต่อ)

• Class ต่างๆ ทั้งหมดใน Domain ที่เราสนใจ เป็นสิ่งที่อยูใ่นความคิดของ

เรา ไม่สามารถดาํเนินกิจกรรมอะไรได ้ ถา้เราตอ้งการใหเ้กิดกิจกรรมขึ้น

เราจะตอ้งสร้าง Object ของ Class นั้นๆแลว้จึงใช ้Object ทาํงานหรือ

ดาํเนินกิจกรรม

• เมื่อเปรียบเทียบกบัการพฒันาโปรแกรมแบบเดิม Class จะคลา้ยๆกบั

ชนิดขอ้มูล (Type) และ Object จะคลา้ยๆกบั ตวัแปร

10

Abstraction และ Instantiation

• Abstraction เป็นกระบวนการให ้Concept กบั Object จนเกิดเป็น Class

• Instantiation เป็นกระบวนการของการทาํใหเ้กิด Object จาก Class ที่เรา

สร้างขึ้น ตาํราบางเล่มจะเรียก Object วา่ Instance เพราะวา่ Object เกิด

จากการกระบวนการ Instantiation

11

Attributes และ Function

• Attribute เป็นคุณสมบตัิของ วตัถุ โดยที่คุณสมบตัิดงักล่าวนี้ตอ้งเป็น

คุณสมบตัิที่เราสนใจ หรืออยูใ่น Domain ที่เราสนใจ

• เช่น มีผลไม ้ประกอบดว้ย มะม่วง มีรสเปรี้ยว สีเขียว เงาะ มีรสหวาน สี

แดง ชมพู ่มีรถหวาน สีชมพู

Object ในตวัอยา่งนี้ ไดแ้ก่ มะม่วง เงาะ ชมพู ่

Class ในตวัอยา่งนี้คือ ผลไม้

Attribute ในตวัอยา่งนี้ ไดแ้ก่ 1. รสชาด 2. สี

12

Function

• Function เป็นความสามารถในการทาํกิจกรรมของ Object ที่มีไวเ้พื่อให ้Object อื่นใน Domain เรียกใชห้รือกระตุน้ได้

เช่น นายสมชาย เปิดเครื่องคอมพิวเตอร์ หมายเลข 001

Object ไดแ้ก่ นายสมชาย และ เครื่องคอมพิวเตอร์ หมายเลข 001

Class ไดแ้ก่ คน และ คอมพิวเตอร์

Interaction ไดแ้ก่ การเปิด

Function ไดแ้ก่ ฟังกช์นัเปิดของคอมพิวเตอร์ 001

• Object ในโลกของ Object Orientation เป็น Objects ที่ถูกกระทาํ หรือ เป็น

อ็อบเจกตท์ี่ใหอ้็อบเจกตอ์ื่น มาเรียกใชห้รือกระตุน้ เพื่อใหเ้กิดการทาํงานเสมอ

13

สญัลกัษณท์ี่ใชอ้ธิบาย Class

Class Name

Attribute 1Attribute 2Attribute n

Function 1Function 2

Function n

14

Object-Oriented Software Engineering

• การพฒันาระบบคอมพิวเตอร์ กินความหมายตั้งแต่ การวเิคราะห์ การ

ออกแบบ การพฒันาโปรแกรม และการนาํไปใช ้ เราเรียกการพฒันา

ระบบคอมพิวเตอร์ดว้ยหลกัการ Object Orientation วา่ Object-Oriented

Software Engineering

• ใน OOSE จะใชค้าํวา่ Problem Domain หรือ Domain of Problem

แทนคาํวา่ Domain เพราะ OOSE มองวา่การพฒันาโปรแกรมคือการ

แกป้ัญหา

15

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) เป็นขั้นตอนการออกแบบหรือ

จาํลองวธิีแกป้ัญหาใน Problem Domain ซึ่งเป็นการหาคาํตอบใหก้บั

คาํถามที่วา่ How to solve the problem?

16

Object-Oriented Software Engineering (ต่อ)

3. Object-Oriented Programming (OOP) เป็นขั้นตอนการสร้างหนทาง

แกป้ัญหาในรายละเอียดใหเ้กิดขึ้นและใชง้านไดจ้ริง เป็นการตอบคาํถาม

ที่วา่ How to implement the solution?

17

Abstraction

• เป็นกระบวนการในการให ้Concept กบั Object ต่างๆในโลกแห่งความ

เป็นจริง (Real World) เพื่อสร้าง Class นั้น ซึ่งแบ่งออกไดเ้ป็น 4

กระบวนการคือ

1. Classification Abstraction

2. Aggregation Abstraction

3. Generalization Abstraction

4. Association Abstraction

18

Abstraction (ตอ่)

• ในการใช ้Abstraction เพื่อวเิคราะห์ Domain Problem ไม่ไดม้ีขอ้กาํหนด

ตายตวั วา่จะตอ้งใชก้ระบวนการยอ่ยของ Abstraction ทุกตวั หรือใช้

ตามลาํดบัก่อนหลงั แต่ส่วนใหญ่ Abstraction แรกที่ถูกใชค้ือ

Classification หลงัจากนั้นจะขึ้นอยูก่บัมุมมองของผูว้เิคราะห์วา่จะใช ้

Abstraction ตวัใดที่เหมาะสมมาวเิคราะห์ Domain Problem อีก

19

Classification Abstraction

• เป็นกระบวนการที่ใชแ้ยกประเภทของ Object ต่างๆที่อยูใ่น Domain

และให ้Concept กบั Object ต่างๆ เพื่อใหไ้ด ้Class พื้นฐานที่ตอ้งการ

• ถือวา่ Classification เป็น Abstraction ที่สาํคญัที่สุดเพราะ Class เกิดขึ้น

ดว้ย Classification Abstraction

20

Classification Abstraction (ตอ่)

• ตวัอยา่ง ถา้ใน Problem Domain มีสิ่งที่ตอ้งพิจารณา ไดแ้ก่

1.รถยนตน์ัง่โตโยตา้ 2.รถจกัรยานยนตย์ามาฮ่า 3.รถโดยสาร 6 ลอ้อีซูซุ

4.จกัรยาน BMX 5.เรือขา้มฟาก

• พบวา่ Concept ที่เหมือนกนัของ

1.รถยนตน์ัง่โตโยตา้ 2.รถจกัรยานยนตย์ามาฮ่า 3.รถโดยสาร 6 ลอ้อีซูซุ

คือ มีเครื่องยนต ์มีลอ้จาํนวนหนึ่ง วิง่ไปบนถนนได ้ใชน้ํ้ ามนัหรือแก๊ส

เป็นเชื้อเพลิง ดงันั้นสามารถให ้Concept ของ 1,2,3 วา่เป็นคลาสรถยนต์

21

รูปแสดง Classification ของรถยนต์22

Aggregation Abstraction

• เป็นกระบวนการที่นาํเอา Class พื้นฐาน มารวมกนัหรือประกอบกนั

(Aggregate) เพื่อเกิดเป็น Class ที่ใหญ่ขึ้น หรือซบัซอ้นขึ้น โดยที่ Class

พื้นฐานสร้างมาจากขั้นตอน Classification

• การทาํ Aggregation เป็นการตอบคาํถามวา่ ใน Class กลุ่มหนึ่งนั้น

สามารถนาํมารวมเพื่อใหเ้กิด Class ใหม่ ที่มี Concept ใหม่ไดห้รือไม่

อยา่งไร หรือในทางกลบักนั มี Class ใดบา้งที่สามารถแบ่งยอ่ย ออกเป็น

ส่วนประกอบต่างๆซึ่งมี Concept ต่างไปจากเดิมได้

23

• ตวัอยา่ง รถยนตแ์ต่ละคนัประกอบดว้ย ตวัถงั ลอ้ เครื่องยนต ์ในส่วน

ของตงัถงัประกอบดว้ย โครงรถ ประตู กระจก จาก Domain ดงักล่าว

สามารถแสดงความสมัพนัธ์แบบ Aggregation ไดด้งัรูป

24

Generalization Abstraction

• เป็นกระบวนการในการนาํ Class ที่มีลกัษณะเหมือนกนัหรือคลา้ยกนั

หรือมีลกัษณะอยา่งใดอยา่งหนึ่งร่วมกนั มาจดัหมวดหมู่ ไวเ้ป็น Class

เดียวกนั กระบวนการยอ้นกลบัของ Generalization Abstraction เรียกวา่

Specialization ซึ่ง กระบวนการ Specialization จะตอบคาํถามวา่ใน

Class หนึ่งๆสามารถจาํแนกเป็น Class อะไรไดบ้า้ง

25

• ตวัอยา่ง รถยนตส์ามารถแบ่งออกเป็น รถบรรทุก รถเก๋ง และรถสปอร์ตซึ่งวิง่ไดเ้ร็วกวา่รถปกติ สามารถเขียนแสดงความสมัพนัธ์เชิง Generalization หรือ Specialization ไดด้งันี้

26

Association Abstraction

• เป็นกระบวนการในการสร้างความสมัพนัธ์ระหวา่ง Class ต่างๆใน

Problem Domain ที่เราสนใจ

• ความสมัพนัธ์ดงักล่าว เป็นความสมัพนัธ์ที่ไม่สามารถอธิบาย

Aggregation หรือ Generalization

• Association เป็นการอธิบายความสมัพนัธ์ของ Class

27

Association Abstraction (ตอ่)

• ตวัอยา่ง รถยนตใ์ชน้ํ้ ามนัเป็นเชื้อเพลิง รถยนตว์ิง่บนถนน คนเป็นผูข้บั

ขี่รถยนต ์ สามารถแสดงความสมัพนัธ์ของคลาสต่างๆใน Domain ได้

ดงันี้

คน รถยนต์ ถนน

นํ้ามนั

ขบั วิง่บน

ใชเ้ป็นเชื้อเพลิง

28

Association Abstraction (ตอ่)

• จากตวัอยา่ง Class ต่างๆใน Problem Domain ไดแ้ก่ คน รถยนต ์ถนน

นํ้ามนั มีความสมัพนัธ์ต่อกนั ไดแ้ก่

คนกบัรถยนต ์(คนขบัรถยนต)์

รถยนตก์บัถนน (รถยนตว์ิง่บนถนน)

รถยนตก์บันํ้ามนั (รถยนตใ์ชน้ํ้ ามนั)

29

เอกสารอา้งอิง

• กิตติ ภกัดีวฒันะกลุ และกิตติพงษ ์กลมกล่อม. (2544). UML

วเิคราะห์และออกแบบเชิงวตัถุ. กรุงเทพฯ:เคทีพี คอมพ ์แอนด ์

คอนซลัท ์จาํกดั

30

Recommended