by : dr.nattapong songneam ...siam2dev.net/e_learning/oop/lec01_oop_concept_last... · c++ ....

Post on 07-Aug-2020

0 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

By : Dr.Nattapong Songneamhttp://www.siam2dev.netsiam2dev@hotmail.comxnattapong@hotmail.com

Last update 16-11-2560

การพฒนาระบบงานทางคอมพวเตอรดวยวธการ

ของเทคโนโลยเชงวตถ การสรางชนดขอมล คลาส

คณสมบตของวตถ การรบทอด การหอหม โพลมอรฟซม

การวเคราะหและการออกแบบระบบงานเชงวตถ API

(Application Programming Interface) ของภาษาท

ใช ในการเขยนโปรแกรมเชงวตถ และการพฒนา

โครงงานเชงวตถ

สงกอนสอบ / สป. สดทายของการเรยนการสอน

พฒนาระบบงานดานเชงวตถ ดวยภาษา จาวา โดย

ใชโปรแกรม netbean IDE

ประกอบไปดวย

◦ ตวโปรแกรม / Source Code

◦ เอกสารประกอบโปรแกรม / รปเลมรายงาน

การเขยนโปรแกรมคอมพวเตอรม 2 แบบ

◦ การเขยนโปรแกรมแบบโครงสราง

◦ การเขยนโปรแกรมเชงวตถ

ภาษาเชงวตถนไดเรมมมาตงแตกอนป ค.ศ. 1960 และภาษาทเปนตนแบบในขณะนนคอ ภาษา Simula ทใชเปนหลกการของ Object ในการสรางโปรแกรม ทาใหระบบในการเขยนโปรแกรมมลกษณะทเขาใกลกบความคดมนษยในโลกความเปนจรงมากขน ตอมาภาษา Smalltalk กไดรบการพฒนาเขามาแทนท Simula

ในป 1967 ภาษา Simula67 ถกพฒนาทนอรเวย เพอชวยในการเขยนโปรแกรมสาหรบจาลอง (Simulation)

โดยทวไประบบทซบซอนจะประกอบดวยวตถจานวนมากททางานเกยวของกน โดยการสรางโปรแกรมทจาลองการทางานของแตละวตถไปทละขนจนกวาจะไดคาตอบซงแนวคดนเรยกวา การโปรแกรมเชงวตถ

1990s มภาษาเกาถกเพมเตมในสวนของการโปรแกรมเชงวตถ แตโดยพนฐานของภาษาจงทาใหกลไกไมเปนเชงวตถอยางสมบรณ

การเขยนโปรแกรมแบบโครงสราง คอ การเขยนคาสงเรยงตอกนไปเรอยๆ ทละ

บรรทด โปรแกรมจะเรมทางานจากคาสงแรกสดเรอยไปจนถงคาสงทายสด เปนอน

จบโปรแกรม อาจมการสรางเปนโปรแกรมยอยๆ ในโปรแกรมใหญบาง เพอลดคาสง

ทซ าซอน

ตวอยางเชน ภาษาเบสก ภาษาโคบอล ภาษาฟอรแทรน ภาษาปาสคาล และ ภาษาซ

การเขยนโปรแกรมเชงวตถ คอ การสรางวตถสมมตขนมากอน แลวเขยนคาสงนยาม

วตถนนจนสามารถทาใหวตถนนทางานตามทตองการได

ซอรสโคดของโปรแกรมเชงวตถแทนทจะเปนคาสงเขยนเรยงตอกนไปเรอยๆ จะเปน

นยามของวตถเขยนเรยงตอไปเรอยๆ แทนและโปรแกรมจะทางานไดเองถาวตถนน

ถกนยามขนอยางเหมาะสม

ตวอยางเชน ภาษาจาวา และภาษาซพลสพลส (ภาษาซพลสพลสเขยนไดทงแบบ

โครงสรางและวตถ)

การเขยนโปรแกรมเชงวตถตองใชเวลาในการศกษานานพอสมควร โดยเฉพาะอยางยง

