1 / 18

Chapter 2 Abstractions

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

torn
Télécharger la présentation

Chapter 2 Abstractions

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 2 Abstractions

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

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

  4. กระบวนการในการให้ Concept กับ Objects ต่างๆ ใน Real World เพื่อสร้าง Class นั้น เราเรียกว่า Abstractions ซึ่งแบ่งออกได้ 4 กระบวนการย่อยๆ คือ 1. Classification Abstraction 2. Aggregation Abstraction 3. Generalization Abstraction 4. Association Abstraction

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

  6. 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 ดังรูป

  7. รถจักรยานยนต์ซูซูกิ รถยนต์ Concepts เกี่ยวกับรถ 1.มีเครื่องยนต์ 2. มีล้อจำนวนหนึ่ง 3.วิ่งไปบนถนนได้ 4.ใช้แก๊สหรือน้ำมันเป็นเชื้อเพลิง รถยนต์นั่งโตโยต้า รถโดยสาร 6 ล้อ Volvo เรือซีทรานส์ควีนส์ รถจักรยาน BMX ไม่มีล้อ หัวรถจักรไอน้ำ ไม่ต้องใช้เชื้อเพลิง วิ่งไปบนถนนไม่ได้ รูป Classification ของรถยนต์

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

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

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

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

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

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

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

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

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

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

  18. คำถามท้ายบท 1. Generalization Abstraction และ Aggregation Abstraction มีความเหมือนหรือแตกต่างกันอย่างไร 2. Aggregation Abstraction และ Association Abstraction มีความหมายหรือแตกต่างกันอย่างไร และสามารถใช้แทนกันได้หรือไม่อย่างไร 3. จากประโยคต่อไปนี้ สามารถอธิบายได้ด้วย Abstraction ใดบ้าง • - คนมีอวัยวะต่างๆ คือ แขน ขา ลำตัว และศีรษะ • โรงเรียนประกอบด้วยอาคารหลายๆ อาคาร แต่ละอาคารประกอบด้วยห้องหลายๆ • ห้อง • - นายดำ และนายแดง เป็นผู้ชาย นางสาวขาว และสมศรี เป็นผู้หญิง

More Related