360 likes | 856 Views
บทที่ 1 Object Orientation. อ.วิวัฒน์ ชินนาทศิริกุล. Object Orientation คืออะไร. เกิดจากคำ 2 คำ คือ 1. Object 2. Orientation Object แปลว่า วัตถุ ที่จับต้องได้และไม่สามารถจับต้องได้ (รูปธรรมกับนามธรรม) เช่น คน สุนัข รถยนต์ รายวิชา ภาควิชา เกรด
E N D
บทที่ 1 Object Orientation อ.วิวัฒน์ ชินนาทศิริกุล
Object Orientation คืออะไร • เกิดจากคำ 2คำ คือ 1. Object 2. Orientation • Objectแปลว่า วัตถุ ที่จับต้องได้และไม่สามารถจับต้องได้ (รูปธรรมกับนามธรรม) เช่น คน สุนัข รถยนต์ รายวิชา ภาควิชา เกรด • Orientationมาจากคำว่า Orientแปลว่านำทางหรือนำไป
Object Orientation คืออะไร (ต่อ) • Object Orientationหมายถึง การใช้ Object เป็นหลักในการพิจารณา ความเป็นจริงต่างๆที่เกิดขึ้น • สามารถนำหลักการของ Object Orientationมาใช้ในการวิเคราะห์และออกแบบระบบคอมพิวเตอร์ได้ ทำให้เกิดศาสตร์ใหม่ที่เรียกว่า ObjectOriented Analysis and Designหรือเรียกย่อๆว่า OOAD
Object, Relation และ Interaction • ในชีวิตประจำวัน จะพบวัตถุ(Object)ต่างๆ อยู่รอบๆตัวเรา เช่น คน รถยนต์ คอมพิวเตอร์ โต๊ะเรียน เก้าอี้ ซึ่งเป็นวัตถุที่สามารถจับต้องได้ หรือ รายวิชาเรียน เกรด ซึ่งเป็นวัตถุที่ไม่สามารถจับต้องได้ • Objectต่างๆ จะประกอบด้วยคุณลักษณะ หรือคุณสมบัติ (properties)และพฤติกรรม (behavior) หรือการกระทำ หรือกิจกรรม ที่วัตถุนั้นสามารถกระทำได้ เช่น คน มีคุณลักษณะดังนี้ มีผม มีแขน มีขา มีหู ตา จมูก ปาก คน มีพฤติกรรมดังนี้ คนพูดได้ กินได้ วิ่งได้ นอนได้
Object, Relation และ Interaction (ต่อ) • กิจกรรมต่างๆที่เกิดขึ้นรอบๆตัวเรา ล้วนแต่เกิดจากการมีความสัมพันธ์ (Relationship) และการมีปฏิสัมพันธ์ (Interaction)ระหว่าง Object2ตัวขึ้นไป เช่น คน รับประทาน อาหาร จากประโยคดังกล่าวนี้ Object ได้แก่ คน , อาหาร Interaction ได้แก่ รับประทาน Relation ได้แก่ เป็นเจ้าของ (คน เป็นเจ้าของ อาหารที่รับประทาน)
Object, Relation และ Interaction (ต่อ) • Relationshipคือ ความเกี่ยวข้อง หรือความสัมพันธ์ระหว่าง object 2ตัวขึ้นไป เช่น การเป็นเข้ามี การมี การสังกัด • Interactionคือ ปฏิสัมพันธ์ หรือการกระทำใดๆที่เกิดขึ้น ระหว่าง object2ตัวขึ้นไป เช่น การกิน การเล่น การสร้าง
Domain • Domainเป็นกรอบ หรือขอบเขต ของสิ่งที่เราให้ความสนใจ หรือพิจารณา • ใน Domainหนึ่งๆ สามารถมี object ได้ตั้งแต่ 2 ตัวขึ้นไป object ตัวเดียวสามารถอยู่ในหลายๆ Domainได้ ซึ่งขึ้นอยู่กับว่าเราจะกำหนด Domainที่สนใจอย่างไร
Object และ Class • Concept Objectที่อยู่ในโลกของความเป็นจริง (Real World Object) เราไม่สามารถนำ มาใส่ในคอมพิวเตอร์ได้ แต่สิ่งที่สามารถทำได้คือ การใส่แนวคิด (Concept) ให้กับ Object เพื่อนำไปใส่ไว้ในคอมพิวเตอร์ • Concept หมายถึง ความคิดรวบยอดที่มีให้กับ Object นั้นๆ ภายใต้กรอบที่กำหนด (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 (ต่อ) • Classต่างๆทั้หมดใน Domainที่เราสนใจ เป็นสิ่งที่อยู่ในความคิดของเรา ไม่สามารถดำเนินกิจกรรมอะไรได้ ถ้าเราต้องการให้เกิดกิจกรรมขึ้น เราจะต้องสร้าง Object ของ Classนั้นๆแล้วจึงใช้ Object ทำงานหรือดำเนินกิจกรรม • เมื่อเปรียบเทียบกับการพัฒนาโปรแกรมแบบเดิม Classจะคล้ายๆกับ ชนิดข้อมูล (Type) และ Object จะคล้ายๆกับ ตัวแปร
Abstraction และ Instantiation • Abstractionเป็นกระบวนการให้ Conceptกับ Objectจนเกิดเป็น Class • Instantiationเป็นกระบวนการของการทำให้เกิด Objectจาก Classที่เราสร้างขึ้น ตำราบางเล่มจะเรียก Object ว่า Instanceเพราะว่า Objectเกิดจากการกระบวนการ Instantiation
Attributes และ Function • Attributeเป็นคุณสมบัติของ วัตถุ โดยที่คุณสมบัติดังกล่าวนี้ต้องเป็นคุณสมบัติที่เราสนใจ หรืออยู่ใน Domainที่เราสนใจ • เช่น มีผลไม้ ประกอบด้วย มะม่วง มีรสเปรี้ยว สีเขียว เงาะ มีรสหวาน สีแดง ชมพู่ มีรถหวาน สีชมพู Objectในตัวอย่างนี้ ได้แก่ มะม่วง เงาะ ชมพู่ Classในตัวอย่างนี้คือ ผลไม้ Attributeในตัวอย่างนี้ ได้แก่ 1.รสชาด 2.สี
Function • Functionเป็นความสามารถในการทำกิจกรรมของ Objectที่มีไว้เพื่อให้ Objectอื่นใน Domainเรียกใช้หรือกระตุ้นได้ เช่น นายสมชาย เปิดเครื่องคอมพิวเตอร์ หมายเลข 001 Objectได้แก่ นายสมชาย และ เครื่องคอมพิวเตอร์ หมายเลข 001 Classได้แก่ คน และ คอมพิวเตอร์ Interactionได้แก่ การเปิด Functionได้แก่ ฟังก์ชันเปิดของคอมพิวเตอร์ 001
Function (ต่อ) • Object ในโลกของ Object Orientation เป็น Objects ที่ถูกกระทำ หรือเป็นอ็อบเจกต์ที่ให้อ็อบเจกต์อื่น มาเรียกใช้หรือกระตุ้น เพื่อให้เกิดการทำงานเสมอ
Class Name Attribute 1 Attribute 2 Attribute n Function 1 Function 2 Function n สัญลักษณ์ที่ใช้อธิบาย Class
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) เป็นขั้นตอนการออกแบบหรือ จำลองวิธีแก้ปัญหาในProblem Domain ซึ่งเป็นการหาคำตอบให้กับ คำถามที่ว่าHow to solve the problem?
Object-Oriented Software Engineering (ต่อ) 3.Object-Oriented Programming (OOP)เป็นขั้นตอนการสร้างหนทางแก้ปัญหาในรายละเอียดให้เกิดขึ้นและใช้งานได้จริง เป็นการตอบคำถามที่ว่า How to implement the solution?
Abstraction • เป็นกระบวนการในการให้ Concept กับ Object ต่างๆในโลกแห่งความเป็นจริง (Real World)เพื่อสร้าง Class นั้น ซึ่งแบ่งออกได้เป็น 4 กระบวนการคือ 1. Classification Abstraction 2. Aggregation Abstraction 3. Generalization Abstraction 4. Association Abstraction
Abstraction (ต่อ) • ในการใช้ Abstractionเพื่อวิเคราะห์ Domain Problemไม่ได้มีข้อกำหนดตายตัว ว่าจะต้องใช้กระบวนการย่อยของ Abstraction ทุกตัว หรือใช้ตามลำดับก่อนหลัง แต่ส่วนใหญ่ Abstraction แรกที่ถูกใช้คือ Classificationหลังจากนั้นจะขึ้นอยู่กับมุมมองของผู้วิเคราะห์ว่าจะใช้ Abstractionตัวใดที่เหมาะสมมาวิเคราะห์ Domain Problem อีก
Classification Abstraction • เป็นกระบวนการที่ใช้แยกประเภทของ Object ต่างๆที่อยู่ใน Domainและให้ Conceptกับ Objectต่างๆ เพื่อให้ได้ Classพื้นฐานที่ต้องการ • ถือว่า Classificationเป็น Abstractionที่สำคัญที่สุดเพราะ Classเกิดขึ้นด้วย Classification Abstraction
Classification Abstraction (ต่อ) • ตัวอย่าง ถ้าใน Problem Domainมีสิ่งที่ต้องพิจารณา ได้แก่ 1.รถยนต์นั่งโตโยต้า 2.รถจักรยานยนต์ยามาฮ่า 3.รถโดยสาร 6ล้ออีซูซุ 4.จักรยานBMX 5.เรือข้ามฟาก • พบว่า Conceptที่เหมือนกันของ 1.รถยนต์นั่งโตโยต้า 2.รถจักรยานยนต์ยามาฮ่า 3.รถโดยสาร 6ล้ออีซูซุ คือ มีเครื่องยนต์ มีล้อจำนวนหนึ่ง วิ่งไปบนถนนได้ ใช้น้ำมันหรือแก๊สเป็นเชื้อเพลิง ดังนั้นสามารถให้ Conceptของ 1,2,3ว่าเป็นคลาสรถยนต์
รูปแสดง Classificationของรถยนต์
Aggregation Abstraction • เป็นกระบวนการที่นำเอา Classพื้นฐาน มารวมกันหรือประกอบกัน (Aggregate) เพื่อเกิดเป็น Classที่ใหญ่ขึ้น หรือซับซ้อนขึ้น โดยที่ Class พื้นฐานสร้างมาจากขั้นตอน Classification • การทำ Aggregation เป็นการตอบคำถามว่า ในClassกลุ่มหนึ่งนั้น สามารถนำมารวมเพื่อให้เกิด Class ใหม่ ที่มี Conceptใหม่ได้หรือไม่อย่างไร หรือในทางกลับกัน มี Class ใดบ้างที่สามารถแบ่งย่อย ออกเป็นส่วนประกอบต่างๆซึ่งมี Concept ต่างไปจากเดิมได้
ตัวอย่าง รถยนต์แต่ละคันประกอบด้วย ตัวถัง ล้อ เครื่องยนต์ ในส่วนของตังถังประกอบด้วย โครงรถ ประตู กระจก จาก Domainดังกล่าวสามารถแสดงความสัมพันธ์แบบ Aggregationได้ดังรูป
Generalization Abstraction • เป็นกระบวนการในการนำ Class ที่มีลักษณะเหมือนกันหรือคล้ายกัน หรือมีลักษณะอย่างใดอย่างหนึ่งร่วมกัน มาจัดหมวดหมู่ ไว้เป็น Class เดียวกัน กระบวนการย้อนกลับของ GeneralizationAbstractionเรียกว่า 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วิเคราะห์และออกแบบเชิงวัตถุ. กรุงเทพฯ:เคทีพี คอมพ์ แอนด์ คอนซัลท์ จำกัด