นกเขยนโปรแกรมตองมความชานาญในการสรางวตถสมมตททางานตามอยางทเรา

ตองการได

โปรแกรมประยกตทใชงานจรงในปจจบนลวนแลวแตเขยนดวยโปรแกรมเชงวตถ

ทงสน

การศกษาการเขยนโปรแกรมเชงวตถจงเปนสงทนกเขยนโปรแกรมรนใหมทกคนควร

จะฝกฝนไว

ขอด : มความกะทดรด

ขอเสย : ตองใชเวลาศกษานาน โดยเฉพาะอยางยงคนทไมใชนกเขยนโปรแกรมมอ

อาชพ เพราะการเขยนโปรแกรมเชงวตถ ไมใชเรองทจะเรยนรไดในเวลาอนรวดเรว

การเนนทปญหาและองคประกอบของปญหาเพอการแกปญหานน เรยกวา Problem

space

เหมอนการจาลองความเปนจรงในชวตความเปนอยของมนษยทจะประกอบดวย คน

สตว สงของ และใชสงตางๆ เพอแกปญหา คอ แตละสง มหนาทในการแกปญหา

Problem Space

หญาในสนามรก

คนตดหญา >> ตดหญา ใชเครองตดหญา

เครองตดหญา >> ตดหญา ทาใหหญาทสงถกตด

ป�ญหา

(Problem)

กาหนดขนตอน

การแกป�ญหาSolution Space

กาหนดป�ญหาเป�น

องคประกอบProblem Space

การเขยนโปรแกรม

แบบโปรซเยอร

การเขยนโปรแกรม

เชงวตถ

ปญหาการหาพนทรปสเหลยมผนผาใดๆ

◦ สามารถหาพนทสเหลยมผนผาโดยใชสตร

พนทสเหลยม = กวาง x ยาว

◦ ดงนน ตองทราบ ความกวาง และ ความยาว ของสเหลยมเสยกอน

รบขอมล

(ความกวางและความยาว

ของสเหลยม)

แสดงพนทสเหลยม

ออกทางหนาจอ

คานวณ

พนทสเหลยม = กวาง x ยาว

ขนตอนการหาพนทรปสเหลยมผนผา

1. ในระบบนจะตองประกอบดวยวตถทจาเปนใดบาง

- หาวตถทเกยวของ เชน สเหลยม ความกวาง ความยาวและพนท

- ตดวตถทมลกษณะเหมอนกนออก

- วเคราะหลกษณะของแตละวตถ เชน สเหลยมควรมสวนประกอบ

เปนตาแหนง ความกวาง ความยาว และพนท เปนตน ดงนนเราสามารถ

รวม พนท ความกวางและความยาว เปนของสเหลยม

- วเคราะหพฤตกรรมของแตละวตถ ตอนนมวตถเดยวสเหลยม

อาจจะตอง คานวณเสนรอบรป คานวณพนท วาดตวเอง เปนตน

วตถสเหลยมผนผา

ความกวาง

ความยาว

พนท

พฤตกรรม

◦ คานวณความยาวเสนรอบรป

◦ คานวณพนท

◦ วาดตวเอง

ตอนนทราบวาจะมวตถใดอยในระบบบาง ขนตอนตอมา คอ ตองหาความสมพนธ

ของแตละวตถ แตในทนมวตถเดยวจงไมตองทา

โดยทมผคนมากมายทเชอวา Smalltalk คอภาษาเชงวตถ Programming อยางแทจรง ตอมาภาษา C++ กไดเกดขน ดวยหลกการเชงวตถเชนกน ภาษา C++ เปนภาษาทไดรบความนยมคอนขางมาก มการนาไปใชงานอยางกวางขวางในวงการตางๆ แตปจจบนภาษา java ไดเขามามบทบาทมากขนและเหมอนวาจะเขามาแทนท C++ ในไมชา ดวยความสามารถหลายๆ อยางของภาษา java ทสามารถลดขอเสยของ C++ ได

โปรแกรมภาษาเชงวตถ (Object-Oriented Programming Language : OOPL)

Object Orientation หมายถง การใช Object เปนตว

