INT 438 Introduction to Object-Oriented Technology ประจำ

Object Technology WELCOME S.Thawatchai Mobile Phone: 089-1669245 e-mail: watchai@watchai.com URL: http://www.watchai.com/cmm271 1 Course Outline • Overview of Object-Oriented Technology Basic Concepts of Object-Orientation Object-Oriented Software Development 2 CIT783 Object Technology Overview Of Object-Oriented Technology 3 Overview of Object-Oriented Technology • Basic Concepts of Object-Orientation Object-Oriented Software Development •     The Software Crisis Object-Oriented approach , Object-Oriented Techniques Principle of Object Orientation Key Benefits of Object-Oriented Software Development 4 BUSINESS REASONS MIS CHALLENGES „ „ „ „ „ „ VOLATILE REQUIREMENTS INCREASING COMPLEXITY DRASTIC COST REDUCTION SKILLS STORAGE REPID SYSTEM DELIVERY APPLICATION BACKLOG INFORMATION TECHNICAL DRIVERS „ REPAID TECHNOLOGY CHANGE „ USER DEMANDS „ GRAPHICAL USER INTERFACE „ MULTIMEDIA „ OPEN SYSTEM „ CLIENT / SERVER COMPUTING „ CUSTOMER FOCUS „ „ „ „ „ PROFITABILITY MARKET FRAGMENTATION GLOBAL COMPETITION QUICKER TIME TO MARKET FLATTEN ORGANIZATION WORK GROUPS PARADIGM SHIFT The Software Crisis ดูสรุป slide ต่อไป THE LURE OF THE “SILVER BULLETS” „ BETTER PROGRAMMING LANGUAGE „ BETTER PROGRAMMER „ CASE TOOLS „ SOFTWARE REUSE „ OBJECT-ORIENTED TECHNOLOGY 5 Paradigm Shift „ 1970 ระบบคอมพิวเตอร์วิ่งงานเป็นชุด (Batch) วิ่งงานแบบ Online ได้ แต่เป็นแบบ Time sharing โดย CPU แบ่งเสี้ยวเวลาให้แต่ละงาน „ 1970-1980 การออกแบบอิง DFD เริ่มมีการใช้ฐานข้อมูลเชิงสัมพันธ์ เริ่มใช้เทคนิค ERD ช่วง 1980 มี PC เกิดขึ้นในโลก „ 1990 เกิดสถาปัตยกรรม Client-Server แทน Host-Based 6 Paradigm Shift „ 1970-1990 มีการแทรกซึมของแนวคิด OO Programming และเกิดเทคนิคการ ออกแบบซอฟต์แวร์แบบ Object นับร้อยแบบ „ ต้น 1990 เกิดการรวมตัวของเทคนิค OO ใน 3 แบบกลายเป็นภาษาออกแบบชื่อ UML (Unified Modeling Language) และเกิดการบูมของอินเตอร์เน็ต „ ต้นศตวรรษที่ 21 ถูกขับเคลื่อนด้วย Paradigm shift 2 แรงคือ การออกแบบซอฟต์แวร์ แบบ Object โดยใช้ภาษา UML และการการสร้างซอฟต์แวร์ให้ใช้กับ Internet 7 Software Crisis • Software มีการเปลี่ยนแปลง (Change) ตลอดเวลา  ระบบ Software เดิม (Legacy Software) ไม่สามารถปฏิบัติงานร่วมกันกับ เทคโนโลยีแบบใหม่ได้ (Interoperability)  ยากแก่การขยายขอบเขตของระบบ Software เดิม (Extendability)  ไม่สามารถนา Software ที่มีอยู่เดิมมาใช้ใหม่ได้ (Reusuability) • มักพัฒนา Software จากเริ่มต้น ไม่ได้พัฒนาจากของเดิม ที่มีอยู่ 8 Software Crisis • การพัฒนา Hardware เร็วมาก  ขนาด (Size) ของซอฟแวร์ ใหญ่ขึ้น และเพิ่มความซับซ้อน (Complexibility) มากขึ้น • แต่การพัฒนา Software ช้า และมี bug  ค่าใช้จ่าย (Cost) ในการพัฒนา และบารุงรักษาสูง (Maintainability)  ใช้เวลาในการพัฒนา (Time to Market) นาน หรือ ได้ ซอฟต์แวร์คุณภาพด้อยที่ไม่ตรงกับความต้องการของผูใช้ ้ • ช่องว่างระหว่าง Users และ Programmers 9 Traditional versus OO Ball Paddle Simple video game 10 Traditional Approach (Structured Design) Functional decomposition Video Game Set Initial Game Display Play a Single Game Initialize Paddle Play a Ball Draw Wall Draw Sides Check Update Move Score Ball & Ball Position Display Move Paddle 11 An Object-Oriented Approach Video Game Paddle Ball Wall Brick Object-Oriented decomposition 12 ข้อเสียของ Structured approach „ โครงสร้างงานคือโครงสร้าง SW ทาให้การแก้ไขกรรมวิธงานกระทบกับ SW ี „ ข้อมูลถูกแยกจากกระบวนงาน การธารงรักษาข้อมูลให้ถูกต้องทาได้ลาบาก „ การปรับปรุงส่วนใดส่วนหนึงกระทบกับส่วนอื่นที่สัมพันธ์กัน ่ „ การนาซอฟต์แวร์บางส่วนกลับมาใช้ใหม่ทาได้ยาก „ การมองระบบเป็นงาน และข้อมูลแยกจากกัน ไม่สอดคล้องกับโลกทัศน์แห่ง ความจริง „ การกระจายการประมวลผลทาได้ยาก 13 จุดแข็งของ Object-Oriented approach • การนาบางส่วนของ SW (code และ architecture )มาใช้ใหม่ ทาได้ง่าย • การโมเดลระบบ SW ทาได้ตรงกับโลกทัศน์ของความเป็น จริง – Easier to understand and maintain 14 จุดแข็งของ Object-Oriented approach • SW มีความมั่นคง (Stability) – A small change in requirements does not mean massive changes in the system under development • รองรับกับการเปลี่ยนแปลง (Adaptive to change) • Object technology เป็น single paradigm – A single language used by users, analysts, designers, and implementers 15 ตัวอย่าง แนวคิดเชิงวัตถุ กับแนวคิดการพัฒนาโปรแกรมแบบโครงสร้าง ให้พิจารณาตัวอย่างต่อไปนี้ • เพื่อแสดงให้เห็นถึงความแตกต่างและ ประโยชน์ของการใช้ แนวคิดเชิงวัตถุ แก้ปัญหาโจทย์โดยใช้และพัฒนา โปรแกรมแบบเชิงวัตถุให้ชัดเจนขึ้น 16 แนวคิดเชิงวัตถุ (Object) vs แนวคิดเก่า เป็นแนวคิดรูปแบบใหม่ที่ นามาใช้กันในปัจจุบัน • เพื่อแก้ปัญหาการเขียน โปรแกรมแบบ Structure • ถึงแม้รูปแบบการเขียน จะค่อนข้างยากและมี ความซับซ้อน แต่จะ ส่งผลดีต่อการแก้ไข โปรแกรมในระยะยาว 17 ตัวอย่าง การใช้แนวคิดเชิงวัตถุกับการโปรแกรมแบบเก่า Structure (มองในเชิงโปรแกรมเพื่อให้ง่ายในการทาความเข้าใจ) ระหว่างนักศึกษา 2 คน ที่ทางานตามมอบหมายดังโจทย์ต่อไปนี้ นายอินทรี โจทย์ อาจารย์มอบงานพัฒนาโปรแกรมดังนี้ ให้เขียนโปรแกรมที่สามารถวาดรูป สามเหลี่ยม สี่เหลี่ยม และวงกลม เมื่อเรานา เมาส์ไปกดที่รปเหล่านั้น รูปเหล่านั้นจะ ู หมุนตามเข็มนาฬิกา 30 องศา โดยมีจุด หมุนคือจุดศูนย์กลางของรูปเหล่านั้น นายชวา 18 นายอินทรี นายชวา สร้างคลาสขึนมาสามคลาส แต่ละคลาสใช้ ้ อธิบายรูปต่างๆและวิธีการหมุน โปรแกรมบางส่วนถูกตัดออกไปเพือให้งายต่อการอธิบาย ่ ่ นายอินทรี ทาการบ้านโดยใช้ภาษา C ที่เขาเคยเรียนตอนเรียนปีหนึ่ง นายอินทรีเขียนโปรแกรมที่ใช้หมุนรูปต่างๆ ขึ้นมาอย่างรวดเร็ว rotote( int shape ) { /* rotate all points of the shape by 30 degrees the rotation center is the center of the shape */ } public class Triangle { public Rotate() { // rotate 3 points of // the triangle by 30 degree // the rotatation center is // the center of the triangle} } นายชวา public class Circle { public Rotate() { // rotate circle by 30 degree // in fact, we don't have to // don't do anything because // the circle will look the same // after rotate }} ในขณะที่นายชวา เลือกใช้ภาษา Java ที่กาลังเรียน อยู่เพื่อแก้ปัญหา public class Rectangle { public Rotate() { // rotate 4 points of // the rectangle by 30 degree // the rotatation center is // the center of the rectangle } } 19 ก่อนถึงวันส่งการบ้านห้าวัน นิสิตทั้งสองนาโปรแกรมมาเทียบกันเพื่อความมั่นใจ นาย อินทรีหัวเราะ Ha ha เมื่อเห็นโปรแกรมที่ต้องเขียนมากมายหลายบรรทัดของนายชวา นายอินทรีบอกว่าคาตอบที่ถูกและสั้นกว่าย่อมเป็นคาตอบที่สวยกว่า นายชวาก็เห็นด้วย Ha ha คาตอบที่ถูกและ สั้นกว่าย่อมเป็น คาตอบทีสวย ่ กว่า นายชวาก็ เห็นด้วย public class Triangle { public Rotate() { // rotate 3 points of // the triangle by 30 degree // the rotatation center is // the center of the triangle} } นายชวา นายอินทรี rotote( int shape ) { /* rotate all points of the shape by 30 degrees the rotation center is the center of the shape */ } public class Circle { public Rotate() { // rotate circle by 30 degree // in fact, we don't have to // don't do anything because // the circle will look the same // after rotate }} public class Rectangle { public Rotate() { // rotate 4 points of // the rectangle by 30 degree // the rotatation center is 20 // the center of the rectangle } } • ส่วนหนึ่งของ โปรแกรมของนาย อินทรี rotote( int shape ) { /* rotate all points of the shape by 30 degrees the rotation center is the center of the shape */ นายชวาจึงกลับไปหาวิธีที่ทาให้โปรแกรมของเขา สั้นลง เขาสังเกตว่าสามเหลี่ยม วงกลม และสี่เหลี่ยม ต่าง ก็เป็นรูป (Shape) และ method ที่ใช้หมุนภาพ นั้นมันเขียนเหมือนกัน เขาจึงสร้างคลาสใหม่ชื่อว่า Shape ที่มี method การหมุนจุดทุกจุดโดยใช้จุด ศูนย์กลางเป็นจุดหมุน public class Shape { public Rotate() { // rotate all points of // the shape by 30 degree // the rotatation center is // the center of the triangle } นายชวา แต่ถึงอย่างไรโปรแกรมของ นายชวาก็ยาวกว่าของนาย อินทรีอยู่ดี แต่นายชวาเห็นว่า คาตอบของเขาก็ดูสวยงาม ใช้ได้เลยทีเดียว 21 นายอินทรี }} public class Triangle extends Shape { } public class Circle extends Shape { } } public class Rectangle extends Shape { อาจารย์เปลี่ยนใจ อมีบา • วันที่สี่ก่อนถึงกาหนดส่งงาน อาจารย์ท่านนั้นได้อีเมลมาบอกศิษย์ทุกคน ว่าเขาลืมบอกไปว่ามีอีกรูปร่างหนึ่งทีนิสิตต้องหมุน นั่นคือรูปอมีบา รูปอมีบา ่ ประกอบด้วยจุดมากมายสร้างเป็นเส้นรอบตัวมัน • และเส้นเหล่านั้นมีการเปลี่ยนแปลงอยู่ตลอดเวลา ดังนั้นเวลาที่อมีบาหมุนตัว จะไม่หมุนโดยใช้จุดศูนย์กลางเป็นจุดหมุน แต่จะใช้จดนิวเคลียสของอมีบาเป็น ุ 22 จุดหมุน • นายอินทรีเริ่ม เครียด เพราะอาจารย์สั่ง ให้หมุนอมีบาโดยใช้ นิวเคลียสเป็นจุดหมุน แต่ ด้วยความเชี่ยวชาญ นาย อินทรีตรงไปที่ฟังก์ชัน rotate() แล้วก็เขียน โปรแกรมเพิ่มเข้าไป นายอินทรี นายชวาถือว่าการเปลี่ยนโจทย์แบบนีเ้ ป็นเรื่องธรรมชาติ โลกเรามันก็ต้อง มีการเปลี่ยนแปลงอยู่ตลอดเวลา และอมีบามันก็เป็นแค่รูปรูปหนึ่งเท่านั้น เขาจึงสร้าง คลาส Amoeba โดย inherit จากคลาส Shape และเขียนวิธี (method) ที่ จะให้อมีบาหมุนตัวขึ้นมาใหม่ public class Amoeba extends Shape { Point nucleus; นายชวา public Rotate() { // rotate amoeba against its nucleus }} public class Shape { public Rotate() { // rotate all points of // the shape by 30 degree // the rotatation center is // the center of the triangle }} public class Triangle extends Shape { } public class Circle extends Shape { } public class Rectangle extends Shape { } 23 วันที่สามก่อนถึงกาหนดส่งงาน อาจารย์ก็อีเมลมาหานิสิต อีกครั้ง เมื่ออินทรีเห็นชื่ออาจารย์ในตู้จดหมาย หัวใจของเขาเต้น ระทึก กลัวว่าอาจารย์จะเปลี่ยนโจทย์อีก นายอินทรี นายชวา 24 จากตัวอย่างนี้พอสรุปได้ว่า 1. การเขียนโปรแกรมเชิงวัตถุด้วยภาษาเชิงวัตถุ(Java) ถึงแม้จะมีการเตรียมการมากกว่า แต่สามารถแก้ไขเพิ่มเติมได้ง่ายและโปรแกรมที่เขียนออกมานั้นดูไม่ยุ่งเหยิง 2. การเขียนโปรแกรมเชิงวัตถุด้วยภาษาเชิงวัตถุ( Java )ถึงแม้จะมีการเตรียมการ มากกว่า แต่เนื่องจากที่เราต้องเตรียมการ ทาให้เราเข้าใจธรรมชาติของปัญหาดีขึ้น ส่งผลให้โปรแกรมอ่านง่ายขึ้น 3.อินทรี ต้องเข้าไปเขียนเพิ่มเติมในโปรแกรมในส่วนเคยทางานได้ การเขียนเพิ่มอาจจะ ทาให้โปรแกรมที่เคยทางานได้อย่างถูกต้องนั้นทางานผิดพลาด ได้ ในขณะที่ชวา ไม่ได้ไปแตะต้องโปรแกรมที่ทางานได้อย่างถูกต้องเลย 4.ภาษาเชิงวัตถุ( Java )รวมข้อมูลเกี่ยวกับรูปทรงกับ method ไว้ในคลาสเดียวกัน ในขณะที่ภาษา C ที่เขียนแบบโครงสร้าง structure นั้นเขียนแยกส่วนกัน 25 What are Object-Oriented Techniques? Break Time – 15 minutes 26 • What are Object-Oriented Techniques? มุมมองใหม่ของ Software Decomposition  พิจารณาข้อมูล (attribute/data) และ หน้าที/่ พฤติกรรม (Action/behavior) รวมกันเป็นวัตถุ (Object) • เสนอแนวทางใหม่ในการ Synthesis  พิจารณาแนวทางการสังเคราะห์ วิธีการแก้ปํญหา โดยมุ่งเน้นที่ Data และ Actions โดยรวมเป็นหน่วยเดียวกันคือ Object  แยกส่วนของ Data และ Actions ที่ไม่เกี่ยวข้องไว้ ในรูปของ การ เรียกใช้ Module • พิจารณาขอบเขตของปัญหา (Problem Domain) และสร้าง แบบจาลองการแก้ปัญหา (Modeling Objects) ตามสภาพความเป็น จริง (Real World) 27 • พิจารณา software ในรูปแบบของ clients และ servers Object A Client request result or deny What are Object-Oriented Techniques? Object B Server • servers ซ่อน Implementation ของ Actions ไว้ ภายใต้ Interface • clients เรียกใช้ได้เฉพาะ Interface ที่ server เปิด ให้บริการเท่านั้น 28 Where Is Object Technology Used? • Client/Server Systems and Web Development – Encapsulates business information in objects • Real-time systems – Software, like hardware, is built from components 4 29 หลักการออกแบบระบบเชิงวัตถุ(หลักการเชิงวัตถุ) Object: สิ่งต่างๆรอบๆตัวเรา(Existence) ภายใต้โลกความจริง(Real-world) วัตถุเป้าหมายในโลกความจริง วัตถุเป้าหมายในโปรแกรม สิ่ง(Things) -Tangible Things =>Physical Things : สิ่งที่จับต้องได้ เช่น สินค้า,ลูกค้า - Intangible Things:สิ่งที่เป็นนามธรรม(จับต้องไม่ได้)บทบาท(Tole) (อาจารย์ พนักงาน ผู้ป สิ่งอุบัตขึ้น(Incident) หรือ Event ต่างๆ เที่ยวบินฯ การโต้ตอบ(Interaction) ิ (ตั้งแต่ 2 Object(ผู้ซื้อ-ผู้ขาย)) 30 หลักการออกแบบระบบเชิงวัตถุ  หลักการออกแบบระบบเชิงวัตถุ อาศัยหลักการมองระบบ เหมือนกับสภาพที่เป็นไปในชีวิต ซึ่งมีองค์ประกอบพื้นฐานคือ วัตถุ (object) Object:Real-world 31 หลักการออกแบบระบบเชิงวัตถุ  พิจารณาวัตถุ(Object)ในสภาพแวดล้อม เราจะเห็นว่าวัตถุ ต่างๆจะมีความเกี่ยวข้องซึ่งกันและกันในสองลักษณะ 1.Relationship 2.Interaction 32 หลักการออกแบบระบบเชิงวัตถุ 1. Relationship เป็นความเกี่ยวข้องในลักษณะของ “ความสัมพันธ์” ของวัตถุสองตัว (หรือมากกว่า) ในลักษณะใด ลักษณะหนึ่ง เช่น ความเป็นแม่ลูกกัน เป็นต้น แม่ ลูก 33 หลักการออกแบบระบบเชิงวัตถุ 2. Interaction เป็นความเกี่ยวข้องในลักษณะของ “การกระทา” ของวัตถุหนึ่ง ต่อวัตถุอีกวัตถุหนึ่ง เช่น คนขับรถ เป็นต้น 34 หลักการออกแบบระบบเชิงวัตถุ  ในสภาวะแวดล้อมที่เรากาลังสนใจ เราเรียกว่า domain โดย ภายในโดเมนที่เราสนใจ ประกอบไปด้วยวัตถุมากมายที่อาจมีความ เกี่ยวข้องในลักษณะใดลักษณะหนึ่ง  หรือทั้งสองลักษณะต่อกัน ก่อเกิดขึ้นมาเป็นระบบภายใต้โดเมน ดังกล่าว 35 concept  ในโดเมนที่เราสนใจ เราสามารถที่กล่าวถึงองค์ประกอบภายใน โดเมนในรูปลักษณ์ทั่วไป ซึ่งเป็นภาพที่ไม่เจาะจงลงไปว่าเป็น ชนิดใด  เราเรียกการอธิบายองค์ประกอบนี้ว่า concept หรือ “แนวคิด” 36 ตัวอย่าง concept  ตัวอย่าง concept เช่น เมื่อเราคิดถึงรถ เรานึกถึงยานพาหนะ ทีใช้ ่ ในการบรรทุกคนหรือสิ่งของ และมีล้อที่ใช้เป็นองค์ประกอบสาคัญ เพื่อให้ขับเคลือน มีเครื่องยนต์ที่เป็นแหล่งกาเนิดพลังงานกล และเป็น ่ ยานพาหนะทางบก 37 Abstract Data Type หรือ ADT  ใน concept กล่าวถึงคุณลักษณะของวัตถุใดวัตถุหนึ่งเป็นการลอยๆ  แต่ในทางปฏิบัติจะเห็นว่าอาจจะกาหนดคุณลักษณะของวัตถุประเภทใดประเภท หนึ่งขึ้นมาอย่างชัดเจนขึ้นได้  เช่น เมื่อกล่าวถึงยานพาหนะ ซึ่งเป็นสิ่งที่ใช้ขนส่งที่เคลื่อนที่ได้ พอเรากาหนด ตายตัวออกมาเช่น รถยนต์นั่งส่วนบุคคล เราจะสามารถกาหนดลักษณะ องค์ประกอบ ตัวรถ และ ความสามารถทีเ่ ราจะจัดการกับองค์ประกอบต่างๆ  คาอธิบายถึงองค์ประกอบและขีดความสามารถเหล่านี้ก็คือ ADT หรือ Abstract Data Type 38 องค์ประกอบ Abstract Data Type หรือ ADT ADT มีองค์ประกอบไปด้วยสองส่วน  1.โครงสร้างการจัดเก็บข้อมูล หรือตัวข้อมูลเอง  2 .ส่วนจัดการข้อมูล หรือกรรมวิธีในการจัดการข้อมูลที่ว่ามานั้น 39 องค์ประกอบ Abstract Data Type หรือ ADT ตัวอย่างเช่นการกล่าวถึงรถยนต์ ซึ่งคือรถชนิดหนึ่ง เราจะเห็นว่า รถยนต์ประกอบไปด้วย 1. เครื่องยนต์ ล้อสี่ล้อ ที่นั่งสี่ที่นั่ง พวงมาลัย และองค์ประกอบอื่นๆ 2. ส่วนกรรมวิธีในการจัดการก็อย่างเช่น การสตาร์ทเครื่อง การเดินหน้า การถอย หลัง การเปลี่ยนเกียร์ การเลี้ยวซ้าย การเลี้ยวขวา ซึ่งคือกระบวนการที่ กระทาต่อวัตถุหรือรถยต์ 40 Class  ตัว ADT ที่เรากล่าวมานั้นเป็นเพียง “รูปเชิงนามธรรม” หรือสิ่งที่ใช้อธิบาย ลักษณะของ “วัตถุ” ในที่นี้เป็นเพียงพิมพ์เขียว หรือการอธิบายลักษณะของ รถและวิธีการใช้งาน เรายังไม่ได้หมายถึงตัวรถยนต์ ซึ่งจะต้องผลิตโดย อาศัยแบบ(พิมพ์เขียว) ที่เรากล่าวมานี้  ในการออกแบบระบบเชิงวัตถุ เราจะนิยามแม่แบบของวัตถุต่างๆในโดเมน ที่เราสนใจ (หรือ ADT ที่กล่าวมานี้) ในรูปของ “คลาส”(Class) 41 ส่วนประกอบของ class การนิยามคลาสจึงประกอบไปด้วยสององค์ประกอบ นั่นคือ 1. ส่วนการนิยาม attribute ซึ่งคือการนิยามข้อมูลหรือตัวองค์ประกอบ ภายในหรือองค์ประกอบใน “พิมพ์เขียว” ของสิ่งที่เราจะสร้างขึ้น กับ 2.method ซึ่งก็คือส่วนการนิยามว่าองค์ประกอบในพิมพ์เขียนนั้น เราจะมี กรรมวิธีใช้งานกันอย่างไร 42 ส่วนประกอบของ class ให้สังเกตว่า เมื่อเรากล่าวถึง คลาส เราจะ หมายถึ ง “แม่ แ บบ” หรื อ “พิ ม พ์ เ ขี ย ว” ของวัตถุ ดั ง นั้ น : ค ล า ส คื อ ค า อ ธิ บ า ย เ ชิ ง “นามธรรม” ส่วน วัตถุ (object)คือ “รูปธรรม” ที่ สร้างขึ้นตามที่อธิบายไว้ใน “คลาส” หรือ จากค าอธิ บ ายเชิ ง นามธรรมที่ เ รากล่ า ว มาแล้ว 43 Class  เป็นแบบพิมพ์เขียว (Blue print) ทางซอฟต์แวร์หรือถ้าหากจะเปรียบเทียบให้เข้าใจง่ายขึ้น ก็ คือ แบบหล่อ ที่ช่างหล่อทาเตรียมไว้สาหรับหล่อสิ่งต่างๆเช่น ตุ๊กตา พระพุทธรูป เป็นต้น  ในทางซอฟต์แวร์ Class จะประกอบด้วย 3 ส่วนหลัก ดังนี้ 1. ชื่อของ Class ,ชื่อพารามิเตอร์และประเภทของพารามิเตอร์ สิ่งเหล่านี้รวมเรียกว่า Signature  2. คุณสมบัติ (Attribute) หรือบางครั้งเรียกว่า Property ก็ได้ จะใช้แสดงถึง รายละเอียดหรือบ่งบอกลักษณะทั่วไปของ Class  3. วิธีการทางาน (Method) หรือบางครั้งเรียกว่า Function ก็ได้ จะใช้แสดง พฤติกรรม (Behavior) ของ Object ที่เกิดขึน ้ คลาส (Class) คือ การแสดงให้เห็นบุคคล สถานที่ หรือสิ่งต่าง ๆ ให้ทราบถึงลักษณะ เฉพาะในรูปแบบนามธรรม (Abstract) 44 Abstraction & Instantiation  เมื่อกล่าวถึงองค์ประกอบในโดเมนที่สนใจ เรานึกถึง “วัตถุ” ซึ่งเป็น องค์ประกอบย่อยภายในโดเมน การที่เราจะสื่อสารว่า วัตถุที่กล่าวมานี้นั้น ถูกสร้างขึ้นโดยอาศัยแม่แบบใด เราจะนึกถึง “คลาส”  ดังนั้น เมื่อเราพิจารณาโดเมนที่เราสนใจในเชิงของ “นามธรรม” เราจะนึกถึง การนิยาม “คลาส” ทีจะนาไปใช้ในการนิยามวัตถุ ่  การกล่าวว่าคลาสคือการนาเสนอแนวคิดเชิงวัตถุในลักษณะนามธรรม นั่นคือ ลักษณะของ Abstraction นั่นเอง 45 Abstraction & Instantiation • เมื่อเราพิจารณาโดเมนที่ประกอบไปด้วย “วัตถุ” ที่สร้างขึ้นโดยอาศัย “คลาส” เป็นแม่แบบ เราจะกล่าวถึงการนาเสนอวัตถุอันอาศัยคลาสเป็น แม่แบบว่าเป็นการ Instantiation และเราเรียกวัตถุว่า instance • ดังนั้น เวลาทีเ่ ราเขียนโปรแกรม และมีการสร้างวัตถุที่เกิดมาจากคลาส เรา จึงอาจจะเรียกว่าเป็น object หรือวัตถุ(เรียกแบบกลางๆ) หรือเรา • อาจจะเรียกว่า instance (โดยพิจารณาเป็นหน่วยของวัตถุที่ถูกจาลอง ขึ้นมาตามคลาสแม่แบบ) ก็ได้ 46 Example • ตัวอย่างการกาหนดคลาส คลาส “รถ” ซึงมีองค์ประกอบ ่ (attribute)ดังต่อไปนี้ - ส่วนบังคับเลี้ยว - ล้อ - จานวนที่นั่ง และกรรมวิธีใช้งาน (method) - เลี้ยวซ้าย - เลี้ยวขวา - เดินหน้า - ถอยหลัง - เบรก - สตาร์ทเครื่อง - ดับเครื่อง จะเห็นว่าการนิยามคลาสทางด้านซ้ายนี้ มี องค์ประกอบของสิ่งที่ก่อให้เกิดเป็นตัวรถ และวิธีการใช้งานองค์ประกอบนั้นๆ 47 Unique Identity  เมื่อเราพิจารณารถที่กล่าวมาข้างต้น เราอาจจะพบว่าแม่แบบอันก่อนหน้า นี้ สามารถนามาใช้นิยามรถได้หลายประเภท  สมมติว่าคราวนี้เรานิยามคลาส “รถยนต์ขับเคลื่อนสี่ล้อ” โดยมี attribute เพิ่มเติมคือ  หมายเลขทะเบียนรถ หมายเลขตัวถัง และหมายเลขเครื่อง คราวนี้เราจะ พบว่า เมื่อเราสร้างรถตามคลาสใหม่ที่เรากาหนดขึ้นมานี้ โดยเราจะได้ object หรือ “วัตถุ” ซึ่งแต่ละ attribute บันทึกรายละเอียดของรถ คันนี้ไว้ เราจะพบว่ารถคันนี้มีได้เพียงคันเดียวในโลก 48 Unique Identity  ลักษณะการ “มีได้สิ่งเดียว” นี้เราจะเรียกว่า unique identity  วัตถุ หรืออินสแตนต์ที่เราสร้างขึ้นจากคลาส จะนาเสนอหน่วยย่อยที่มี ลักษณะเฉพาะได้เพียงลักษณะเดียว  ดังนั้นในทางปฏิบัติเวลาเราต้องการกล่าวถึงรถยนต์รุ่นเดียวกันสองคัน เราจึงต้องนิยามหรือสร้าง วัตถุขึ้นมาสองอินสแตนต์ จากคลาส แม่แบบเดียวกัน 49 Example ชื่อ ประเภท หมายเหตุ รถยนต์ คลาส รถยนต์ยี่ห้อ Honda วัตถุ ล้อ สี ป้ายทะเบียน เครื่องยนต์ attribute (ล้อ=สี่ล้อแม็กซ์) attribute (สี=เหลืองสด) attribute(หมายเลข=กก 9999) attribute( เครื่องยนต์=VTEC2000cc) กล่าวถึงลักษณะชนิดของ “สิ่ง” ที่ยังไม่ชดเจน ั ตายตัว(ขาดความเป็น unique) จริงๆแล้วจุดนี้เราอาจจะยัง กล่าวว่าเป็นวัตถุหรือคลาส ก็ได้ แต่สิ่งที่ตามมาซึงบ่ง ่ ถึงรายละเอียด ต่างบ่งถึง uniqueness) รายละเอียดอันเป็น องค์ประกอบเฉพาะของ รถยนต์ยี่ห้อ Honda คันนี้ 50 Object คืออะไร? • Object เป็นตัวแทนของสิ่งหนึ่งสิ่งใดไม่ว่าสิ่งนั้นจะเป็นวัตถุทางกายภาพ (physical) หรือเป็นความคิด (conceptual) หรือเป็นซอฟต์แวร์ (software) 51 OBJECT Object : สิ่งถูกสร้างขึ้นมาหรือเกิดขึ้นจากตัว Class ยกตัวอย่าง หากแบบหล่อนั้นเป็น Class แล้วสิ่งที่เกิดจากการหล่อจะเรียกว่าเป็น Object หรือ Instance ของแบบหล่อ เช่น แบบหล่อตุ๊กตา หากเราหล่อตุ๊กตา สิ่งที่ได้ จากการหล่อก็ คือ ตุ๊กตา นั่นเอง ดังนั้นผลลัพธ์ที่ได้ ไม่ว่าจะเป็นคุณลักษณะ ต่างๆ ก็จะเหมือนกับแบบหล่อทุกประการ อ็อบเจกต์ (Object) คือ การทาให้คลาสนั้น เกิดตัวตนว่าเป็นใคร เป็นอะไร เป็นที่ใด หรือเป็นสิ่งใด 52 OBJECT „ วัตถุ (object) เป็น กลุ่มหรือชุด (collection) ของสิงต่อไปนี้ ่ • แอททริบวต์ (Attribute) ของวัตถุจะบอกถึงข้อมูล (Data) ิ คุณลักษณะเฉพาะหรือ สถานะของวัตถุ • เมทธอด (Method) จะบอกถึงหน้าที่ (functionality) หรือ พฤติกรรม (behavior) ต่างๆของวัตถุนั้นๆ • โดยมี Association อันได้แก่ สิ่งทีบอกถึงความสัมพันธ์ ่ (Relationship) ของวัตถุนั้น กับวัตถุอื่นๆ รวมทั้งปฏิสัมพันธ์ (Interactions) ระหว่างวัตถุกับวัตถุอื่นๆ 53 Identify Problem Domain „ ระบุ ขอบเขตของปัญหา (Problem Domain) เพื่อสร้าง แบบจาลองวัตถุ (Modeling Objects)  เป็นการกาหนดขอบเขตของสิ่งที่เราจะพิจารณาให้เป็นวัตถุ (Object)  เราไม่สามารถสนใจทุกๆ วัตถุ (Object) ในโลกของความเป็นจริง ในเวลาเดียวกันได้ เช่นเดียวกับที่เราไม่สามารถสนใจทุกความสัมพันธ์ และ กิจกรรม ทุก ความสัมพันธ์ และทุกกิจกรรมที่เกิดขึ้นในโลกของความเป็นจริงได้ 54 เช่นกัน • แต่ละ Object มีเอกลักษณ์ (identity) มีตัวตนห่อหุ้มพฤติกรรม (behavior) และสถานภาพ (state) ของตัวไว้ภายใน – State แทนด้วยคุณสมบัติ (attributes) และความสัมพันธ์ (relationships) – Behavior แทนด้วยการกระ (operations) Attributes Operations Object 55 Object มีสถานภาพ (State) • แต่ละสถาณภาพ (state) ของ object คือสิ่งที่เกิดขึ้นได้กับ object นั้น • สถานภาพ (state) ของ object เปลี่ยนแปลงได้ตลอดเวลา Name : j Clark Employee ID : 567138 Date Hired : July 25, 1991 Discipline : Finance Maximum Course Load : 3 classes –State แทนด้วย คุณสมบัติ (attributes) และ ความสัมพันธ์ (relationships) Professor Clark 56 State • State : สถานะความเป็นออบเจ็กต์หนึ่งๆ • จะมีคุณสมบัติเฉพาะบางประการทาให้รู้ว่าออบเจ็กต์นั้นคือ อะไร • โดยคุณสมบัติจะขึ้นอยู่กับมุมมอง เช่น ค้อนจะมีคุณสมบัติ คือ มีหัวเป็นโลหะแข็งและด้ามจับเป็นไม้ ในที่นี้หัวและด้ามจับคือ คุณสมบัติหรือ สถานะ(State) ของค้อน 57 ตัวอย่างState มนุษย์ มี State (ชื่อ, นามสกุล, ที่อยู่ เงินเดือน, วันเดือนปีเกิด) รถยนต์มี state (สถานะของน้ามัน, ชื่อรถ, ล้อทั้งสี่, สี, ระบบเกียร์) และ พฤติกรรม (การเร่ง, การเบรค, การ ลดความเร็ว, การเปลี่ยนเกียร์) และมีพฤติกรรม (behavior) (เดิน, กิน, นอน, เล่นกีฬา, เต้นรา) ตย. ลูกค้าธนาคาร มี Attributes ที่สนใจ คือ เลขบัตรประชาชน ชื่อ สกุล ที่อยู่ เบอร์โทรศัพท์ 58 Object มีพฤติกรรม (Behavior) • Behavior บ่งชี้การกระทาหรือการตอบสนองของ object • The visible behavior of an object is modeled by the set of messages it can respond to (operations the object can perform Professor Clark’s behavior Submit Final Grades Accept Course Offering Maximum Course Load : 3 Classes Professor Clark 59 พฤติกรรม (Behaviors)(ต่อ) • เป็นสิ่งที่ Object สามารถทาได้ หรือบริการได้ • มุมมองโปรแกรมเชิงกระบวนความ( Procedural Programming)=Fun,Procudure,Subroutine • มุมมอง Object-oriented Programming=เก็บไว้ในสิ่งที่ เรียกว่า Method • (ปกติ Method จะสอดคล้องกับคากริยาในภาษาทีเ่ ราสื่อสาร) 60 Behavior • Behavior คือ พฤติกรรมของออบเจ็กต์ • อาจเป็นการส่งเมสเสจ ไปยังอีกออบเจ็กต์หนึ่ง • เป็นการส่งเมสเสจตอบกลับ หรือ • เป็นการกระทาบางอย่างเพื่อให้สถานะ(State) เปลี่ยนไปจากเดิม เช่น เราอาจจะเอาค้อนไปตอกตะปู ซึ่งในที่นี้ตัวเราเป็นผูส่งเมสเสจ ้ ไปยังค้อน เป็นต้น 61 Object มีเอกลักษณ์ (Identity) • แต่ละ Object มีเอกลักษณ์เฉพาะที่ต่างกัน แม้สถานภาพของ object นั้นจะเหมือนกับสถานภาพของ object อื่น (object ที่มีสถานภาพเหมือนกันก็ถือว่าเป็นคนละ object กัน) Professor “ J Clark” teaches Biology Professor “ J Clark” teaches Biology 62 Identity • Identity : คุณลักษณะบางอย่างที่ทาให้ออบเจ็กต์ แต่ละออบเจ็กต์แตกต่างกัน ทาให้เรารู้ว่าเป็นคนละออบเจ็กต์กัน 63 การ Identify Object ภายใต้ Problem domain ที่ศึกษา (ปกติ object จะอยู่ในลักษณะสอดคล้องกับคานาม) ตัวอย่าง ลูกค้ามาทาธุรกรรมฝากเงินกับธนาคาร โดยใช้บัญชีธนาคาร ในการฝาก เขียนใบฝาก พร้อมสมุดบัญชีให้พนักงานธนาคาร ลูกค้า  ใบฝาก (Saving Slip) ฝากเงิน  ธนาคาร Object ที่พิจารณาจากคานามได้แก่ บัญชีธนาคาร(Passbook) ใบฝากเงิน(Saving Slip) พนักงานธนาคาร(Authorizer) ลูกค้าธนาคาร(Customer) การฝากเงิน(Deposition) กุญแจสาคัญที่แสดงลักษณะเทคโนโลยีเชิงอ็อบเจกต์ 64 บัญชีธนาคาร (Passbook) เงินที่ฝาก การแทน Object ใน UML • แทน object ด้วยสี่เหลี่ยมขีดเส้นใต้ชื่อของ object J Clark : Professor Named Object Professor J Clark : Professor Unnamed Object 65 ความเกี่ยวพันระหว่าง Classes และ Objects • A class is an abstract definition of an object • Objects are grouped into classes. – It defines the structure and behavior of each object in the class. – It servers as template for creating objects Perfesses Jane Torpie Professor Perfesses Paul Meijer Perfesses Tom Allen 66 Classes and Objects City Name : String = default Country : String = default Population : integer = default setName (s : String = deault) setPopulation(p : integer = default) <> London : City Name = London Country = UK Population =2,324,320 <> New York : City <> Sydney : City Name = New York Country = USA Population =5,734,012 Name = Sydney Country = Australia Population =3,536,000 67 Class – a set of objects that share common attributes and behavior. Sometimes referred to as an object class. 68 สรุปคุณสมบัติ Object – คุณลักษณะเฉพาะ (identity) – สถานะ (state) ซึ่งจะถูกกาหนดโดยค่าของคุณสมบัติ (attribute) Class Human Attributes name, birthday, height, weight, eye color Method / behavior walk eat grow reproduce – พฤติกรรม/ความสามารถ (behavior /method ) 69 เพิ่มเติมเรื่อง Object • เมื่อเรานึกถึงชื่อของวัตถุหรืออาชีพ ของคน เรามักจะคิดถึง คุณสมบัติ (state/Attribute)และ ความสามารถ ของวัตถุหรือคน เหล่านั้นขึนมาพร้อมๆกัน ้ 70 เพิ่มเติมเรื่อง Object • เช่น เมื่อเรานึกถึง ปากกา เราก็รู้ว่ามันมีสี อะไรและมันสามารถ ใช้เขียนได้ 71 • เมื่อต้องการทาอะไรบางอย่าง เราจะหาวัตถุ หรือคนที่สามารถช่วยเราทางานได้ • เช่น ถ้าเราต้องการเขียน เรา ก็จะหาปากกาและกระดาษ, หรือถ้าเราต้องการอาหาร เราก็เรียกบ ริกรเข้ามารับออเดอร์ เราไม่จาเป็นต้อง ทราบการทางานของปากกาว่ามันจ่ายหมึก ออกมาได้อย่างไร • เหมือนกับที่เราไม่จาเป็นต้องทราบว่าเมื่อ บริกรรับออเดอร์จากเราไปแล้วเขาจะไปบอกพ่อ ครัวอย่างไร เราทราบแต่ว่าเมื่อเราตวัดปลาย ปากกา หมึกจะออกมา และเมื่อเราสั่งอาหาร เราก็ (มัก)จะได้อาหารตามที่เราสั่งเสมอ 72 Attribute • เป็นชื่อคุณสมบัติที่ตั้งไว้ใน Class เพื่ออธิบายค่าของคุณสมบัติที่ จะมีใน object ของ class นั้น – A class may have any number of attributes or no attributes at all. Student Attributes - name - address - studentID - dateOfBirth 73 Attribute • attribute คือส่วนที่ใช้อธิบายหรือจัดเก็บลักษณะเฉพาะขององค์ประกอบ แต่ละอย่าง ที่ประกอบขึ้นมาเป็นคลาส • เราจะเห็นว่า attribute บ่งบอกถึงลักษณะแต่ละอย่างของคลาส และสิ่งที่ บรรจุนั้น จะมีค่าเป็นอย่างใดอย่างหนึ่งในเวลาใดเวลาหนึ่งเท่านั้น • attribute อาจเปรียบเสมือนตัวแปร (variable) ซึ่งสามารถเก็บค่า ประเภทใดประเภทหนึ่งไว้สาหรับใช้งาน (เช่นในการคานวณ) 74 Attribute • ในภาษาทาง OOP มักเรียก attribute ว่า data member • คลาสส่วนมาก จะมี attribute เพื่อใช้ในการเก็บคุณ ลักษณะเฉพาะของคลาสนั้นๆ เพื่อที่วัตถุซึ่งจาลองมาจากคลาสจะ สามารถมีตัวตนขึ้นมาได้ 75 Operation • An operation เป็นส่วน implementation ของบริการ ที่ทาไว้ใน class เพื่อสามารถดาเนินการตามที่ object ของ class นั้นร้องขอให้ปฎิบัติตามพฤติกรรมของ object • A class may have any number of operations or none at all. Student + add schedule() + get schedule() + delete schedule() + has pre-requisites() 76 Operations Method • การนิยามคลาสจะไม่มีประโยชน์อันใด หากวัตถุที่ถูกจาลองขึ้นมาจาก คลาสไม่สามารถใช้งานใดๆ ได้ • การใช้งานวัตถุที่สร้างขึ้นจากคลาส จึงต้องอาศัยการนิยาม feature ของคลาสนั้นๆ ซึ่งในที่นี้เราจะเรียกว่า method หรือ member function • จากตัวอย่างคลาสรถยนต์ที่ผ่านมา เพื่อที่จะให้รถยนต์ใช้งานได้ ในทาง ปฏิบัติเราจะต้องนิยามวิธีการใช้งานต่างๆ ประกอบด้วย เช่น การสตาร์ทเครื่อง การดับเครื่อง การเร่งเครื่อง การเบรค เลี้ยวซ้าย เลี้ยว 77 ขวา เป็นต้น ตัวอย่าง Attribute และ Method State/Attribute Behavior/ Method State/Attribute Behavior/ Method 78 ตัวอย่าง Attribute และ Method State/Attribute Behavior/ Method 79 การจาลองแบบของ Real-world object ในการจาลอง จะใช้ การโมเดลวัตถุต่าง ๆ ด้วย  Class โมเดล State ด้วย  ตัวแปรของ Class และ พฤติกรรม behavior ด้วย  Method( )หรือ Function( ) 80 Break Time ตัวอย่าง Object บัญชีธนาคาร สามารถมี Method 81 ตัวอย่าง Object บัญชีธนาคาร สามารถมี Method • • • • ฝาก ถอน ปรับสุมด ดูยอดคงเหลือ 82 ตัวอย่าง Object แสดงส่วนติดต่อ(Interface)ของ Method (นาเงินฝาก) สื่งที่ต้องรู้ 1.ชื่อ Method 2.พารามิเตอร์ที่ส่งให้ Method 3.ประเภทข้อมูลที่ถูกส่งกลับของ Method Message 83 การจาลอง Diagram มาตรฐานแสดง ระบบการฝากเงินธนาคาร/ ลูกค้า โดยใช้ UML Class Diagram (กล่าวถึงรายละเอียดภายหลัง) ชื่อ class หรือ object ข้อมูลหรือลักษณะของ Object(Attributes) พฤติกรรม หรือ Method + # ความสามารถเข้าถึง 84 วิธีการเชิงวัตถุ วิธีการเชิงวัตถุจะมีกลไกอย่างหนึ่ง คือ คลาส (Class) เป็นการจัดกลุ่มให้แก่ออบเจ็กต์ต่างๆ ที่มีคุณสมบัติหรือพฤติกรรม บางอย่างเหมือนกัน CLASS Objects จะใช้งานโดยการสร้าง “อินสแตนซ์” (instance) ของคลาสขึ้นมาใช้งานแทน กลไกดังกล่าวทาให้เราสามารถ ใช้เพียงคลาสๆ เดียว แต่สร้างอินสแตนซ์ ของคลาสไปทางานได้หลายอินสแตนซ์ ซึ่งอินสแตนซ์ของคลาสก็คือ ออบเจ็กต์นั่นเอง 85 ตัวอย่างการกาหนดคลาสให้แก่ออบเจ็กต์ คลาส บุคคลากร ปฎิกริยาทางเคมี ออบเจ็กต์ นางสาว สุนทริน วงศ์ศิริกุล เหล็กขึ้นสนิม แม่น้า เครื่องเขียน กีฬา เจ้าพระยา ดินสอ 2 B บาสเกตบอล 86 เกี่ยวกับ Class คลาสเพิ่มเติม • เป็น Blueprint ของ Object • เป็น ต้นแบบ(Template) ของ Object • จัดเก็บรูปแบบ(pattern) กลไกในการสร้างสิงที่จะสร้าง(Instantiate) ่ 87 Class and Object Employee name:String Employee name=„Smith‟ age=24 Employee name=„Sharp‟ age=52 age:Integer Class Employee Objects instantiated from the class Employee 88 กุญแจสาคัญที่แสดง ลักษณะเทคโนโลยีเชิงอ็อบเจกต์ 89 Basic Principles of Object Technology Object Technology Encapsulation Abstraction Modularity Hierarchy 90 แก่นความคิดของ Object Orientation Object Orientation Encapsulation Abstraction Modularity Hierarchy 91 องค์ประกอบของวิธีการเชิงวัตถุ ประกอบด้วยองค์ประกอบ 4 อย่าง 1.มุมมองออบเจ็กต์ หรือAbstraction 2.คุณค่าภายในออบเจ็กต์ หรือ Encapsulation 3.ลาดับชั้นของออบเจ็กต์ หรือ Hierarchy 4.การตอบสนองต่อเมสเสจ หรือ Polymorphism 92 1.มุมมองออบเจ็กต์ หรือ Abstraction คือ มุมมองต่อออบเจ็กต์หนึ่งๆ ว่าเป็นอย่างไร มุมมองคอมพิวเตอร์ที่แตกต่างกัน 93 Abstraction นิยาม  วิธีการให้ความหมายหรือนิยาม บริบทของปัญหาที่จะแก้ไขให้ เจาะจง(specific) ลงไป  ตย. class Mammal พิจารณา Class Dog และ Cat  พิจารณาเจาะจงลงไปที่สายพันธ์ ดังภาพหน้าต่อไป 94 ตัวอย่าง Abstraction พิจารณาเจาะจงลงไปทีสายพันธ์ ่ 95 abstraction ในทางปฏิบัติ  ในทางปฏิบัติ abstraction จะมีบทบาทในการพัฒนาระบบ  กล่าวคือ สมาชิกในทีมพัฒนาซอฟต์แวร์อาจมีมุมมองต่อระบบแตกต่างกัน  จะต้องพยายามให้มุมมองของทีมพัฒนาระบบเป็นไปในทางเดียวกันเพื่อให้ ได้ระบบงานตรงตามต้องการจริงๆ 96 2.คุณค่าภายในออบเจ็กต์ (Encapsulation)  Encapsulation เป็นกลไกการซ่อนสารสนเทศบางอย่าง เอาไว้ในออบเจ็กต์ เมื่อเวลาเราใช้งานคอมพิวเตอร์ เราก็เพียงแต่กดปุ่มเปิดเครื่องและใช้เมาส์ กับคีย์บอร์ดสั่งงานแต่กลไกการทางานที่แท้จริงของคอมพิวเตอร์นั้นคือวร จรไฟฟ้าต่างๆ ที่ถูกซ่อนอยู่ภายในเคส case) 97 Encapsulation(Information Hiding)(ต่อ)  ปกปิด Attribute,Method จากการถูกมองเห็นจาก Object อี่นๆ ได้  การออกแบบ เชิงวัตถุ ควร  เปิดเผยเฉพาะส่วน Interface ที่จาเป็นที่ใช้ในการโต้ตอบกับตัว Object เองเท่านั้น รายลเอียดใน Attribute ปกปิดไม่ให้ object ภายนอกรู้ 98 Encapsulation/Hiding The object encapsulates both data and the logical procedures required to method manipulate the data #1 data method #2 method #6 method #5 method #4 Achieves “information hiding” 99 Encapsulation/Hiding  เช่น นศ.มีชื่ออยู่และต้องการ เปลี่ยนชื่อนศ. จะเปลี่ยนโดยตรงไม่ได้ จะต้องเปลี่ยนโดยใช้ Method ชื่อ ว่า เปลี่ยนชื่อ( ) ให้ทาการเปลี่ยนให้ หรือถ้าอยากดูข้อมูล GPA จะดู โดยตรงไม่ได้ต้องเรียก Method ที่ชื่อว่า ดูGPA( )  เพราะฉะนั้นการที่เราออกแบบระบบของเราเป็นแบบ Object มันจะมี ข้อดีคือ ส่วนบนจะนาไปเป็นฐานข้อมูล และส่วนล่างนาไปเขียนโปรแกรม เป็นฟังก์ชันการทางาน 100 3.ลาดับชั้นของออบเจ็กต์ (Hierarchy)  Hierarchy เป็นการนาออบเจ็กต์มาจัดกลุ่มและสร้างลาดับ ความสัมพันธ์ Animal Insect Mammal ผึ้ง ผีเสื้อ ตั๊กแตน กระต่าย ช้าง แมว เช่น พูดถึงสัตว์ เราอาจแบ่งเป็น 2 ประเภท คือ แมลงและสัตว์เลี้ยงลูกด้วยนม ในส่วนของแมลงก็อาจจาแนกได้เป็นผึ้ง,ผีเสื้อ ,ตั๊กแตน ในส่วน 101 ของสัตว์เลี้ยงลูกด้วยนมก็อาจจาแนกเป็น กระต่าย,ช้าง,แมว เป็นต้น Class Hierarchy furniture (superclass) table chair desk "chable" subclasses of the furniture superclass instances of chair 102 4.การตอบสนองต่อเมสเสจ(message) Polymorphism  เป็นพฤติกรรมที่ออบเจ็กต์ต่างๆ เมื่อมีเมสเสจหนึ่งส่งมา ออบเจ็กต์ต่างๆ จะมีการตอบสนองต่อเมสเสจเดียวกันนั้นแตกต่างกันไป ไปให้ “25” กับ “2”  ถ้า 25 และ 2 เป็นออบเจ็กต์ที่เป็นตัวเลข เมสเสจ “+” ที่ส่งไปก็หมายถึงการ เอาตัวเลขมาบวกกันก็จะได้ผลลัพธ์เป็น 27  แต่ถ้า 25 กับ 2 เป็นสตริง เมสเสจ “+” ก็จะเป็นการรวมตัวอักษรผลลัพธ์ที่  เช่น เราส่ง Message “+” ได้ก็จะเป็น 252 เป็นต้น 103 • Polymorphism (“many forms”) The ability to hide different implementations behind a common interface. The ability for two or more objects to respond to the same request, each in its own way.  H 2O = water, ice, steam (liquid, solid, vapor)  Eating Door #1 Door #2 Door #3 versus Door #1 #2 #3 ตัวอย่าง Polymorphism White Black 105 ตัวอย่าง Polymorphism 3 ภาพเหลี่ยม 5 4 LINK ตย.code 106 Polymorphism  The ability to hide many different implementations behind a single interface Manufacturer A OO Principle : Encapsulation Manufacturer B Manufacturer C 107 การส่งข่าวสารหรือ Message  วิธีการหรือกลไกในการสื่อสารระหว่าง Object  ตย. ลูกค้า เขียนใบฝาก ส่งเงินพร้อมใบฝาก ให้พนักงานธนาคาร  พนักงานธนาคาร ขอตรวจสอบข้อมูลการฝาก โดยดูจากใบฝากกับเงินให้ ตรงกัน  Object พนักงานธนาคาร ส่ง Message ไปยัง Object SavingSlip  กระบวนการติดต่อระหว่าง Object เหล่านี้เพื่อให้บรรลุวัตถุประสงค์ เรียกว่า การส่งข่าวสารหรือ Message นั้นเอง 108 Messages 109 Interface & Implementation 110 Interface • กลไกพื้นฐานที่ Object ใช้เป็นสื่อกลางให้ Object อื่นๆ • ติดต่อหรือเรียกใช้บริการ(method) ของ Object • โดยปกติการออกแบบ Class จะระบุ Interface • ของ Object ให้เหมาะสม ตย. ผู้ดูทีวี  เปิด ปิด เปลี่ยนช่อง ไม่จาเป็นทราบการทางานแสดงภาพ Interface ทีวี คือ เปิด ปิด นั่นเอง 111 ตย. เราต้องการข้อมูล(Attributes) ของ Object ใดๆ • เพียงกาหนดเรียกใช้ Method และ Method  ส่งข้อมูล (Attribute) กลับมาให้ • Method จะถูกเรียกว่า Interface กาหนด= Public 112 Implementation • เป็นส่วนรายละเอียดการทางานของ Method ของ Object ใดๆ Interface Implementation อาจเปลี่ยน จากผลิตด้วยพลังนิวเคลียมาเป็นถ่านหิน 113 Inheritance 114 Inheritance Inheritance – the concept wherein methods and/or attributes defined in an object class can be inherited or reused by another object class. 115 Inheritance • เป็นการที่ class ใดๆ ยอมให้มีการสืบทอด(Inherit) ทั้ง คุณสมบัติ(Attribute) และพฤติกรรม(Behaviors)ไปยัง Class อื่น 116 Super Classes & Sub Classes 117 Super Classes และ Sub Classes • Super Classes เป็น Class ใดๆ ที่จัดเก็บลักษณะที่เหมือนกัน ได้แก่ Attribures และ Method ของทั้ง Super class และ Sub Class • ตย. Class Mammal จัดเก็บสิ่งเหมือนกัน eyeColor และ getEyeColor ไว้สาหรับสืบทอดไปยัง Class ที่อยู่ในโครงสร้างลาดับชั้นการสืบทอดคุณสมบัติในระดับต่าลงไปเรียก Sub Class 118 • Is-a & Has-a Relationships 119 “Is-a(Is-A-Kind-Of) Relationships กาหนด Method draw ให้กับรูปทรงทุกรูปทรง เมือต้องการวาดรูปทรงเรขาคณิต ก็เรียกใช้ ่ บริการ Method draw เท่านั้น class รูปทรงที่ต้องการก็จะวาดรูปร่างด้วยตัวเอง โดยอยู่บนพื้นฐานการรับผิดชองแต่ละ class ที่ถูกเรียกใช้ = หลัก Polymorphism 120 “Is-a(Is-A-Kind-Of) Relationships 121 Has-aหรือ Whole/Part Relationships • สิ่งที่เกิดจากการรวมตัวขององค์ประกอบย่อยๆ 122 คิดอย่างไรจึงจะได้สิ่งที่เรียกว่า “Object” Break Time – 15 minutes 123 คิดอย่างไรจึงจะได้สิ่งที่ เรียกว่า “Object” 124 คิดอย่างไรจึงจะได้สิ่งที่เรียกว่า “Object” ☺1.ความแตกต่างระหว่าง Interface กับ Implementation (กล่าวไปบ้างแล้ว) ☺2.คิดเป็นนามธรรมไม่จาเพาะเจาะจงในสิ่งที่คิด (Abstract Thinking) เมื่อออกแบบ Interface 125 ต้องการให้เห็นหรือไม่เห็นอะไร 1.Interface กับ Implementation อีกตัวอย่าง การขับรถยนต์ ฟังอธิบายประกอบ 126 1.Interface กับ Implementation 127 1.Interface กับ Implementation 128 2.คิดเป็นนามธรรมไม่จาเพาะเจาะจงในสิ่งที่คิด(Abstract Thinking) เมื่อออกแบบ Interface (อธิบายประกอบ) 129 สรุปแนวคิดเชิงวัตถุ Real-world Object Class Method Polymorphism Hierarchy Encapsulation Abstraction Interface Implementation Is-a & Has-a Relationships etc…. 130 คาถาม ? สาธิต เครื่องมือสนับสนุนประกอบทฤษฎี เพื่อความเข้าใจอย่างเป็นรูปธรรม ติดตั้งส่วนประกอบต่างๆ ตามลาดับฟังอธิบายประกอบ 131 สวัสดี 132

Related docs
Other docs by StuartSpruce
Sample Executive Summary Heartsoft
Views: 364  |  Downloads: 4
WARRANTY BILL OF SALE
Views: 141  |  Downloads: 2
Mom and Dad in the 60 s
Views: 281  |  Downloads: 0
MINUTES OF SPECIAL MEETING OF SHAREHOLDERS
Views: 900  |  Downloads: 60
DIRECTOR CONFLICT OF INTEREST RESOLUTIONS
Views: 222  |  Downloads: 3
Transcript of Kansas Nebraska Act
Views: 108  |  Downloads: 1
LANDLORDS NOTICE TO VACATE
Views: 481  |  Downloads: 7
28novleft[0][0]
Views: 130  |  Downloads: 0
SamplePressRelease
Views: 185  |  Downloads: 2
Place of business facilities and equipment
Views: 204  |  Downloads: 1
Prepared food franchise agreement
Views: 365  |  Downloads: 29
meditationforhealthpurposes
Views: 195  |  Downloads: 2
Commercial Net Lease for Entire Building
Views: 354  |  Downloads: 11