slide1
Download
Skip this Video
Download Presentation
Chapter 2 Abstractions

Loading in 2 Seconds...

play fullscreen
1 / 18

Chapter 2 Abstractions - PowerPoint PPT Presentation


  • 776 Views
  • Uploaded on

Chapter 2 Abstractions. จุดประสงค์ 1. เพื่อให้นักศึกษาได้เข้าใจความหมายและความสำคัญของ Abstraction ที่มีต่อ OOAD 2. เพื่อให้นักศึกษาทำความเข้าใจเบื้องต้นเกี่ยวกับ Abstraction แบบต่างๆ ได้แก่ Classification, Aggregation, Generalization และ Association. 2.1 Abstractions.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Chapter 2 Abstractions' - torn


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

Chapter 2

Abstractions

slide2

จุดประสงค์

1. เพื่อให้นักศึกษาได้เข้าใจความหมายและความสำคัญของ Abstraction ที่มีต่อ OOAD

2. เพื่อให้นักศึกษาทำความเข้าใจเบื้องต้นเกี่ยวกับ Abstraction แบบต่างๆ ได้แก่ Classification, Aggregation, Generalization และ Association

slide3

2.1 Abstractions

เราได้รู้จักกับ Class (เรียกอีกอย่างหนึ่งว่า Abstract Data Type) ซึ่งหมายถึงกลุ่มของ Objects ที่มีความเหมือนหรือคล้ายคลึงกันในแง่ใดแง่หนึ่ง หรือในหลายๆ แง่ โดยสิ่งที่ใช้ในการกำหนดความเหมือนหรือคล้ายคลึงดังกล่าวนั้นก็คือ Concept นั่นเอง เราสามารถบอกได้ว่า Object ใน Class เดียวกัน ล้วนแล้วแต่มี Concept เดียวกัน โดยขึ้นอยู่กับ Domain ที่เรากำหนด

slide4

กระบวนการในการให้ Concept กับ Objects ต่างๆ ใน Real World เพื่อสร้าง Class นั้น เราเรียกว่า Abstractions ซึ่งแบ่งออกได้ 4 กระบวนการย่อยๆ คือ

1. Classification Abstraction

2. Aggregation Abstraction

3. Generalization Abstraction

4. Association Abstraction

slide5

การใช้งาน Abstraction เพื่อการวิเคราะห์ Problem Domain นั้น ไม่ได้มีข้อกำหนดตายตัวว่าใน Problem Domain หนึ่งๆ จะต้องใช้ทุก Abstraction หรือ จะใช้ Abstraction ตามลำดับก่อนหรือหลังอย่างไร แต่ส่วนมากแล้ว Classification มักจะเป็น Abstraction แรกที่ถูกใช้ หลังจากนั้นจะขึ้นอยู่กับมุมมองและวิจารณญาณของผู้วิเคราะห์ออกแบบระบบ ที่จะใช้ Abstraction ใดที่เหมาะสมเพื่อการวิเคราะห์ Problem Domain และในความจริงพบว่า Abstraction หนึ่งๆ นั้นมักจะถูกใช้มากกว่า 1 ครั้งเสมอ เพื่อการวิเคราะห์ Problem Domain เพียงหนึ่งเดียว

slide6

2.2 Classification Abstraction

Classification Abstraction เป็นกระบวนการที่ใช้เพื่อแยกประเภท (Classify)Object ต่างๆ ที่อยู่ใน Domain และให้ Concept กับ Object ต่างๆ เหล่านั้น เพื่อให้ได้ “Class พื้นฐาน” (Fundamental Classes) ที่ต้องการ

ตัวอย่าง พิจารณาสิ่งที่อยู่ใน Problem Domain ซึ่งได้แก่ (1) รถยนต์นั่งโตโยต้า (2) รถจักรยานยนต์ซูซูกิ และ (3) รถโดยสาร 6 ล้อ Volvo (4) เรือซีทรานส์ควีนส์ (5) หัวรถจักรไอน้ำ Dodge และ (6) จักรยาน BMX จะพบว่า Concept ที่เหมือนกันของ (1) รถยนต์นั่งโตโยต้า (2) รถจักรยานยนต์ซูซูกิ และ (3) รถโดยสาร 6 ล้อ Volvo ก็คือ มีเครื่องยนต์ มีล้อจำนวนหนึ่ง สามารถวิ่งไปบนถนนได้ และใช้น้ำมันหรือแก๊สเป็นพลังงานในการขับเคลื่อน เพราะฉะนั้นเราสามารถให้ Concept กับ (1) (2) และ (3) ว่าเป็น “Class รถยนต์” ด้วยกระบวนการ Classification ดังรูป

slide7

รถจักรยานยนต์ซูซูกิ

รถยนต์

Concepts เกี่ยวกับรถ

1.มีเครื่องยนต์

2. มีล้อจำนวนหนึ่ง

3.วิ่งไปบนถนนได้

4.ใช้แก๊สหรือน้ำมันเป็นเชื้อเพลิง

รถยนต์นั่งโตโยต้า

รถโดยสาร 6 ล้อ Volvo