หลกเพอการพจารณาความเปนจรงตางๆ ทเกดขนในโลก

ดวยการมองทกๆ สงในโลกใหเปนวตถทงหมด และมองวา

กจกรรมทงหมดทเกดขนในโลกนเกดจากความสมพนธและ

ปฏสมพนธระหวางวตถ

การมองทกสงในโลกใหเปนวตถ เปนการทาใหปญหาทเปน

นามธรรม (Abstraction) กลายมาเปนรปธรรม เพอทาให

คอมพวเตอรสามารถแกปญหาเหลานนไดดวยการพฒนาเปน

ซอฟตแวร และการพฒนาซอฟตแวรทมการนาเทคโนโลย

Object มาใชงานกคอ การโปรแกรมเชงวตถ (Object –

Oriented Programming) นนเอง

10 8 2 7 5 4 7 1 9 24 12 45 6

10 8 7 8 5

4 7 1 9 24

12 45 6

MAX

if data[i] >= data[i+1] thenbegin

elseMAX data[i+1]

end

SWAP

Object – Oriented Programming (OOP) หรอ

การโปรแกรมเชงวตถ หมายถง การเขยนโปรแกรมท

ประกอบไปดวยกลมของ Object ซงแตละ Object จะ

ถกจดกลมอยในรปของคลาส (Class) โดยทแตละคลาส

สามารถมการถายทอดลกษณะ (Inheritance) กนลงมา

อยางเปนลาดบ (Hierarchy)

Object – Oriented Programming (OOP)

1. ความสามารถในการสบทอด (Inheritance)

2. ความสามารถในการเกบซอน (Encapsulation)

3. ความสามารถในการแปลงราง (Polymorphism)

4. ความสามารถในการจดการโครงสรางขอมลแบบเชง

นาม (Abstract)

Transform

Convert

ความงาย จาวากลาวไดวาเปนภาษาทงายตอการศกษา

ภาษาจาวากาจดสวนทมความซบซอนในภาษา C++ ออกไป เชน multiple Inheritance, automatic type conversion, point และ memory management ของ C++ ทาใหภาษาจาวาใชงานงายและมความซบซอนนอยลงกวา C++ มาก

เปนภาษาเชงวตถทสมบรณ

สวน C++ เปนภาษาผสม คอเขยนไดทงแบบ Procedural และ OOP ทสนบสนนหลกการเชงวตถ แตจาวาจะบงคบใหเขยนโปรแกรมไดดวยหลกการเชงวตถเทานน จงถอไดวาจาวาเปนภาษาทสามารถแสดงลกษณะเชงวตถไดอยางชดเจน เชนเดยวกบภาษา Smalltalk

การกนการผดพลาด (Robust)

ภาษาจาวาเปนภาษาทมความคงทน เนองจากภาษาจาวาม

ระบบปองกนและสามารถกาจดความผดพลาดเลกๆ นอยๆ ท

อาจเกดขนไดในระบบ โดยไมตองหยดการทางานของ

โปรแกรมดวยสาเหตเพยงเลกนอยเหลาน นอกจากนภาษาจาวายงไมสนบสนนการทางานโดยใช pointer เพราะ pointer

เปนสาเหตททาใหเกดความผดพลาดไดงาย

ความปลอดภยในการทจะประมวลผล (Secure)

ภาษาจาวาไดรบการพฒนาใหเปนภาษาสาหรบการ

ดาเนนงานบนระบบเนตเวรก ดงนนภาษาจาวาจงไดรบการ

สรางมาใหยดหลกความปลอดภยของขอมลบนระบบเนตเวรก

เปนสาคญ

มลตเธรด (Multithread )

เปนการอนญาตใหโปรแกรมมากกวา 1 โปรแกรมสามารถ

ทางาน ณ เวลาเดยวกนได ทาใหระบบทางานแบบ real-time

ไดมากขน ซงในภาษาโปรแกรมอนๆ การทา Multithreading

นน จะมความซบซอนมาก แตในภาษาจาวาจะสามารถจดการกบ Multithreading ไดอยางงายดาย

