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