1 / 25

Chapter 1 แนะนำ Object Orientation

Chapter 1 แนะนำ Object Orientation. จุดประสงค์ 1. เพื่อให้นักศึกษาได้ทำความเข้าใจกับแนวคิดของ Object Orientation (OO) 2. เพื่อให้นักศึกษาเข้าใจหลักการการพัฒนาระบบงานด้วย Object-Oriented Software Engineering (OOSE)

mya
Download Presentation

Chapter 1 แนะนำ Object Orientation

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 1 แนะนำ Object Orientation

  2. จุดประสงค์ 1. เพื่อให้นักศึกษาได้ทำความเข้าใจกับแนวคิดของ Object Orientation (OO) 2. เพื่อให้นักศึกษาเข้าใจหลักการการพัฒนาระบบงานด้วย Object-Oriented Software Engineering (OOSE) 3. เพื่อให้นักศึกษาได้รู้จักและทำความเข้าใจศัพท์พื้นฐานที่ต้องใช้ในบทอื่นๆ เช่น Problem Domain, Object, Class, Abstraction, OOA, OOD, OOP เป็นต้น

  3. 1.1 Object Orientation คืออะไร ในชีวิตประจำวัน เมื่อมองดูรอบๆ ตัวจะพบเห็นวัตถุ(Object) ต่างๆ มากมาย ไม่ว่าจะเป็นวัตถุที่สามารถมองเห็นได้และจับต้องได้ (Tangible Objects) เช่น โต๊ะ รถยนต์ คอมพิวเตอร์ หรือแม้แต่ตัวของเราเองเป็นต้น และวัตถุที่มีอยู่จริงแต่ไม่สามารถจับต้องได้ (Intangible Objects) ตัวอย่างเช่น กฎหมาย (กฎข้อบังคับที่รัฐบัญญัติขึ้น) เวลา หรือความรู้ต่างๆ เป็นต้น ในโลกของเรามี Objects ต่างๆ มากมาย สิ่งที่เกิดขึ้นจาก Objects ต่างๆ ก็คือ กิจกรรม (Activities) ความเคลื่อนไหว (Movement) หรือการกระทำ (Actions) เช่น คนรับประทานอาหาร สุนัขเล่นกับแมว เป็นต้น

  4. ถ้าพิจารณาโดยละเอียดแล้วจะพบว่ากิจกรรมต่างๆ ที่เกิดขึ้นในชีวิตประจำวันนั้นเกิดจากการมีความสัมพันธ์ (Relationship) และการมีปฏิสัมพันธ์ (Interaction) ระหว่าง Object 2 ตัวขึ้นไป ตัวอย่างเช่น กิจกรรมคนรับประทานอาหาร เกิดจาก Interaction “รับประทานอาหาร” ระหว่างคนและอาหาร และเกิดจาก Relationship “เป็นเจ้าของ” ระหว่างคนและอาหาร (เพราะคนเป็นเจ้าของข้าว จึงจะสามารถรับประทานได้) กิจกรรมสุนัขเล่นกับแมว เกิดจาก Interaction “เล่น” ระหว่างสุนัขและแมว และเกิดจาก Relationship “เป็นเพื่อน” ระหว่างสุนัขกับแมว

  5. เพื่อความเข้าใจในเรื่องของ Relationship และ Interaction จากตัวอย่างต่อไปนี้ ตัวอย่าง “นาย ก เปิดตู้เย็นยี่ห้อ A (ซึ่งเป็นตู้เย็นของนาย ก) หยิบน้ำ (ซึ่งอยู่ในตู้เย็น) มาดื่ม” สามารถแยกแยะหา Object, Relationship และ Interactions ได้ดังนี้ Objects - นาย ก, ตู้เย็นยี่ห้อ A, และน้ำ Relationships – เกิดจากความสัมพันธ์ - นาย ก เป็นเจ้าของตู้เย็นยี่ห้อ A - น้ำอยู่ในตู้เย็นยี่ห้อ A Interactions ระหว่าง Objects ที่สนใจ ได้แก่ - นาย ก เปิดตู้เย็นยี่ห้อ A - นาย ก หยิบน้ำ - นาย ก ดื่มน้ำ

  6. เมื่อพิจารณาจากตัวอย่าง อาจจะเกิดคำถามว่าจะสามารถแยกแยะความแตกต่างระหว่าง Relationship กับ Interaction ได้อย่างไรเพื่อตอบคำถามนี้ สามารถสรุปเป็นหลักการในการแยกแยะ Relationship และ Interaction ได้ดังนี้ Relationship คือ ความเกี่ยวข้องกัน หรือความสัมพันธ์ระหว่าง Objects 2 ตัว ขึ้นไป เช่น ความเป็นแม่-ลูก ความเป็นเจ้าของการมีอยู่ เป็นต้น Interaction คือ ปฏิสัมพันธ์ หรือการกระทำใดๆ ที่เกิดขึ้นระหว่าง Objects 2 ตัว ขึ้นไป เช่น การสร้าง การเปลี่ยนแปลง การเล่น การกระตุ้น เป็นต้น ซึ่ง Interaction นี้เองที่ทำให้เกิด กิจกรรม (Activities)ต่างๆ ใน โลกนี้

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

  8. เราสามารถจำลองสภาพความเป็นจริง หรือสถานการณ์ต่างๆ ในโลกของความเป็นจริง (Real World) ได้ด้วย Objects รวมทั้ง Relationships และ Interactions ระหว่าง Objects ซึ่งอยู่ภายใน Domain เดียวกัน ใน Domain หนึ่งๆ นั้นสามารถมี Objects ได้ตั้งแต่ 2 ตัวขึ้นไป จนถึงจำนวนนับไม่ถ้วน ในขณะเดียวกัน Object ตัวเดียวกันก็สามารถอยู่ในหลายๆ Domains ได้เช่นเดียวกัน ซึ่งนั่นขึ้นอยู่กับว่าเราจะกำหนด Domain ที่เราสนใจ (Domain of interest) อย่างไรนั่นเอง แนวคิดของ Object Orientation นั้นมาจากคำว่า Object ซึ่งแปลว่า วัตถุที่จับต้องได้และจับต้องไม่ได้ และ Orientation ซึ่งมาจากคำว่า Orient ซึ่งเป็นคำกริยาที่แปลว่านำทาง หรือนำไป ซึ่งเมื่อนำมารวมกันจะหมายถึง การใช้ Object เป็นตัวหลักเพื่อการพิจารณาความเป็นจริงต่างๆ ที่เกิดขึ้นในโลก

  9. เราสามารถนำเอาObject Orientation มาใช้เป็นแนวคิดและเป็นบรรทัดฐานในการวิเคราะห์ และออกแบบระบบคอมพิวเตอร์ได้ ซึ่งการประยุกต์ใช้ Object Orientation เพื่อการวิเคราะห์และออกแบบระบบคอมพิวเตอร์ ทำให้เกิดศาสตร์ตัวใหม่ขึ้นเรียกว่า Object Oriented Analysis and Design หรือเรียกย่อๆ ว่า OOAD (การวิเคราะห์และออกแบบเชิงวัตถุ)

  10. 1.2 Objects และ Classes (ที่มาของ Object Orientation) Concept หมายถึง ความคิดรวบยอดที่เรามีให้กับวัตถุนั้นๆ ภายใต้กรอบที่กำหนด (Domain) ตัวอย่างเช่น Concept กับรถยนต์ นั่นคือ รถทุกคันมีตัวถัง มีล้อ และเครื่องยนต์เหมือนกันทุกคัน Concept กับคน นั่นคือคนทุกคน (คนโดยปกติ) มี 2 แขน 2 ขา 1 ศีรษะ และมีภาษาพูด

  11. ถ้าเราต้องการที่จะจำลอง (Model) สิ่งต่างๆ ให้อยู่ในเครื่องคอมพิวเตอร์จะทำได้อย่างไร สิ่งที่ต้องทำก็คือเราต้องทำให้เกิด Objects ขึ้นในเครื่องคอมพิวเตอร์ ในขณะเดียวกันก็ต้องสร้าง Relationships และ Interactions ระหว่าง Objects ประเภทต่างๆ ให้เกิดขึ้นในเครื่องคอมพิวเตอร์ด้วย ซึ่งในโลกของ Objects ในคอมพิวเตอร์นั้นย่อมไม่มีทางที่เหมือนกันได้ และด้วยเหตุที่ว่าเราไม่สามารถนำเอา Real-World Objects เข้ามาใส่ในคอมพิวเตอร์ได้ สิ่งที่ต้องทำก็คือ การใส่ “แนวคิด” (Concept) ให้แก่ Objects เพื่อนำไปใส่ไว้ในคอมพิวเตอร์

  12. Class หรือ Abstract Object ผลจากการให้Concept กับ Objects นั้นทำให้เกิดการจัดกลุ่มของ Objects ขึ้น ซึ่งกลุ่มของ Objects ที่ได้จากกระบวนการนี้เรียกว่า Abstract Objects หรือเรียกอีกหนึ่งว่า Class ตัวอย่างเช่น รถยนต์ฮอนด้า รถยนต์โตโยต้า และรถยนต์มาสด้า ต่างก็มี 4 ล้อ มีเครื่องยนต์ และใช้น้ำมันเป็นเชื้อเพลิงเหมือนๆ กัน ซึ่งสามารถจัดให้รถทั้งสามนี้อยู่ในคลาส “รถยนต์” แต่เราไม่สามารถจัดเอารถเข็น และรถมอเตอร์ไซค์เข้าไว้ในคลาสรถยนต์ได้ เพราะรถเข็นไม่ได้ใช้น้ำมันเป็นเชื้อเพลิง ในขณะที่รถมอเตอร์ไซค์ไม่ได้มี 4 ล้อ ซึ่งConcept ที่กล่าวมาของรถทั้งสองนั้นไม่ตรงกับ Concept ของคลาส รถยนต์ *** ความจริงข้อหนึ่งของObject Orientation คือ “Class ถือเป็นนามธรรม (Abstract) เราไม่สามารถทำให้ Class ดำเนินกิจกรรมใดๆ ได้เลย”

  13. ตัวอย่าง ถ้าพูดว่า รถวิ่งไปบนถนน ในโลกของ Object Orientation นั้น ถือว่าไม่ได้เป็นเหตุการณ์ที่เกิดขึ้นจริงๆ เพราะคำว่า “รถ” จะหมายถึง “แนวความคิด ของการรวมเอาตัวถังรถ ล้อ และเครื่องยนต์มารวมกัน” และ “ถนน” ก็จะหมายถึง “แนวความคิด ของสิ่งหนึ่งซึ่งอยู่บนพื้นโลก ที่ทำไว้เพื่อให้ยานพาหนะทางบกวิ่งไปได้ ” แต่ถ้าพูดว่า รถยนต์ของนาย ก วิ่งไปบนถนนมิตรภาพ นั่นหมายถึงรถของนาย ก ซึ่งมีอยู่จริงในโลก (และสามารถจับต้องได้) และเป็น Object ของ Class “รถยนต์” วิ่งไปบนถนนมิตรภาพ ซึ่งเป็น Object ของ Class “ถนน” เมื่อพูดว่า “สมชาย แต่งงานกับ สมหญิง” จะหมายถึง สมชายเป็น Object ของ Class ผู้ชายแต่งงานกับ สมหญิง ที่เป็น Object ของ Class ผู้หญิง

  14. เมื่อเราพูดว่า “หนังสือObject Orientationถูกซื้อโดยนาย ก” จะหมายถึง นาย ก เป็น Object ของ Class คนซื้อ และหนังสือ Object Orientation เป็น Object ของ Class หนังสือ จากตัวอย่างที่ผ่านมา จะเห็นว่า Class ต่างๆ ทั้งหมดใน Domain ที่เราสนใจ คือสิ่งที่อยู่ในความคิดของเราซึ่งไม่สามารถทำกิจกรรมใดๆ ให้เกิดขึ้นจริงได้ แต่ถ้าเราต้องการให้เกิดกิจกรรมขึ้นในระบบคอมพิวเตอร์ของเรา เราต้องสร้าง Object ของ Classต่างๆ ขึ้นในคอมพิวเตอร์ของเราเสียก่อน เพื่อให้ Object นั้นๆ สามารถทำงานและดำเนินบทบาทของมันเองได้ ซึ่งหากเราจะเทีบยกับแนวทางการพัฒนาโปรแกรมแบบเดิม (Traditional System Analysis and Design) แล้ว Class จะคล้ายคลึง (แต่ไม่เหมือน) กับชนิดของตัวแปร และ Object จะคล้ายคลึง (แต่ไม่เหมือน) กับตัวแปร

  15. Abstraction & Instantiation เราเรียกกระบวนการในการให้ Concept กับ Object จนเกิดเป็น Class ว่า Abstraction และเรียกกระบวนการของการทำให้เกิด Object จาก Class ที่เราสร้างขึ้นว่า Instantiation ซึ่งบางครั้ง มีหนังสือบางเล่มจะเรียก Object ที่เกิดขึ้นในคอมพิวเตอร์ว่า Instance เพราะเป็น Objects ที่เกิดจากกระบวนการ Instantiation Class – เปรียบเสมือนแม่พิมพ์ Template ที่ใช้เพื่อสร้าง Objects หรือ Instance Objects หรือ Instance – คือสิ่งที่เกิดขึ้นจากการสร้าง โดย Class จะเป็น ผู้ทำกิจกรรมต่างๆ ในระบบคอมพิวเตอร์

  16. 1.3 Attributes และ Functions Attribute เป็นคุณสมบัติของ Object ต่างๆ โดยที่คุณสมบัติดังกล่าวนี้เป็นคุณสมบัติ ที่เราสนใจหรืออยู่ใน Domain ที่เราสนใจ เช่น สีและจำนวนประตูของรถคัน หนึ่ง หรืออาจจะเป็น สีผิวและเพศของคน ๆ หนึ่ง เป็นต้น คุณสมบัตินี้ เรียกว่า Attributes ตัวอย่าง ผลไม้ที่มีอยู่ประกอบด้วย มะม่วง ซึ่งมีรสมัน ลูกมีสีเขียว แอปเปิลซึ่งมีรสหวานและมีสีแดง และมะนาวซึ่งมีสีเหลืองอ่อนและมีรสเปรี้ยว คำถาม - Class คืออะไร - Objects คืออะไร - Attributes คืออะไร

  17. ผลที่ได้ ซึ่งเมื่อนำคุณสมบัตินี้มาพิจารณาเราสามารถสรุปได้ว่า ใน Class ผลไม้ Attributes ที่เราสนใจได้แก่ รสชาด และสี Attribute หมายถึง คุณสมบัติต่างๆ ที่ใช้บรรยาย Object โดยคุณสมบัติเหล่านี้ จะอยู่ภายใน Domain ที่เราสนใจ

  18. Function ในทาง Object Orientation นั้น Objects เป็นได้มากกว่าสิ่งที่มี Attributes เพราะ Objects สามารถทำให้เกิดกิจกรรมต่างๆ ได้ ซึ่งเราเรียกว่า Function ตัวอย่าง “นาย ก เปิดเครื่องคอมพิวเตอร์ยี่ห้อ A” คำถาม - มี Class อะไรบ้าง - มี Objects อะไรบ้าง - มี Interaction อะไรบ้าง

  19. เปิด นาย ก คอมพิวเตอร์ A รูป นาย ก เปิดเครื่องคอมพิวเตอร์ A เราสามารถหา Objectsได้ 2 ตัว คือ นาย ก และ คอมพิวเตอร์ยี่ห้อ A และหา Classได้ 2 Class คือ คน (นาย ก เป็นคน) และคอมพิวเตอร์ (คอมพิวเตอร์ยี่ห้อ A เป็นคอมพิวเตอร์)

  20. เมื่อวิเคราะห์จะพบว่า Interaction ที่เกิดขึ้นก็คือ นาย ก เปิดเครื่องคอมพิวเตอร์ A นั่นหมายความว่า จะต้องมี Object ตัวใดตัวหนึ่งใน 2 ตัวนี้ที่สามารถทำให้กิจกรรม “เปิด” เกิดขึ้นได้ คำถามคือ ผู้ที่ทำให้กิจกรรมนี้เกิดขึ้นคือ Object ตัวใด ทำความเข้าใจว่า “Objects ในโลกของ Object Orientation นั้นเป็น Objects ที่ถูกกระทำ (Passive Objects)” ซึ่งจากตัวอย่างนี้ เมื่อต้องการให้เครื่องคอมพิวเตอร์ A เปิด ต้องมีใครสักคน หรืออะไรสักอย่างหนึ่งมาสั่งให้เครื่องคอมพิวเตอร์เปิด (เครื่องคอมพิวเตอร์ A เปิดด้วยตัวเองไม่ได้) นั่นหมายความว่าเครื่องคอมพิวเตอร์ A ต้องมีความสามารถในการเปิด หรือมี Function เปิดอยู่ในตัวเอง แล้ว นาย ก เป็นผู้มากระตุ้น (Trigger) ให้เครื่องคอมพิวเตอร์ A เกิดการ “เปิด” ขึ้น หรือ Function เปิดถูกเรียกใช้งาน ดังรูป

  21. เปิด เปิด นาย ก คอมพิวเตอร์A รูป นาย ก เปิดเครื่องคอมพิวเตอร์A (ตามแนวคิดของ Object Orientation) Function หมายถึง ความสามารถในการทำกิจกรรมของ Object ที่มีไว้เพื่อให้ Object อื่นๆ ใน Domain สามารถเรียกใช้ หรือกระตุ้นให้เกิดได้

  22. เพื่อความเป็นมาตรฐานเดียวกัน จึงมีผู้คิดค้นสัญลักษณ์เพื่อการอธิบาย Class ดังรูปต่อไปนี้

  23. 1.4 Object-Oriented Software Engineering (OOSE) ได้เรียนรู้แนวความคิดโดยรวมของ Object Orientation ไปแล้ว ซึ่งสามารถนำเอาความคิดนี้ มาใช้กับการวิเคราะห์และออกแบบระบบคอมพิวเตอร์ได้ ซึ่งเราเรียกว่า Object Oriented Analysis and Design (OOAD) แต่การพัฒนาระบบคอมพิวเตอร์นั้นกินความถึงการวิเคราะห์ ออกแบบ การพัฒนาโปรแกรม และการนำไปใช้ เราจะเรียกการพัฒนาระบบคอมพิวเตอร์ด้วยหลักการ Object Orientation ว่า Object-Oriented Software Engineering (OOSE)

  24. OOSE ประกอบด้วย 3 ขั้นตอน คือ 1. Object-Oriented Analysis (OOA) เป็นขั้นตอนการวิเคราะห์ เพื่อให้ทราบว่า Problem Domain คืออะไร และเพื่อทำความเข้าใจในรายละเอียดของปัญหาเหล่านั้น เป็นการหาคำตอบให้กับคำถามที่ว่า “What is the Problem to be Solved?” 2. Object-Oriented Design (OOD) เป็นขั้นตอนการออกแบบหรือจำลอง (Model) วิธีการเพื่อแก้ปัญหาใน Problem Domain ซึ่งเป็นการหาคำตอบให้กับคำถามที่ว่า “How to Solve the Problem?” 3. Object-Oriented Implementation หรือ Object-Oriented Programming (OOP) เป็นขั้นตอนการสร้างหนทางแก้ปัญหาในรายละเอียดให้เกิดขึ้นและใช้งานได้จริง เป็นการตอบคำถามที่ว่า “How to Implement the Solution?”

  25. คำถามท้ายบท 1. จงอธิบายความแตกต่างระหว่าง Class กับ Data Type และระหว่าง Object กับ Variable 2. จากสถานการณ์ต่อไปนี้ จงแยกแยะว่ามี Objects อะไรบ้าง และ Functions ที่ Object แต่ละตัวต้องมีคืออะไร - “นาย ง อ่านหนังสือการ์ตูนขายหัวเราะ” - “นาย ป ชวนนางสาว ข เต้นรำ” - “นาย ช ถอนเงินจากตู้ ATM ธนาคารทหารไทย” - “นาย ต เติมน้ำมันให้กับรถยนต์ยี่ห้อ Nissan”

More Related