Architecture-neutral

จาวาสามารถทางานไดบนทกๆ ระบบ (Platform) เนองจากจาวาจะมการแปลงภาษา 2 ขนตอนคอ

การ Compile และ Interpreter โดยเมอภาษาจาวาไดรบการ Compile ออกมาเปนภาษาของ JVM แลว (Java Virtual Machine หรอ bytecode โดยทเรยกวา bytecode เพราะทกๆ คาสงของ JVM มขนาดเพยง 1 byte เทานน) จะสามารถนาโคดทไดมาไปทางานไดบนเครองใดๆ ทมชดคาสงของ JVM ตดตงอย ดงนนภาษาจาวาจงเปนภาษาทไมขนอยกบระบบใดๆ

• High Performance •

ในภาษาจาวาจะอนญาตใหเขยนโคดจาวาเพอเรยกใชงานโปรแกรมภาษาอนไดดวย เชน ภาษา C++ นอกจากน ในการประมวลผล JVM ไปเปนชดคาสงทสามารถทางานไดกบเครองคอมพวเตอรใดๆ นนจะใชเวลาในการประมวลผลนอยกวาเวลาทใชในการ Compile ภาษาอนๆ

วตถ (Object) คอ ตวแทนของบคคล สถานท หรอสงของทสนใจในเหตการณหนง ซงอาจจบตองไดหรอจบตองไมได

Attributes

Function

เกาอ

อาจารย

นกศกษา

คอมพวเตอร

แอปเปล

Tangilbe

wh h

b

r

1. จบตองได / รปธรรม (Tangible)

◦ คน สงของ ตนไม พช สตว

2. มองไมเหน จบตองไมได (intangle)

◦ กฎหมาย บทเรยน เนอหา ภาพยนตร ...

Object เปนองคประกอบสาคญของการเขยนโปรแกรมท

สามารถรบคาและแสดงสงคาได และจากนยาม Object คอ

ตวแทนของสงของทอยในโลกของความเปนจรง ซงอาจเปนสงทจบตองไดหรอไมได จะตองมคณลกษณะ (Attribute) ท

บงบอกวาเปน Object ของอะไร และมพฤตกรรม (Behavior)

ทบงบอกใหทราบวา Object นนทาอะไร ดงนน Object จะ

สามารถตอบสนองตอสงทกระทาในการรองขอสงตางๆ ได

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 ตางกนทาใหจดอยตางคลาสกนนนเอง

แนวความคดทใชในการเขยนโปรแกรมในปจจบนจะใช 2 แนวความคดหลกๆ ไดแก แนวความคดการเขยนโปรแกรมแบบโครงสราง และแนวความคดเชงวตถ

แนวความคดนเปนการจดการคาสงตางๆ ใหมรปแบบและมาตรฐานทสามารถเขยนโปรแกรมได ง าย อกทงยงมการตรวจสอบการทางานของโปรแกรมไดโดยไมย งยาก เมอเขยนโปรแกรมกเหมอนกบการเขยนหนงสอหรอการอานหนงสอ คอมจดเ รมต นจากซ ายไปขวา และจากบนลงล างเหมอนการอ านหนงสอ

เปนการเขยนโปรแกรมเพอใหเปนไปตามหลกการเชงวตถ โดยผเขยนโปรแกรมตองพยายามมองรปแบบวตถใหออกกอน ซงตองอาศยจนตนาการพอสมควร

