บทที่ 1 : แนวคิดเกี่ยวกับการ...

Post on 29-Feb-2020

5 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

top related