เรือซีทรานส์ควีนส์

รถจักรยาน BMX

ไม่มีล้อ

หัวรถจักรไอน้ำ

ไม่ต้องใช้เชื้อเพลิง

วิ่งไปบนถนนไม่ได้

รูป Classification ของรถยนต์

slide8

จากตัวอย่าง เราใช้ Concept เพียง 4 ข้อเท่านั้นเพื่อสร้าง Class รถยนต์ จาก Objects (1) (2) และ (3) นั่นคือ 1. มีเครื่องยนต์ 2. มีล้อจำนวนหนึ่ง 3. วิ่งไปบนถนนได้ และ 4. ใช้แก๊สหรือน้ำมันเป็นเชื้อเพลิง โดยเราไม่สนใจว่า จะต้องมีจำนวนล้อเท่ากับ 4 ล้อ หรือจะต้องสามารถบรรทุกของได้

เราถือว่า Classification เป็น Abstraction ที่สำคัญที่สุด เพราะ Class เกิดขึ้นด้วย Classification Abstraction ถ้าหากว่า Class พื้นฐานที่เกิดขึ้นในขั้นตอนนี้เกิดข้อผิดพลาด การสร้าง Class ใหม่ๆ ด้วยกระบวนการ Aggregation และ Generalization และการสร้างความเป็นสัมพันธ์ระหว่าง Class ต่างๆ ด้วย Association ย่อมจะมีความผิดพลาดด้วยเช่นกัน

slide9

2.3 Aggregation Abstraction

Aggregation Abstraction คือกระบวนการที่นำเอา Class พื้นฐาน มารวมกันหรือประกอบกัน (Aggregate) เพื่อให้เกิดเป็น Class ที่ใหญ่ขึ้น โดย Class พื้นฐานดังกล่าวคือ Class ที่สร้างขึ้นในขั้นตอน Classification นั่นเอง

การทำ Aggregation คือ การตอบคำถามว่า ใน Class กลุ่มหนึ่งนั้น เราสามารถที่จะนำมันมารวมกัน (Compose) เพื่อทำให้เกิด Class ใหม่ ที่มี Concept ใหม่ ได้หรือไม่อย่างไร หรือในทางกลับกัน ก็คือ การตอบคำถามว่า มี Class ใดบ้างที่สามารถแบ่งย่อย (Decompose) ออกเป็นส่วนประกอบต่างๆ ซึ่งมี Concept ต่างไปจากเดิมได้

slide10

ตัวอย่าง รถยนต์แต่ละคันประกอบไปด้วย ตัวถัง ล้อ เครื่องยนต์ ซึ่งในส่วนของตัวถัง จะประกอบไปด้วย ประตู กระจกหน้ารถ และโครงรถ ซึ่งจาก Domain นี้ สามารถแสดงความสัมพันธ์ในเชิง Aggregation ได้ดังรูป

รถยนต์

Aggregation

ตัวถังรถ

ล้อ

เครื่องยนต์

Aggregation

รูป Aggregation ของรถยนต์

ประตู

กระจกหน้ารถ

โครงรถ

slide11

จากตัวอย่าง จะเห็นว่ามีการใช้ Aggregation เพื่อการรวมเอา Class ประตูรถ กระจกหน้ารถ และโครงรถ ซึ่งแต่ละ Class มี Concept ต่างกันโดยสิ้นเชิง เพื่อให้เป็น Class ใหม่คือ Class ตัวถังรถ และมีการใช้ Aggregation อีกครั้งเพื่อรวมเอา Class ตัวถังรถ ล้อ และ เครื่องยนต์ เข้าไว้ด้วยกัน เพื่อเป็น Class รถยนต์

slide12

2.4 Generalization Abstraction

Generalization Abstraction คือกระบวนการในการนำ Class ที่มีลักษณะเหมือนหรือคล้ายคลึงกัน หรือมีคุณสมบัติอย่างใดอย่างหนึ่งร่วมกัน (General) มาจัดหมวดหมู่ไว้เป็น Class เดียวกัน กระบวนการย้อนกลับของ Generalization Abstraction เรียกว่า Specialization ซึ่ง Specialization คือการตอบคำถามว่าใน Class หนึ่งๆ นั้นสามารถจำแนกเป็น Class อะไรได้บ้าง

slide13

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

รถยนต์

คุณสมบัติ: มีล้อ มีเครื่องยนต์

Specialization

Specialization

Generalization

Generalization

รถเก๋ง

คุณสมบัติ: คุณสมบัติของรถยนต์ + ใช้โดยสาร มี 4 ประตู

รถบรรทุก

คุณสมบัติ: คุณสมบัติของรถยนต์ + สามารถบรรทุกของได้

Specialization

Generalization

รูป Generalization ของรถยนต์

รถสปอร์ต

คุณสมบัติ: คุณสมบัติของรถเก๋ง +

สามารถวิ่งได้เร็วกว่ารถเก๋งปกติ

slide14

