Post on 29-Feb-2020
transcript
บทท 1 : แนวคดเกยวกบการเขยนโปรแกรมเชงวตถ( Object Oriented Programming Concept)
By : Dr.Nattapong Songneam
http://www.siam2dev.net
siam2dev@hotmail.com
xnattapong@hotmail.com
Last update 20-03-2560
Agenda
คาอธบายรายวชา
แนวคดการเขยนโปรแกรมเชงวตถ
โปรแกรมภาษาเชงวตถ
Object Orientation
class & Object
Encapsulation
Polymorphism
Inheritance
คาอธบายรายวชาการเขยนโปรแกรมเชงวตถ (4122309)
การพฒนาระบบงานทางคอมพวเตอรดวยวธการของเทคโนโลยเชงวตถ การสรางชนดขอมล คลาสคณสมบตของวตถ การรบทอด การหอหม โพลมอรฟซม การวเคราะหและการออกแบบระบบงานเชงวตถ API (Application Programming Interface) ของภาษาทใชในการเขยนโปรแกรมเชงวตถ และการพฒนาโครงงานเชงวตถ
แนวคดของการเขยนโปรแกรมเชงวตถ
โปรแกรมภาษาเชงวตถ (Object-Oriented Programming Language : OOPL)
ภาษาเชงวตถนไดเรมมมาตงแตกอนป ค.ศ. 1960 และภาษาทเปนตนแบบในขณะนนคอ ภาษา Simula ทใชเปนหลกการของ Object ในการสรางโปรแกรม ทาใหระบบในการเขยนโปรแกรมมลกษณะทเขาใกลกบความคดมนษยในโลกความเปนจรงมากขน ตอมาภาษา Smalltalk กไดรบการพฒนาเขามาแทนท Simula
โดยทมผคนมากมายทเชอวา Smalltalk คอภาษาเชงวตถ Programming อยางแทจรง ตอมาภาษา C++ กไดเกดขน ดวยหลกการเชงวตถเชนกน ภาษา C++ เปนภาษาทไดรบความนยมคอนขางมาก มการนาไปใชงานอยางกวางขวางในวงการตางๆ แตปจจบนภาษา java ไดเขามามบทบาทมากขนและเหมอนวาจะเขามาแทนท C++ ในไมชา ดวยความสามารถหลายๆ อยางของภาษา java ทสามารถลดขอเสยของ C++ ได
โปรแกรมภาษาเชงวตถ (Object-Oriented Programming Language : OOPL)
Object Orientation
Object Orientation หมายถง การใช Object เปนตวหลกเพอการพจารณาความเปนจรงตางๆ ทเกดขนในโลกดวยการมองทกๆ สงในโลกใหเปนวตถทงหมด และมองวา กจกรรมทงหมดทเกดขนในโลกนเกดจากความสมพนธและปฏสมพนธระหวางวตถ
การมองทกสงในโลกใหเปนวตถ เปนการทาใหปญหาทเปนนามธรรม (Abstraction) กลายมาเปนรปธรรม เพอทาใหคอมพวเตอรสามารถแกปญหาเหลานนไดดวยการพฒนาเปนซอฟตแวร และการพฒนาซอฟตแวรทมการนาเทคโนโลย Object มาใชงานกคอ การโปรแกรมเชงวตถ (Object –Oriented Programming) นนเอง
Object Orientation
Object – Oriented Programming (OOP) หรอ การโปรแกรมเชงวตถ หมายถง การเขยนโปรแกรมทประกอบไปดวยกลมของ Object ซงแตละ Object จะถกจดกลมอยในรปของคลาส (Class) โดยทแตละคลาสสามารถมการถายทอดลกษณะ (Inheritance) กนลงมาอยางเปนลาดบ (Hierarchy)
Object – Oriented Programming (OOP)
คณสมบตการเขยนโปรแกรมเชงวตถ
1. ความสามารถในการสบทอด (Inheritance)
2. ความสามารถในการหอหม(Encapsulation)
3. ความสามารถในการแปลงราง (Polymorphism)
4. ความสามารถในการจดการโครงสรางขอมลแบบเชงนาม (Abstract)
ความหมายของวตถ (Object)
วตถ (Object) คอ ตวแทนของบคคล สถานท หรอสงของทสนใจในเหตการณหนง ซงอาจจบตองไดหรอจบตองไมได
วตถ(Object) เปนองคประกอบสาคญของการเขยนโปรแกรมทสามารถรบคาและแสดงสงคาได และจากนยาม Object คอตวแทนของสงของทอยในโลกของความเปนจรง ซงอาจเปนสงทจบตองไดหรอไมได จะตองมคณลกษณะ (Attribute) ทบงบอกวาเปน Object ของอะไร และมพฤตกรรม (Behavior) ทบงบอกใหทราบวา Object นนทาอะไร ดงนน Object จะสามารถตอบสนองตอสงทกระทาในการรองขอสงตางๆ ได
ความหมายของวตถ (Object)
วตถ
Attributes
Function
เกาอ
อาจารย
นกศกษา
คอมพวเตอร
แอปเปล
Tangilbe
wh h
b
r
ลกษณะทวตถจะตองม
1. Identity คอ เอกลกษณเฉพาะตวททาให Object ของคลาสหนงๆ แตกตางจาก Object ของอกหนงคลาสหนง ซงในภาษาจาวา identity จะหมายถง Attribute หรอตวแปร (Variable)
2. State คอสถานะของ Object ณ เวลาหนงๆ ซงสามารถเปลยนแปลงไดเมอมการกระตนจาก Object อนโดยการสง Message ในภาษาจาวา State จะหมายถงคาของ Attribute (Value of Attribute)
ลกษณะทวตถจะตองม
3. Behavior คอ พฤตกรรมท Object กระทาและตอบสนองทกครง โดยการกระตน Object อนโดยการสง Message ตอกนในภาษาจาวา Behavior กคอ Method
ลกษณะทวตถจะตองม
ในทาง OOP คณสมบตของ Object (identity + behavior) ทคลายกนจะถกจดไวในคลาสเดยวกน ดงนนการแยกแยะ Object ทสรางจากคลาสเดยวกนจงใช State ในการพจารณา เชน ชอของ Object (คาของตวแปร “name”) เปนตน สวนการแยกแยะ Object ทสรางจากคลาสตางกน จะใช identity และ Behavior ในการพจารณาเพราะ identity และ behavior ของ Object ตางกนทาใหจดอยตางคลาสกนนนเอง
แนวคดในการเขยนโปรแกรม(Programming Concepts)
แนวความคดทใชในการเขยนโปรแกรมในปจจบนจะใช 2 แนวความคดหลกๆ ไดแก แนวความคดการเขยนโปรแกรมแบบโครงสราง และแนวความคดเชงวตถ
แนวความคดการเขยนโปรแกรมแบบโครงสราง (Structured Programming Concept)
แนวความคดน เป นการจดการคาสงต างๆ ให มรปแบบและมาตรฐานทสามารถเขยนโปรแกรมไดงาย อกทงยงมการตรวจสอบการทางานของโปรแกรมไดโดยไมยงยาก เมอเขยนโปรแกรมกเหมอนกบการเขยนหนงสอหรอการอานหนงสอ คอมจดเรมตนจากซายไปขวา และจากบนลงลางเหมอนการอานหนงสอ
แนวความคดเชงวตถ (Object-Oriented Programming Concept)
เปนการเขยนโปรแกรมเพอใหเปนไปตามหลกการเชงวตถ โดยผเขยนโปรแกรมตองพยายามมองรปแบบวตถใหออกกอน ซงตองอาศยจนตนาการพอสมควร
• แนวคดการเขยนโปรแกรมแบบดงเดมมกนยมใช การเขยนโปรแกรมเชงกระบวนการ (Procedural Programming) ซงใหความสาคญกบขนตอนกระบวนการททา โดยแบงโปรแกรมออกเปนสวนๆตามลาดบขนตอนการทางาน แตแนวคดการเขยนโปรแกรมเชงวตถนนใหความสาคญกบ ขอมล(data) และ พฤตกรรม(behavior) ของวตถ และความสมพนธกนระหวางวตถกนมากกวา
เปรยบเทยบแนวคดระหวางการเขยนโปรแกรมเชงกระบวนการ และเชงวตถ
ตวอยางตขายเครองดมอตโนมต
วธการคดแบบการเขยนโปรแกรมเชงกระบวนการ
เมอมการหยอดเหรยญเขาต:
ตรวจสอบจานวนเหรยญและชนดของเหรยญ
แสดงผลชนดของนาทสามารถเลอกซอได
ตรวจสอบจานวนนากระปองทมอยในต
รบผลการเลอกชนดนา
สงนาทเลอกออกมาจากชอง
จดเกบเงนเขาระบบ
หากมเงนทอน ใหทอนเงนทเหลอ ทชองรบเงนทอน
วธการคดแบบการเขยนโปรแกรมเชงวตถ
• ตขายเครองดมอตโนมต ประกอบดวยสวนประกอบตางๆไดแก หนวยตรวจสอบและจดการเรองเงน หนวยจดการเครองดม หนวยแสดงผลและรอรบคาสง
• หนวยตรวจสอบและจดการเรองเงน มขอมลเกยวกบเงนทไดรบ และเงนทมอยในระบบ สามารถรบและตรวจสอบเงนทหยอดเขามาได และทอนเงนได
• หนวยจดการเครองดม มขอมลชนดของเครองดม จานวนเครองดม สามารถจดเตรยมชนดเครองดมทพอกบเงนทหยอด และสามารถจายเครองดมออกมาจากตได
• หนวยแสดงผลและรอรบคาสง มหนาทรอรบคาสง และแสดงผลเงนทหยอดเขามา
จงเขยนขนตอนการทางานของตทอนเงน
• ต.ย. สมมต ราคา สนคา 125.75 จายแบงคหนงพนบาท (1000) จะตองทอนออกมาเปน 874.25 บาท
แบงค 500 จานวน 1 ฉบบ
แบงค 100 จานวน 3 ฉบบ
แบงค 50 จานวน 1 ฉบบ
แบงค 20 จานวน 1 ฉบบ
เหรยญ 10 จานวน 0 เหรยญ
เหรยญ 5 จานวน 0 เหรยญ
เหรยญ 1 จานวน 4 เหรยญ
เหรยญ .50 จานวน 0 เหรยญ
เหรยญ .25 จานวน 1 เหรยญ
ขนตอนวธ
1. ตรวจสอบจานวนเงนและชนดของเงนทรบมา
2. ตรวจสอบราคา และ จานวนสนคา
3. คานวณจานวนเงนและแสดงผลจานวนเงนทงหมด
4. แสดงจานวนเงนทอนทงหมด
5. ทอนเงนโดยเลอกจากชนดและจานวนเงนมากสดกอน
6. ทอนเงนและชนดเงนตามเศษทคานวณแลว
7. จายสนคาตามรายการทเลอก
กลม 1
Algorithm กฏขอแรก
1. ตองมเรมตน
2. ....
3. ....
4. ตองมสนสด
START
STOP
GIGO:Gabag In Gabag out
Algorithm กฎขอสอง 1 บรรทด 1 งาน 1 job สนกะทดรด ไดใจความ หรอ ทคอมฯสามารถทางานได
1. ตองมเรมตน
2. ....
3. ....
4. ตองมสนสด
START
STOP
Algorithm
ขนตอนแรก ตอง
รบจานวนเงนเขามา
รบ ราคาสนคา ทตองจาย
คด เงนทตอง ทอน คดยงไง .....
เงนทอน = เงนทรบเขามา - ราคาสนคา
• INPUT• PROCESS• OUTPUT
Exchange = Money - Price
Algorithm• 874.75 ทาอยางไรถงจะหาแบงค 500
เศษทเหลอ
MOD%
/ DIV ไมสนใจเศษ
\ MOD เอาเศษทเหลอ
B500 = Exchange / 500Tmp = Exchange % 500
274.751
Algorithm• 274.75 ทาอยางไรถงจะหาแบงค 100
เศษทเหลอ
MOD%
/ DIV ไมสนใจเศษ
\ MOD เอาเศษทเหลอ
B100 = Exchange / 100Tmp = Exchange % 100
274.751
การเขยนโปรแกรมเชงวตถ(Object – Oriented Programming)
การเขยนโปรแกรมเชงวตถ เปนวธการเขยนโปรแกรมแบบใหม ซงจะเรยกโปรแกรมยอยททาหนาทเฉพาะวา Object และยงรวม data เขาเปนสวนของ Object ดวย นอกจากนโปรแกรมเชงวตถยงมโครงสรางพเศษนอกเหนอจาก Procedure Programming หรอ Module Programming คอ
การทางานของแตละ Object จะไมสนสดลง เมอกระบวนการทางานของโปรแกรมจบการทางานบน Object นนแลว ซง Object ทอยในโปรแกรมเหลาน พรอมเสมอในการเรมทางานตอตาแหนงเดมเมอเกดการเรยกใชงาน Object อกครง ซงแตกตางจากการเขยนโปรแกรมในแบบอนๆ ทโปรแกรมยอยจะตองเรมการทางานใหมเมอถกเรยกใชอกครง ดงนนเทคนคนจงชวยลดปญหาทเกดขนจากการเขยนโปรแกรมดวยวธอนๆ ได
การเขยนโปรแกรมเชงวตถ(Object – Oriented Programming)
Object 1
data
Object 2
data
Object 3
data
Object 4
data
แตละ Object สามารถตดตอสอสารกนไดโดยการสง
Message ไปท Object อน
แนวคดทสาคญของการเขยนโปรแกรมเชงวตถ
• คลาส (Class) - ประเภทของวตถ เปนการกาหนดวา วตถ จะประกอบไปดวย ขอมล(data) หรอคณสมบต(property) และ พฤตกรรม(behavior)หรอการกระทา(method) อะไรบาง ซง คลาส (เชน มนษย) เปนโครงสรางพนฐานของการเขยนโปรแกรมเชงวตถ
Class
แนวคดทสาคญของการเขยนโปรแกรมเชงวตถ
Class and Objects
แนวคดทสาคญของการเขยนโปรแกรมเชงวตถ
• วตถ (Object) - โดยมากจะเรยกวา ออบเจกต คอ ตวตน(instance) ของ คลาส(เชน นายทกษณ, นายสนธ) ซงจะเกดขนระหวาง run-time โดยแตละ ออบเจกต จะมขอมลเฉพาะของตวเอง ทาให ออบเจกต แตละ ออบเจกต ของ คลาส ซงใช source code เดยวกนมคณลกษณะและคณสมบตทแตกตางกน
Object
แนวคดทสาคญของการเขยนโปรแกรมเชงวตถ
Encapsulation• Encapsulation - การปดบงขอ มล เปนว ธการ
กาหนดสทธในการเขาถงขอมล หรอการกระทากบ ออบเจกต ของ คลาสนนๆ ทาใหแนใจไดวาขอมลของออบเจกตนนจะถกเปลยนแปลงแกไขผานทาง methods หรอ properties ทอนญาตเทานน (เชน การกาหนดตาแหนงทางการเมอง เปน public method ทผอนสามารกระทาได สวนการลาออกจากตาแหนง เปน private method ทมแต ออบเจกต ของ คลาส เทานนทจะสามารถทาได แตการกดดนและการขบไลสามารถสราง data ทอาจจะสงผลเกดการลาออกไดเชนกน)
แนวคดทสาคญของการเขยนโปรแกรมเชงวตถ
• Inheritance - การสบทอดคณสมบต เปนวธการสราง คลาสยอย ทเรยกวาซบคลาส (subclass) ซงจะเปนกาหนดประเภทของวตถใหจาเพาะเจาะจงขน ซง ซบคลาส จะไดรบถายทอดคณสมบตตางๆมาจากคลาสหลกดวย (เชน คลาส มนษย สบทอดมาจาก คลาส สงมชวต)
Inheritance
แนวคดทสาคญของการเขยนโปรแกรมเชงวตถ
Inheritance
แนวคดทสาคญของการเขยนโปรแกรมเชงวตถ
Inheritance
แนวคดทสาคญของการเขยนโปรแกรมเชงวตถ
•Abstraction - นามธรรม เปนการแสดงถงคณลกษณะและพฤตกรรมของ object เทาทจาเปนตองรบรและใชงาน โดยซอนสวนทเหลอเอาไวเพอไมใหเกดความสบสน เชน ตามปกตแลว นายนฐพงศ จดเปนตวตนของ คลาสมนษย ซงจะมพฤตกรรม การกระทาทกอยางทตามทกาหนดไวตามโครงสรางของ คลาส มนษย แตในบางกรณทนาไปใชงาน เราไมตองการใหเกดการสบสนตอการใชงานหรอการจดประเภทมากเราสามารถจดการหรอใชงาน ออบเจกต นายนฐพงศ ใหอยในรปของสงมชวต กได
Abstraction
แนวคดทสาคญของการเขยนโปรแกรมเชงวตถ
•Polymorphism - ภาวะทมหลายรปแบบ เปนวธการกาหนดรปแบบการกระทาทเหมอนกนแตไดผลทแตกตางกน เชน การเปลงเสยง เปน method หลกของ คลาส สงมชวต ซงมคลาส มนษย และคลาสสนข เปน ซบคลาส แตผลของการเปลงเสยงของออบเจกตจากคลาสทงสองจะออกมาไมเหมอนกน
Polymorphism
แนวคดทสาคญของการเขยนโปรแกรมเชงวตถ
ตวอยางโปรแกรม
import javax.swing.*;
import java.awt.*;
public class CardView extends JLable
{
private ImageIcon icon;
public CardView(VCard card)
{
getImage(card.getImage());
setIcon(icon);
setBackground(Color.white);
setOpaque(true);
}
Object 1
data
private void getImage(String name)
{
java.net.URL url =
this.getClass().getResource(name);
icon = new ImageIcon(url);
}
}
Object 2
data
…Break..
แนวคดการเขยนโปรแกรมเชงวตถเปนการจาลองความเปนจรงในชวตความเปนอยของมนษยทจะประกอบดวย คน สตว
สงของ และใชสงตางๆ เพอแกปญหา โดยแตละสง มหนาทในการแกปญหานน ๆ
ตองการหาความบนเทงดวยดนตรกตองมสงตางๆ คอเครองดนตรและคนเลนดนตร เปนตน
Structural Programming VS Object Oriented Programming
แกไขปญหาดวยโปรแกรมททาตามลาดบขนตอนทไดกาหนดไว
มการเรยกใชโปรแกรมยอยทสรางขน
แกปญหาโดยมองสงตาง ๆทอยในโปรแกรมเปนวตถ
วตถแตละชน มคณสมบต และความสามารถแตกตางกนออกไป
วตถตดตอการดวยวธการสงขาวสารถงกน
#include <stdio.h>
main () {
int width , length, area ;
width = 10 ;
length = 5 ;
area = width * length ;
printf (“Area = %d\n”,area) ;
return 0
}
Structural Programming VS Object Oriented Programming
แนวคดของเอลน เคย (Alan Kay)
ทกๆ สงเปนวตถ
โปรแกรม คอ กลมของวตถทสงสารบอกกนเพอทางาน
วตถแตละวตถมหนวยความจา
วตถตองมชนด
วตถทจดอยในประเภทเดยวกนยอมไดรบขาวสารเหมอนกน
Alan key เปนผหนงทพฒนาตวแปร small Talk ซงเปนตนแบบของการเขยนโปรแกรมเชงวตถ ไดใหนยามของภาษาเชงวตถไวดงน
ทกๆ สงเปนวตถ
องคประกอบของโปรแกรมคอมพวเตอรทก ๆ สวนจะตองเปนวตถซงกฎขอนเองททาใหลามแปลภาษาสวนมากรวมทง JAVA ดวย ไมเปนภาษาเชงวตถแบบบรสทธเพราะในลามแปลภาษา JAVA ยงมบางสวนทไมเปนวตถ เชน การกาหนดตวแปร เปนตน
Object
โปรแกรมคอกลมของวตถ
โปรแกรมในความหมายของการเขยนโปรแกรมเชงวตถ กคอ กลมของวตถทสงขอความขาวสาร(Message) ถงกนและกนเพอบอกใหวตถทางาน
วตถมหนวยความจา
• วตถในความหมายของการเขยนโปรแกรมเชงวตถ จะตองมหนวยความจาของตวเองหรอนนคอสวนทเกบขอมลสวนของวตถนนๆ เองซงเราเรยกวา attribute
• สวนของขอมลนอาจจะประกอบขนจากวตถอนๆ ได
• เปนทมาของการเกดคณสมบตการถายทอดและคณสมบตขององคประกอบคอมโพสต
MobilePhone
String bandnameButton buttonScreen screenAntenna antennaSimm simNet
call()receive()hangup()sendSMS()
Attribute
หนวยความจาคอมพวเตอร
วตถจะตองจดอยในกลมหรอชนด
ชนดของวตถดงกลาวกคอคลาส (Class)
ในการเขยนโปรแกรมเชงวตถจะตองเขยนคลาสขนมากอนเสมอ แลวจงจะสรางวตถจากคลาส ดงนนวตถจงจะตองอยในคลาสใดคลาสหนง
ดงนนคลาสเปรยบเหมอนแมพมพ สวนวตถกคอสงทเกดจากแมพมพ วตถทเกดจากคลาสเดยวกนจงมคณสมบตพนฐานเหมอนกน
ตวอยางชนดของวตถและวตถ
MobilePhone
String bandnameButton buttonScreen screenAntenna antennaSimm simNet
call()receive()hangup()sendSMS()
:siemens
:ericsson
:nokia
วตถประเภทเดยวกนยอมไดขาวสารเหมอนกน
• วต ถ ทอย ในประ เภท เดยวกนยอม ได ข า วสาร เหมอนกนคณสมบตขอนทาใหการเขยนโปรแกรมเชงวตถมประสทธภาพเพมขนเพราะชนดของวตถมไดกาหนดหรออยอยางโดด ๆ แตสามารถจดเปนกลม ผเขยนคาสงสามารถกาหนดชนดยอย ๆของวตถไดอก เชน คลาสคอ shape เราสามารถแตกออกเปนชนดทจาเพาะลงไปเปน Circle, Triangle, Rectangle เปนตนดงนนเมอวตถในคลาส Circle สามารถไดรบขาวสารเหมอนกบTriangle และ Rectangle
แนวคดทเปนประโยชนจากการโปรแกรมเชงวตถ
การซอนรายละเอยด (information hiding)การเชอมตอ (Interface)การนาวตถมาใชใหม (Reusable)การพองรป: หนงรปหลายพฤตกรรม (Polymorphism)
การซอนรายละเอยด(Information Hiding)
• มผสงเกตเหนวาในชวตประจาวนของเรานน ไมจาเปนตองทราบหรอรทกเรองกสามารถใชงานสงของนนๆ ได เชน
โทรทศนทมอยตามบาน เรา
ไมตองทราบการทางานของ
อปกรณภายในของมน แต
เรากสามารถเปดเครองและ
ดรายการโปรดของเราได
เพยงรวธการกดปมตางๆ
การเชอมตอ(Interface)
• โดยปรกตจะเชอมตอระหวางผใชกบคอมพวเตอร เรยกวา user interface
แตคาวาอนเตอร เฟสสาหรบวตถคอ สวนทบอกวาวตถนนใหบรการหรอสามารถทาอะไรไดบาง
Information hiding
ชฟมสวนทใชงานการตดตอกบอปกรณภายนอก interface
Information hidingเราจะไมรการทางานภายในของชฟเพราะถกซอนรายละเอยดไวแตยงสามารถใชงานตามปกตหากชฟชนนเสยกสามารถหาตวอนมาเสยบแทนไดเลย
การนาวตถมาใชใหม(Reusable)
• จดประสงคใหญของการเขยนโปรแกรมเชงวตถกคอการนาสวนตางๆ ของวตถทสรางขนกลบมาใชใหมหรอทเรยกในภาษาองกฤษวา “reuse” เมอมวตถถกสรางขนมา กสามารถนาวตถตางๆ มาประกอบกนเปนวตถอกชนดหนงได เพอใหวตถใหมมความสามารถมากกวาเดม เชนกรณของรถยนตสามารถประกอบขนจาก เครองยนต ตวถง ประต และลอ เปนตน
ตวอยางวตถทเกดจากวธคอมโพสต
การพองรป (Polymorphism)
• รากฐานของการพองรปคอคณสมบตการถายทอด
• คณสมบตการถายทอดยนยนไดวาคลาสลกทเกดจากคลาสแมเดยวกนยอมมคณสมบตเหมอนกน
• เปนทมาของหนงรปหลายพฤตกรรม
คลาสแมคอ Shapeคลาสลกคอ Circle, Triangle, Rectangle มคณสมบตเหมอนคลาสแมทกประการ
การถายทอดใหเกดลกษณะของพองรป
Shape
+draw()+erase()
Circle
+draw()+erase()
Line
+draw()+erase()
Rectangle
+draw()+erase()
มารจกคลาสและวตถกน
• คลาสเปนเหมอนสวนของแมพมพ เพอบอกลกษณะวาวตถในคลาสนมลกษณะและพฤตกรรมเปนอยางไร
• วตถเปนสงทถกสรางขนมาจากคลาสเพอใชงาน กาหนดคาตางๆ สงขอความสงใหวตถทางาน
คลาสสเหลยมผนผาคณสมบต:กวาง, ยาวเมธทอด:คานวณพนท
วตถA:สเหลยมผนผากวาง 2 ยาว 3
เมธทอด:คานวณพนท
เปรยบเทยบคลาสกบวตถ
วตถในโลกความจรง (Real-world objects)วตถในโลกความจรง มองคประกอบสาคญสองสงคอ
•สถานะ (State)
•พฤตกรรม (behavior)
สถานะ ชอ , ส , สายพนธ
พฤตกรรม เหา , วง , กระดกหาง
สถานะ ตาแหนงเกยรปจจบน ,ความเรวรอบปจจบน , ความเรวรถ
พฤตกรรม เปลยนเกยร , เปลยนความเรวรอบ,เบรค
สถานะ ปด , เปด
พฤตกรรม กดปด , กดเปด
สถานะ ปด, เปด , ระดบเสยง, สถานปจจบน
พฤตกรรม กดปด, กดเปด , ลดเสยง ,เรงเสยง ,
คนหาสญญาณ
โคมไฟ
วทย
วตถในโปรแกรม (Software objects)
คลายคลงกบวตถในโลกความจรง โดยจะประกอบไปดวย สถานะ และ พฤตกรรมเชนเดยวกน
• เกบสถานะของวตถไวใน Field หรอ Attribute (ตวแปรในโปรแกรม)
• และแสดงพฤตกรรมโดยผาน Method (ฟงกชนการทางานในโปรแกรม)
การทางานระหวาง Method กบ Field
• Method ทาหนาทเปลยนแปลงสถานะ(Field)ซงอยในวตถนน ๆ และทาหนาทตดตอระหวางวตถกบวตถ
Method Change gears ทาหนาทเปลยน เกยร
Method Brake ทาหนาทหยดรถ
Method Change cadence ทาหนาทเปลยนความเรวรอบการปน
ประโยชนของการใชงาน Object ในโปรแกรม•Modularity : โคดของโปรแกรมแบบ Object สามารถแยกสวนกนเขยนไดอยางเปนอสระ
• Information-hiding : รายละเอยดและขอมลถกซอนอยภายใน Object การปรบเปลยนขอมลภายใน Object ตองทาผาน Method เทานน
•Code re-use : โคดของโปรแกรมสามารถนากลบมาใชใหมไดอยางสะดวก ทาใหพฒนาโปรแกรมไดอยางรวดเรว
ดาวนโหลดเครองมอในการพฒนาภาษาจาวา
• ดาวนโหลดชดพฒนาภาษาจาวาทเวบต
http://java.sun.com/j2se
Java virtual machine : JRE (Java Runtime Environment)Java Developer Kit : JDK
โปรแกรม NetBeanIDE
https://www.netbeans.org/
กจกรรม
• ใหนกศกษายกตวอยางวตถในโลกความจรง 1 ตวอยาง แลวแสดงใหเหนวา สถานะ (State) และ พฤตกรรม(Behavior) ของวตถนนมอะไรบาง
แบบฝกหดบทท 1
1. จงบอกประโยชนของการเขยนโปรแกรมเชงวตถ
2. สถานะของออบเจกตหมายความวาอะไร?
3. จงจาแนกสงตอไปนวาสงใดเปนคลาส สงใดเปนออบเจกต • สมด, บานเลขท 97/8, ขนม, นายนฐพงศ สงเนยม , รถยนต , iPhoneX
4. จงหาขอมลและพฤตกรรมทเปนไปไดของออบเจกตของคลาสตอไปน• สนข, รถยนต, โซฟา
5. จงแยกแยะวาสงใดเปนซปเปอรคลาสและซบคลาส • ตนไม, ไมดอก• พนกงาน, ผจดการ• เคก, ขนม
OOP 2/2550 ดร.สขสถต มสถตย 81