แนวคดการเขยนโปรแกรมแบบดงเดมมกนยมใช การเขยนโปรแกรมเชงกระบวนการ (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

1. ตองมเรมตน

2. ....

3. ....

4. ตองมสนสด

START

STOP

GIGO:Gabag In Gabag out

1. ตองมเรมตน

2. ....

3. ....

4. ตองมสนสด

START

STOP

ขนตอนแรก ตอง

รบจานวนเงนเขามา

รบ ราคาสนคา ทตองจาย

คด เงนทตอง ทอน คดยงไง .....

เงนทอน = เงนทรบเขามา - ราคาสนคา

• INPUT• PROCESS• OUTPUT

Exchange = Money - Price

874.75 ทาอยางไรถงจะหาแบงค 500

เศษทเหลอ

MOD%

/ DIV ไมสนใจเศษ

\ MOD เอาเศษทเหลอ

B500 = Exchange / 500Tmp = Exchange % 500

274.751

274.75 ทาอยางไรถงจะหาแบงค 100

เศษทเหลอ

MOD%

/ DIV ไมสนใจเศษ

\ MOD เอาเศษทเหลอ

B100 = Exchange / 100Tmp = Exchange % 100

274.751

การเขยนโปรแกรมเชงวตถ เปนวธการเขยนโปรแกรมแบบใหม ซงจะเรยกโปรแกรมยอยททาหนาทเฉพาะวา Object และยงรวม data เขาเปนสวนของ Object ดวย นอกจากนโปรแกรมเชงวตถยงมโครงสรางพเศษนอกเหนอจาก Procedure Programming หรอ Module Programming คอ

การทางานของแตละ Object จะไมสนสดลง เมอกระบวนการทางานของโปรแกรมจบการทางานบน Object นนแลว ซง Object ทอยในโปรแกรมเหลาน พรอมเสมอในการเรมทางานตอตาแหนงเดมเมอเกดการเรยกใชงาน Object อกครง ซงแตกตางจากการเขยนโปรแกรมในแบบอนๆ ทโปรแกรมยอยจะตองเรมการทางานใหมเมอถกเรยกใชอกครง ดงนนเทคนคนจงชวยลดปญหาทเกดขนจากการเขยนโปรแกรมดวยวธอนๆ ได

Object 1

data

Object 2

data

Object 3

data

Object 4

data

แตละ Object สามารถตดตอสอสารกนไดโดยการสง Message ไปท Object อน

• คลาส (Class) • วตถ (Object) • การหอหม (Encapsulation)• การรบทอดมรดก (Inheritance)• นามธรรม (Abstraction )• พอลมอรฟซม ( Polymorphism )

คลาส (Class) - ประเภทของวตถ เปนการกาหนดวา วตถ จะประกอบไปดวย ขอมล (data) หรอคณสมบต (property) และ พฤตกรรม(behavior)หรอการกระทา(method) อะไรบาง ซง คลาส (เชน มนษย) เปนโครงสรางพนฐานของการเขยนโปรแกรมเชงวตถ

วตถ (Object) - โดยมากจะเรยกวา ออบเจกต คอ ตวตน(instance) ของ คลาส(เชน นายทกษณ, นายสนธ) ซงจะเกดขนระหวาง run-time โดยแตละ ออบเจกต จะมขอมลเฉพาะของตวเอง ทาให ออบเจกต แตละ ออบเจกต ของ คลาส ซงใช source code เดยวกนมคณลกษณะและคณสมบตทแตกตางกน

Encapsulation - การปดบงขอมล เปนวธการกาหนดสทธในการเขาถงขอมล หรอการกระทากบ ออบเจกต ของ คลาสนนๆ ทาใหแนใจไดวาขอมลของออบเจกตนนจะถกเปลยนแปลงแกไขผานทาง methods หรอ properties ทอนญาตเทานน (เชน การกาหนดตาแหนงทางการเมอง เปน public method ทผอนสามารกระทาได สวนการลาออกจากตาแหนง เปน private method ทมแต ออบเจกต ของ คลาส เทานนทจะสามารถทาได แตการกดดนและการขบไลสามารถสราง data ทอาจจะสงผลเกดการลาออกไดเชนกน)

Inheritance - การสบทอดคณสมบต เปนวธการสราง คลาสยอย ทเรยกวาซบคลาส (subclass) ซงจะเปนกาหนดประเภทของวตถใหจาเพาะเจาะจงขน ซง ซบคลาส จะไดรบถายทอดคณสมบตตางๆมาจากคลาสหลกดวย (เชน คลาส มนษย สบทอดมาจาก คลาส สงมชวต)

Abstraction - นามธรรม เปนการแสดงถงคณลกษณะและพฤตกรรมของ object เทาทจาเปนตองรบรและใชงาน โดยซอนสวนทเหลอเอาไวเพอไมใหเกดความสบสน เชน ตามปกตแลว นายนฐพงศ จดเปนตวตนของ คลาสมนษย ซงจะมพฤตกรรม การกระทาทกอยางทตามทกาหนดไวตามโครงสรางของ คลาส มนษย แตในบางกรณทนาไปใชงาน เราไมตองการใหเกดการสบสนตอการใชงานหรอการจดประเภทมากเราสามารถจดการหรอใชงาน ออบเจกต นายนฐพงศ ใหอยในรปของสงมชวต กได

Polymorphism - ภาวะทมหลายรปแบบ เปนวธการกาหนดรปแบบการกระทาทเหมอนกนแตไดผลทแตกตางกน เชน การเปลงเสยง เปน method หลกของ คลาส สงมชวต ซงมคลาส มนษย และคลาสสนข เปน ซบคลาส แตผลของการเปลงเสยงของออบเจกตจากคลาสทงสองจะออกมาไมเหมอนกน

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..

เปนการจาลองความเปนจรงในชวตความเปนอยของมนษยทจะประกอบดวย คน สตว สงของ และใชสงตางๆ เพอแกปญหา โดยแตละสง มหนาทในการแกปญหานน ๆ

ตองการหาความบนเทงดวยดนตรกตองมสงตางๆ คอเครองดนตรและคนเลนดนตร เปนตน

แกไขปญหาดวยโปรแกรมททาตามลาดบขนตอนทไดกาหนดไว

มการเรยกใชโปรแกรมยอยทสรางขน

แกปญหาโดยมองสงตาง ๆทอยในโปรแกรมเปนวตถ

วตถแตละชน มคณสมบต และความสามารถแตกตางกนออกไป

วตถตดตอการดวยวธการสงขาวสารถงกน

#include <stdio.h>

main () {

int width , length, area ;

width = 10 ;

length = 5 ;

area = width * length ;

printf (“Area = %d\n”,area) ;

return 0

}

ทกๆ สงเปนวตถ

โปรแกรม คอ กลมของวตถทสงสารบอกกนเพอทางาน

วตถแตละวตถมหนวยความจา

วตถตองมชนด

วตถทจดอยในประเภทเดยวกนยอมไดรบขาวสารเหมอนกน

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)

