1 / 54

290353 Object-Oriented Analysis and Design

290353 Object-Oriented Analysis and Design. อ.ธารารัตน์ พวงสุวรรณ คณะวิทยาศาสตร์และศิลปศาสตร์ มหาวิทยาลัยบูรพา วิทยาเขตสารสนเทศจันทบุรี. บทที่ 3 แนวคิดในการสร้าง และจัดหมวดหมู่ Class. เนื้อหา. การกำหนด Problem Domain Classification Abstraction Aggregation Abstraction

Download Presentation

290353 Object-Oriented Analysis and Design

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. 290353Object-Oriented Analysis and Design อ.ธารารัตน์ พวงสุวรรณ คณะวิทยาศาสตร์และศิลปศาสตร์ มหาวิทยาลัยบูรพา วิทยาเขตสารสนเทศจันทบุรี บทที่ 3แนวคิดในการสร้างและจัดหมวดหมู่ Class

  2. เนื้อหา • การกำหนด Problem Domain • Classification Abstraction • Aggregation Abstraction • Generalization Abstraction • Association Abstraction

  3. การกำหนด Problem Domain • คือการกำหนดขอบเขตของสิ่งที่ต้องการจะพิจารณา • เป็นสิ่งที่ต้องพิจารณาอันดับแรกเมื่อตกลงที่จะพัฒนาระบบด้วยหลักการของ OOAD • สามารถกำหนด Problem Domain ได้จากการสอบถามความต้องการ (Requirement) จากผู้ใช้ระบบ (End-User) งานนั้น ๆ

  4. ข้อควรจำในการกำหนด Problem Domain • Problem Domain ที่แน่ชัดมักจะยังไม่สามารถหาได้ในขั้นต้นของการเริ่มวิเคราะห์ระบบ แต่การกำหนดโครงใหญ่ หรือภาพรวมของ Problem Domain นั้นต้องชัดเจน • เช่น ถ้าจะพัฒนาระบบงานให้กับฝ่ายบัญชี นั่นแสดงว่า Object ต่าง ๆ ต้องเป็นเรื่องที่เกี่ยวข้องกับฝ่ายบัญชี (ซึ่งขณะเดียวกันอาจเกี่ยวกับฝ่ายบุคคลก็ได้แต่ต้องไม่มี Object ใด ๆ ที่ไม่เกี่ยวกับฝ่ายบัญชี) และในอนาคตอาจต้องรวมเอางบการเงินเป็นส่วนหนึ่งของ Problem Domain ก็ได้

  5. การค้นหา Objects ใน Problem Domain สิ่งแรกที่ต้องทำเมื่อเรามี Problem Domain ในภาพรวมแล้ว คือ การพิจารณาว่า มี Object อะไรบ้างภายใน Domain นั้น ๆ โดยยังไม่ต้องคำนึงถึงกิจกรรมที่เกิดขึ้นในระบบ “คำนาม” ถือเป็นตัวบ่งชี้ที่ดีในการหา Object ใน Problem Domain แต่อย่างไรก็ตามคำนามบางคำอาจจะกลายเป็น Attribute ของ Objects ก็ได้เช่นเดียวกัน หาคำนามทั้งหมดที่มีใน Problem Domain แล้วจึงมาแยกแยะภายหลังว่าสิ่งใดคือ Objects สิ่งใดคือ Attribute ของ Object 5

  6. การจำแนก Object ใน Problem Domain • Object มี 2 ประเภท • Touchable or Tangible Object • Intangible Object • บทบาท (Roles) เช่น ครู ตำรวจ • เหตุการณ์ ( Incidents , Event ) • ปฏิสัมพันธ์ (Interactions) เช่น ทางแยก สัญญาเงินกู้

  7. ตัวอย่างการหา Object ใน Problem Domain ตัวอย่างที่ 1 ข้อความ : “หนังสือเล่มหนึ่ง ปกสีแดง ภายในประกอบด้วยเนื้อหาเกี่ยวกับ Object Orientation หนังสือเล่มนี้มีจำนวน 50 หน้า” 7

  8. ตัวอย่างการหา Object ใน Problem Domain ตัวอย่างที่ 2 ข้อความ : “การประมวลผลข้อมูลด้านการเงินของธนาคารพาณิชย์ด้วยเครื่องคอมพิวเตอร์ มีด้วยการ 2 ประเภท ได้แก่ การประมวลผลแบบ Batch (การสะสมข้อมูลไว้ก่อนช่วงระยะเวลาหนึ่ง แล้วจึงประมวลผลในคราวเดียว) การประมวลผลแบบ Real Time(การประมวลผลทันทีที่มีข้อมูลเข้าสู่ระบบ) และในการประมวลผลในแต่ละครั้งจะมีเวลาที่ใช้ในการประมวลผล (Elapse Time) ที่ไม่แน่นอนขึ้นอยู่กับขนาดของข้อมูลที่เข้ามาสู่ระบบโดยการประมวลผลแบบ Batch ในแต่ละวันจะมีเวลาเริ่มประมวลผล (Starting Time) ที่แน่นอน ในขณะที่การประมวลผลแบบ Real Time ต้องพร้อมสำหรับการประมวลผลเสมอ เพราะเวลาของการเข้ามาของข้อมูลไม่แน่นอน” 8

  9. ตัวอย่างการหา Object ใน Problem Domain 9

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

  11. Classification Abstraction • เป็นกระบวนการที่ใช้แยกประเภท (Classify) Object ต่าง ๆ ที่อยู่ใน Domain และให้ Concept กับ Object ต่าง ๆ เหล่านั้น เพื่อให้ได้ “Class พื้นฐาน” (Fundamental Classes) ที่ต้องการ • เป็นการตอบคำถามว่า Object ตัวใดตัวหนึ่งนั้นเป็นสมาชิกของกลุ่ม Object (Class) ใด - “Is Member of” • การทำ Classification Abstraction หรือการสร้าง Classจาก Object แสดงด้วยสัญลักษณ์ ลูกศรประที่ลากจาก Object ไปยัง Class 11

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

  13. Classification Abstraction รถจักรยานยนต์ซูซูกิ • Concept เกี่ยวกับรถ • มีเครื่องยนต์ • มีล้อจำนวนหนึ่ง • วิ่งไปบนถนนได้ • ใช้แก๊สหรือนำมันเป็นเชื่องเพลิง รถยนต์โตโยต้า รถยนต์ รถโดยสาร 6 ล้อ volvo เรืออันดามันปริ๊นเซส รถไฟ รถจักรยาน BMX

  14. Classification Abstraction คน Is member of สมชาย สมหญิง สมจิตร สมศักดิ์

  15. Classification ของ Class คน สมชาย สมหญิง สมจิตร และสมศักดิ์ ถือเป็น Object ในโดเมนหนึ่ง ซึ่งทั้ง 4 มีลักษณะเหมือนกันคือ มีหู มีตา มีปาก สามารถดำเนินกิจกรรมต่างๆ ได้เหมือนคนทั่วไป ดังนั้นทั้ง 4 ถือเป็น Object ใน Class คน 15

  16. Classification Abstraction รถ Is member of รถเก๋งของแดง รถมอเตอร์ไซต์ ของดำ รถสปอร์ต ของสมศรี รถตู้ของสมควร

  17. Classification ของคนและรถยนต์ ถ้า Problem Domain ประกอบด้วย Object ทั้งสิ้น 7 ตัว คือ สมชายสมหญิง สมจิตร สมศักดิ์ รถเก๋งสีแดงของสมชาย รถมอเตอร์ไซค์สีชมพูของสมหญิงและสมจิตร และรถตู้สีขาวของสมศักดิ์ หลังจากใช้ Classification Abstraction ในการแยกแยะ Object เหล่านี้ จะพบว่าไม่สามารถใช้ Concept เพียงหนึ่งเดียวในการแยกแยะทุกๆ Object ใน Problem Domain ได้ Concept ที่ใช้แยกประเภทของ Object ใน Problem Domain นี้คือ Concept ของรถยนต์ และ คน 17

  18. Classification Abstraction ในบางครั้ง Object หนึ่งสามารถ เป็นสมาชิกของ Class ได้มากกว่าหนึ่ง Class ได้เช่นกันดังตัวอย่างต่อไปนี้ แมว แมว หมา หมา สัตว์สี่ขา สัตว์สีดำ แมวสีดำ หมาสีขาว วัวสีดำ แมวสีขาว

  19. Classification Abstraction เราสามารถแก้ปัญหาความกำกวม โดยการปรับปรุง Classification ของหมาและแมว ใหม่จะได้ผลลัพธ์ ดังต่อไปนี้ แมว หมา สัตว์สี่ขามีเขา แมวสีดำ หมาสีขาว วัวสีดำ แมวสีขาว

  20. หมา แมว สัตว์สีขาว สัตว์สีดำ แมวสีดำ หมาสีดำ แมวสีขาว หมาสีขาว Classification ของ หมา แมว สัตว์สีขาวและสัตว์สีดำ

  21. Classification ของ หมา แมว สัตว์สีขาว และสัตว์สีดำ • จากรูป ถือว่าเป็นการทำ Classification ที่ค่อนข้างกำกวม เพราะ Object หนึ่งตัวสามารถจัดอยู่ใน Class มากกว่า 1 Class • การแก้ไขความกำกวมจากการสร้าง Class ที่ใช้ Concept หลายๆ Concept พร้อมๆ กัน คือ • เลือกว่าจะใช้ Concept ใดเพียง Concept เดียวในการแยกแยะ Object โดยจัดให้ Concept ที่เหลือเป็นเพียง Attribute ของ Class เท่านั้น 21

  22. หมา แมว หมาสีดำ หมาสีขาว แมวสีดำ แมวสีขาว การปรับปรุงการทำ Classification ของหมาและแมว

  23. ตัวอย่างการจำแนก Objects และ Class *** จากตัวอย่าง Problem Domain ต่อไปนี้ ให้นิสิตจำแนก Object และ Class ตัวอย่างที่ 1 “พยาบาล ชื่อ ปราณี ฉีดยาป้องกันโรคบาดทะยักให้แก่คนไข้ชื่อ กิตติ” ตัวอย่างที่ 2 “นายสมชายเตะฟุตบอล” ตัวอย่างที่ 3 “ระบบนิเวศในสวนจตุจักรประกอบด้วยสัตว์นานาชนิด เช่น แมลง กบ สุนัข แมว เป็นต้น” 23

  24. การพิจารณา Method ของคลาส การหา Method ของ Class คือ เป็น Object ที่ถูกกระทำ สำหรับ Method จะใช้คำกริยา (Verb) เป็นตัวระบุบ่งชี้

  25. คน ชื่อ นามสกุล เพศ อายุ บอกชื่อและนามสกุล บอกเพศ บอกอายุ สมชาย สมหญิง สมจิตร สมศักดิ์ Classification ของ Class คน(ใส่รายละเอียดของ Attribute กับ Method)

  26. Visibility ของ Attributes และ Method • เป็นการจำแนกประเภทของ Attributes และ Operation ตามความสามารถในการเห็นและการเข้าถึง • Public (+) • Private (-) • Protected (#)

  27. Public Attributes and Methods • คือ Attributes และ Method ที่สามารถมองเห็นได้และสามารถเรียกใช้ได้โดยตรงจากภายนอก • สามารถมองเห็นได้จากภายนอก เข้าไปเปลี่ยนค่า อ่านค่า หรือเรียกใช้งาน Attributes/Method ได้ • โดยทั่วไปจะใช้กับ Method มากกว่า Attributes • จะใช้เครื่องหมาย (+) กำกับไว้หน้า Public Attribute และ Public Method • เช่น สีผม สีผิว

  28. Private Attributes and Methods • คือ Attributes และ Method ที่ไม่สามารถเห็นได้เลยจากภายนอก Class • การเข้าถึง Attribute เหล่านี้ได้ต้องผ่านทาง Method ที่มีไว้เท่านั้น • โดยทั่วไปจะใช้กับ Attributes มากกว่า Method • จะใช้เครื่องหมาย (-) กำกับไว้หน้า Private Attribute และ Private Method • เช่น อายุของคน

  29. Protected Attributes and Methods • คือ Attributes และ Method ที่ไม่สามารถเห็นได้จากภายนอกแต่เป็นส่วนที่สามารถส่งต่อให้ Inherited Class ได้เท่านั้น • สงวนไว้สำหรับการทำงาน Inheritance (Specialization) โดยเฉพาะ • Attributes/Method ของ Superclass เมื่อ Inheritance แล้ว จะกลายไปเป็น Private หรือ Protected Attributes/Method ของ Subclass • จะใช้เครื่องหมาย (#) กำกับไว้หน้า Protected Attribute และ Protected Method • เช่น ลักษณะทางกรรมพันธุ์ที่ลูกสืบทอดมาจากพ่อแม่

  30. คน -ชื่อ #นามสกุล -เพศ -อายุ +บอกชื่อและนามสกุล +บอกเพศ +บอกอายุ สมชาย สมหญิง สมจิตร สมศักดิ์ Classification ของคน (ใส่รายละเอียด Visibility ของ Attributes และ Method)

  31. คน คน ชื่อ นามสกุล เพศ อายุ บอกชื่อและนามสกุล() บอกเพศ() บอกอายุ ( ) บอกชื่อและนามสกุล() บอกเพศ() บอกอายุ ( ) Outside View ของ Class คน Class คน Outside View ของ Class คน

  32. Aggregation Abstraction • คือ กระบวนการที่นำเอา Class พื้นฐานที่สร้างขึ้นจาก Classification Abstraction มารวมกันหรือประกอบกัน(Aggregation) เพื่อให้เกิด Class ที่ใหญ่ขึ้น หรือซับซ้อนขึ้น • การทำ Aggregation คือการตอบคำถามว่า ใน Class กลุ่มหนึ่งนั้น เราสามารถที่จะนำมันมารวมกันเพื่อทำให้เกิด Class ใหม่ ที่มี Concept ใหม่ ได้หรือไม่อย่างไร • เป็นการพยามยามตอบคำถามที่ว่า มี Class ใดเป็นส่วนประกอบของ Class อื่นหรือไม่ – “Is part of” • การแสดงสัญลักษณ์ทำได้โดยการโยงลูกศรเป็นสี่เหลี่ยมขนมเปียกปูนจาก Class ย่อย หรือ Class ที่เป็นส่วนประกอบไปยัง Class หลัก

  33. รถยนต์ Aggregation ตัวถังรถ เครื่องยนต์ ล้อ Aggregation หลังคารถ กระจก ประตู

  34. Aggregation ของห้องเรียน

  35. Cardinality, Required Components และ Optional Components • Cardinality คือสิ่งที่ใช้แสดงจำนวนในความสัมพันธ์ระหว่าง Class ใน Aggregation Abstraction • ในทาง Object Orientation มักจะเรียก Class ย่อยว่าเป็น Component • Required Component หรือ Mandatory Component คือส่วนประกอบที่จำเป็นต้องมี • Optional Components คือส่วนประกอบที่ไม่จำเป็นต้องมีก็ได้ 35

  36. Aggregation ของรถเก๋ง รถเก๋ง เครื่องยนต์ ล้อ ประตู ถุงลมนิรภัย Mandatory optional Mandatory Mandatory 36

  37. Aggregation ของ Class หนังสือ • ตามที่กำหนดใน Problem Domain มีดังนี้ • หนังสือ เกิดจากการรวมกันของหน้าปก คำนำ สารบัญ บทของเนื้อหา และบรรณานุกรม • บทของเนื้อหา เกิดจากการรวมกันของหน้าหนังสือ • หน้าหนังสือ เกิดจากการรวมกันของตัวหนังสือและรูปภาพ 37

  38. Aggregation Abstraction ของหนังสือ 38

  39. Aggregation Abstraction ของบทหนังสือ 39

  40. Aggregation Abstraction ของหน้าหนังสือ 40

  41. Aggregation Abstraction แบบหลายชั้นของหนังสือ 41

  42. Aggregation Abstraction แบบหลายชั้นของหนังสือ • จากรูปสามารถอธิบายได้ว่าหนังสือแบ่งออกเป็นส่วนของ • ปก มีเพียง 2 ปกคือ ปกหน้าและปกหลัง • คำนำ มีอย่างน้อย 1 คำนำ หรืออาจจะมากกว่านั้น • สารบัญ มีได้เพียงหนึ่งเดียวในหนังสือ 1 เล่ม • เนื้อหา ต้องมีอย่างน้อย 1 บทเสมอ • บรรณานุกรม ในหนังสือหนึ่งเล่มย่อมจะมีบรรณานุกรมเพียงหนึ่งเดียวเท่านั้น 42

  43. Aggregation Abstraction แบบหลายชั้นของหนังสือ(ใส่รายละเอียดของ Attributes และ Method) 43

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

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

  46. สัตว์ปีก คุณสมบัติ : มีปีก มีขา 2 ขา Specialization Specialization Generalization Generalization นก คุณสมบัติ : คุณสมบัติของสัตว์ปีก + บินได้ ไก่ คุณสมบัติ : คุณสมบัติสัตว์ปีก + ขันได้ Specialization Generalization ไก่ชน คุณสมบัติ :คุณสมบัติไก่ + ขันได้ + ชนไก่ได้

  47. Inheritanceกลไกที่เกิดจาก Generalization Abstraction • Inheritance หมายถึงการถ่ายคุณสมบัติจาก Superclass ไปยัง Subclass • Subclass คือ Class ที่เกิดจากการทำ Specialize • Superclass คือ Class เริ่มต้นในการทำ Specialize • สัญลักษณ์ที่ใช้ใน Object Orientation แทนการทำ Inheritance คือ ลูกศรซึ่งหัวลูกศรเป็นรูปสามเหลี่ยมใสชี้จาก Subclass ไปยัง Superclass 47

  48. สัญลักษณ์แสดงการทำ Inheritance 48

  49. Multiple Inheritance การ Inherit จาก Superclass ที่มากกว่า 1 Class เพื่อให้ได้ Subclass ที่มีคุณสมบัติพิเศษเพียงตัวเดียวหรือมากกว่า 49

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

More Related