จากตัวอย่าง จะเห็นว่าเราใช้ Generalization เพื่อการจัดหมวดหมู่ Class รถบรรทุกและ Class รถเก๋ง ไว้เป็น Class รถยนต์ เพราะรถเก๋งและรถบรรทุกนั้นต่างก็มีคุณสมบัติของรถยนต์ คือ มีล้อ และมีเครื่องยนต์ด้วยกันทั้งคู่ ดังนั้น Class รถเก๋งและรถบรรทุก สามารถอยู่ในหมวดหมู่เดียวกันได้ คือ Class รถยนต์เอง ในทางกลับกันเราสามารถจำแนก รถยนต์ ออกเป็นรถเก๋งและรถบรรทุก ด้วยกระบวนการ Specialization เพราะทั้งรถเก๋งและรถบรรทุกมีคุณสมบัติทุกอย่างที่รถยนต์ทั่วไปมี แต่รถเก๋งมีข้อพิเศษกว่ารถยนต์ทั่วไป ตรงที่ มันใช้สำหรับการโดยสาร และมี 4 ล้อ ในขณะที่รถบรรทุกมีคุณสมบัติพิเศษกว่ารถยนต์ทั่วไปและต่างจากรถเก๋งตรงที่รถบรรทุกสามารถบรรทุกของได้

ในขณะเดียวกันยังใช้ Specialization เพื่อการจำแนกรถเก๋งออกเป็นรถเก๋งชนิดพิเศษ เรียกว่า “รถสปอร์ต”

slide15

2.5 Association Abstraction

Association Abstraction คือกระบวนการในการสร้างความสัมพันธ์ระหว่าง Class ต่างๆ ใน Problem Domain ที่เราสนใจ ความสัมพันธ์ดังกล่าว คือความสัมพันธ์ที่ไม่สามารถอธิบายได้ด้วย Aggregation (ความสัมพันธ์ในเชิงการรวมกัน การประกอบกัน หรือการแบ่งแยกส่วนประกอบ) หรือ Generalization (ความสัมพันธ์ในเชิง การจัดประเภทจัดหมวดหมู่ หรือการจำแนก) แต่ Association เป็นการอธิบายความสัมพันธ์ของ Class ในเชิงกิจกรรม เช่น การใช้งาน การขับเคลื่อน การบริโภค เป็นต้น หรือความสัมพันธ์ในเชิงสถิตย์ เช่น การเป็นเจ้าของ การให้กำเนิด การผลิต เป็นต้น

slide16

ตัวอย่าง ตามปกติรถยนต์ต้องใช้น้ำมันเป็นเชื้อเพลิงเพื่อให้สามารถวิ่งไปได้ และรถยนต์เองก็วิ่งอยู่บนถนน นอกจากนี้ คนขับรถก็คือ ผู้ขับขี่รถยนต์ เราแสดงความสัมพันธ์ของ Class ต่างๆ ใน Domain ได้ดังรูป

วิ่งอยู่บน

คน

ขับ

รถยนต์

ถนน

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

รถยนต์

รูป Association Abstraction ของ Domain

slide17

จากตัวอย่างข้างต้นจะพบว่า Class ต่างๆ ใน Problem Domain ซึ่งได้แก่ คน รถยนต์ ถนน และน้ำมัน มีความสัมพันธ์ต่อกัน ซึ่งความสัมพันธ์ที่กล่าวถึง ประกอบด้วย คนกับรถยนต์ (คนขับรถยนต์) รถยนต์กับถนน (รถยนต์วิ่งไปบนถนน) และรถยนต์กับน้ำมัน (รถยนต์ใช้น้ำมัน) ซึ่งความสัมพันธ์เหล่านี้ไม่สามารถอธิบายได้ด้วย Aggregation และ Generalization Abstraction แต่สามารถอธิบายได้ด้วย Association Abstraction ดังตัวอย่างที่ผ่านมา

จากตัวอย่างข้างต้น จะใช้เส้นที่มีหัวลูกศรเพื่อแสดงความสัมพันธ์ระหว่าง Class โดยบนเส้นจะมีชื่อของความสัมพันธ์กำกับอยู่ ลูกศรบนเส้นใช้เพื่ออำนวยความสะดวกในการอ่านและทำความเข้าใจกับความสัมพันธ์ เช่น จากรูปจะอ่านว่า “คนขับรถยนต์” คืออ่านตามหัวลูกศร

slide18

คำถามท้ายบท

1. Generalization Abstraction และ Aggregation Abstraction มีความเหมือนหรือแตกต่างกันอย่างไร

2. Aggregation Abstraction และ Association Abstraction มีความหมายหรือแตกต่างกันอย่างไร และสามารถใช้แทนกันได้หรือไม่อย่างไร

3. จากประโยคต่อไปนี้ สามารถอธิบายได้ด้วย Abstraction ใดบ้าง

  • - คนมีอวัยวะต่างๆ คือ แขน ขา ลำตัว และศีรษะ
  • โรงเรียนประกอบด้วยอาคารหลายๆ อาคาร แต่ละอาคารประกอบด้วยห้องหลายๆ
  • ห้อง
  • - นายดำ และนายแดง เป็นผู้ชาย นางสาวขาว และสมศรี เป็นผู้หญิง
ad