มผสงเกตเหนวาในชวตประจาวนของเรานน ไมจาเปนตองทราบหรอรทกเรองกสามารถใชงานสงของนนๆ ได เชน

โทรทศนทมอยตามบาน เรา

ไมตองทราบการทางานของ

อปกรณภายในของมน แต

เรากสามารถเปดเครองและ

ดรายการโปรดของเราได

เพยงรวธการกดปมตางๆ

โดยปรกตจะเชอมตอระหวางผใชกบคอมพวเตอร เรยกวา user interface

แตคาวาอนเตอร เฟสสาหรบวตถคอ สวนทบอกวาวตถนนใหบรการหรอสามารถทาอะไรไดบาง

ชฟมสวนทใชงานการตดตอกบอปกรณภายนอก interface

Information hidingเราจะไมรการทางานภายในของชฟเพราะถกซอนรายละเอยดไวแตยงสามารถใชงานตามปกตหากชฟชนนเสยกสามารถหาตวอนมาเสยบแทนไดเลย

จดประสงคใหญของการเขยนโปรแกรมเชงวตถกคอการนาสวนตางๆ ของวตถทสรางขนกลบมาใชใหมหรอทเรยกในภาษาองกฤษวา “reuse” เมอมวตถถกสรางขนมา กสามารถนาวตถตางๆ มาประกอบกนเปนวตถอกชนดหนงได เพอใหวตถใหมมความสามารถมากกวาเดม เชนกรณของรถยนตสามารถประกอบขนจากเครองยนต ตวถง ประต และลอ เปนตน

รากฐานของการพองรปคอคณสมบตการถายทอด คณสมบตการถายทอดยนยนไดวาคลาสลกทเกดจากคลาสแมเดยวกนยอม

มคณสมบตเหมอนกน

เปนทมาของหนงรปหลายพฤตกรรม

คลาสแมคอ Shapeคลาสลกคอ Circle, Triangle, Rectangle มคณสมบตเหมอนคลาสแมทกประการ

Shape

+draw()+erase()

Circle

+draw()+erase()

Line

+draw()+erase()

Rectangle

+draw()+erase()

คลาสเปนเหมอนสวนของแมพมพ เพอบอกลกษณะวาวตถในคลาสนมลกษณะและพฤตกรรมเปนอยางไร

วตถเปนสงทถกสรางขนมาจากคลาสเพอใชงาน กาหนดคาตางๆ สงขอความสงใหวตถทางาน

คลาสสเหลยมผนผาคณสมบต:กวาง, ยาวเมธทอด:คานวณพนท

วตถA:สเหลยมผนผากวาง 2 ยาว 3

เมธทอด:คานวณพนท

วตถในโลกความจรง มองคประกอบสาคญสองสงคอ

สถานะ (State)

พฤตกรรม (behavior)

สถานะ ชอ , ส , สายพนธ

พฤตกรรม เหา , วง , กระดกหาง

สถานะ ตาแหนงเกยรปจจบน ,

ความเรวรอบปจจบน , ความเรวรถ

พฤตกรรม เปลยนเกยร , เปลยนความเรวรอบ,

เบรค

สถานะ ปด , เปด

พฤตกรรม กดปด , กดเปด

สถานะ ปด, เปด , ระดบเสยง, สถานปจจบน

พฤตกรรม กดปด, กดเปด , ลดเสยง ,เรงเสยง ,

คนหาสญญาณ

โคมไฟ

วทย

คลายคลงกบวตถในโลกความจรง โดยจะประกอบไปดวย สถานะ และ พฤตกรรมเชนเดยวกน

เกบสถานะของวตถไวใน Field หรอ Attribute (ตวแปรในโปรแกรม) และแสดงพฤตกรรมโดยผาน Method (ฟงกชนการทางานใน

โปรแกรม)

Method ทาหนาทเปลยนแปลงสถานะ(Field)ซงอยในวตถนน ๆ และทาหนาทตดตอระหวางวตถกบวตถ

Method Change gears ทาหนาทเปลยน เกยร

Method Brake ทาหนาทหยดรถ

Method Change cadence ทาหนาทเปลยน

ความเรวรอบการป น

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

ใหนกศกษายกตวอยางวตถในโลกความจรง 1 ตวอยาง แลวแสดงใหเหนวา สถานะ (State) และ พฤตกรรม(Behavior) ของวตถนนมอะไรบาง

OOP 2/2550ดร.สขสถต มสถตย 110

1. จงบอกประโยชนของการเขยนโปรแกรมเชงวตถ

2. สถานะของออบเจกตหมายความวาอะไร?

3. จงจาแนกสงตอไปนวาสงใดเปนคลาส สงใดเปนออบเจกต ◦ สมด, บานเลขท 97/8, ขนม, นายนฐพงศ สงเนยม

4. จงหาขอมลและพฤตกรรมทเปนไปไดของออบเจกตของคลาสตอไปน◦ สนข, รถยนต, โซฟา

5. จงแยกแยะวาสงใดเปนซปเปอรคลาสและซบคลาส • ตนไม, ไมดอก

• พนกงาน, ผจดการ

• เคก, ขนม

IDE : integrate development environment

case sensitive สนใจตวพมพเลก/ใหญ

int y;

Y = 8;

c , c++ , c# , java , perl , php

none case sensitive ไมสนใจ

-------------------------------

1. หามมชองวาง

2. หามขนตนดวยตวเลข เชน 4Car , 5MB

MB5

www.siam2dev.net

หนา E-Learning

---------

1. หามตงชอขนตนดวยตวเลข

2x , 5t , 8u

2. หามมชองวาง

1.dim x y as int16

2. int x y;

3. int my name is;

4. int my_name_is;

5. int my-name-is;

6 int my*name/is;

top related