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

112
By : Dr.Nattapong Songneam http://www.siam2dev.net [email protected] [email protected] Last update 16-11-2560

Upload: others

Post on 07-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

By : Dr.Nattapong Songneamhttp://[email protected]@hotmail.com

Last update 16-11-2560

Page 2: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

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

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

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

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

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

Page 3: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

ใชโปรแกรม netbean IDE

ประกอบไปดวย

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

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

Page 4: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ
Page 5: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

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

Page 6: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

Page 7: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

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

Page 8: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

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

ทซ าซอน

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

Page 9: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

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

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

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

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

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

Page 10: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

ตองการได

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

ทงสน

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

จะฝกฝนไว

Page 11: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

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

Page 12: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ
Page 13: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

space

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

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

Page 14: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

Problem Space

หญาในสนามรก

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

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

Page 15: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

ป�ญหา

(Problem)

กาหนดขนตอน

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

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

องคประกอบProblem Space

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

แบบโปรซเยอร

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

เชงวตถ

Page 16: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

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

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

รบขอมล

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

ของสเหลยม)

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

ออกทางหนาจอ

คานวณ

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

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

Page 17: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

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

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

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

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

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

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

Page 18: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

ความกวาง

ความยาว

พนท

Page 19: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

พฤตกรรม

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

◦ คานวณพนท

◦ วาดตวเอง

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

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

Page 20: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ
Page 21: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

Page 22: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

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

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

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

Page 23: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

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

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

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

Oriented Programming) นนเอง

Page 24: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

Page 25: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

Object – Oriented Programming (OOP) หรอ

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

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

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

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

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

Object – Oriented Programming (OOP)

Page 26: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

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

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

นาม (Abstract)

Page 27: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

Transform

Convert

Page 28: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

Page 29: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

Page 30: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

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

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

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

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

Page 31: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

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

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

เปนสาคญ

Page 32: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

มลตเธรด (Multithread )

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

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

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

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

Page 33: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

Architecture-neutral

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

Page 34: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

Page 35: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

• High Performance •

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

Page 36: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

Page 37: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

Attributes

Function

เกาอ

อาจารย

นกศกษา

คอมพวเตอร

แอปเปล

Tangilbe

wh h

b

r

Page 38: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

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

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

Page 39: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

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

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

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

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

Page 40: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ
Page 41: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ
Page 42: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ
Page 43: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

1. identity คอ เอกลกษณเฉพาะตวททาให Object ของคลาส

หนงๆ แตกตางจาก Object ของอกหนงคลาสหนง ซงใน

ภาษาจาวา identity จะหมายถง Attribute หรอตวแปร

(Variable)

Page 44: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

2. State คอสถานะของ Object ณ เวลาหนงๆ ซงสามารถ

เปลยนแปลงไดเมอมการกระตนจาก Object อนโดยการสง

Message ในภาษาจาวา State จะหมายถงคาของ Attribute

(Value of Attribute)

Page 45: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

3. Behavior คอ พฤตกรรมท Object กระทาและตอบสนองทก

ครง โดยการกระตน Object อนโดยการสง Message ตอกนใน

ภาษาจาวา Behavior กคอ Method

Page 46: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

ในทาง OOP คณสมบตของ Object (identity+behavior)

ทคลายกนจะถกจดไวในคลาสเดยวกน ดงนนการแยกแยะ Object ทสรางจากคลาสเดยวกนจงใช State ในการพจารณา

เชน ชอของ Object (คาของตวแปร “name”) เปนตน สวน

การแยกแยะ Object ทสรางจากคลาสตางกน จะใช identity

และ Behavior ในการพจารณาเพราะ identity และ behavior

ของ Object ตางกนทาใหจดอยตางคลาสกนนนเอง

Page 47: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

Page 48: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

Page 49: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

Page 50: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

แนวคดการเขยนโปรแกรมแบบดงเดมมกนยมใช การเขยนโปรแกรมเชงกระบวนการ (Procedural Programming) ซงใหความสาคญกบขนตอนกระบวนการททา โดยแบงโปรแกรมออกเปนสวนๆตามลาดบขนตอนการทางาน แตแนวคดการเขยนโปรแกรมเชงวตถนนใหความสาคญกบ ขอมล(data) และ พฤตกรรม(behavior) ของวตถ และความสมพนธกนระหวางวตถกนมากกวา

Page 51: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ
Page 52: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ
Page 53: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

เมอมการหยอดเหรยญเขาต: ตรวจสอบจานวนเหรยญและชนดของเหรยญ แสดงผลชนดของนาทสามารถเลอกซอได ตรวจสอบจานวนนากระปองทมอยในต

Page 54: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

รบผลการเลอกชนดนา สงนาทเลอกออกมาจากชอง จดเกบเงนเขาระบบ หากมเงนทอน ใหทอนเงนทเหลอ ทชองรบเงนทอน

Page 55: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

Page 56: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

Page 57: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

Page 58: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

Page 59: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

ต.ย. สมมต ราคา สนคา 125.75 จายแบงคหนงพนบาท (1000) จะตอง

ทอนออกมาเปน 874.25 บาท

แบงค 500 จานวน 1 ฉบบ แบงค 100 จานวน 3 ฉบบ แบงค 50 จานวน 1 ฉบบ แบงค 20 จานวน 1 ฉบบ เหรยญ 10 จานวน 0 เหรยญ เหรยญ 5 จานวน 0 เหรยญ เหรยญ 1 จานวน 4 เหรยญ เหรยญ .50 จานวน 0 เหรยญ เหรยญ .25 จานวน 1 เหรยญ

Page 60: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

1. ตรวจสอบจานวนเงนและชนดของเงนทรบมา

2. ตรวจสอบราคา และ จานวนสนคา

3. คานวณจานวนเงนและแสดงผลจานวนเงนทงหมด

4. แสดงจานวนเงนทอนทงหมด

5. ทอนเงนโดยเลอกจากชนดและจานวนเงนมากสดกอน

6. ทอนเงนและชนดเงนตามเศษทคานวณแลว

7. จายสนคาตามรายการทเลอก

กลม 1

Page 61: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

1. ตองมเรมตน

2. ....

3. ....

4. ตองมสนสด

START

STOP

GIGO:Gabag In Gabag out

Page 62: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

1. ตองมเรมตน

2. ....

3. ....

4. ตองมสนสด

START

STOP

Page 63: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

ขนตอนแรก ตอง

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

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

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

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

• INPUT• PROCESS• OUTPUT

Exchange = Money - Price

Page 64: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

เศษทเหลอ

MOD%

/ DIV ไมสนใจเศษ

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

B500 = Exchange / 500Tmp = Exchange % 500

274.751

Page 65: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

เศษทเหลอ

MOD%

/ DIV ไมสนใจเศษ

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

B100 = Exchange / 100Tmp = Exchange % 100

274.751

Page 66: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

Page 67: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

Page 68: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

Object 1

data

Object 2

data

Object 3

data

Object 4

data

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

Page 69: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

Page 70: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

Page 71: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

Page 72: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

Page 73: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

Page 74: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ
Page 75: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ
Page 76: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

Page 77: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

Page 78: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

import javax.swing.*;

import java.awt.*;

public class CardView extends JLable

{

private ImageIcon icon;

Page 79: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

public CardView(VCard card)

{

getImage(card.getImage());

setIcon(icon);

setBackground(Color.white);

setOpaque(true);

}

Object 1

data

Page 80: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

private void getImage(String name)

{

java.net.URL url =

this.getClass().getResource(name);

icon = new ImageIcon(url);

}

}

Object 2

data

Page 81: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

…Break..

Page 82: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

Page 83: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

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

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

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

#include <stdio.h>

main () {

int width , length, area ;

width = 10 ;

length = 5 ;

area = width * length ;

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

return 0

}

Page 84: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ
Page 85: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

ทกๆ สงเปนวตถ

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

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

วตถตองมชนด

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

Alan key เปนผหนงทพฒนาตวแปร small Talk ซงเปนตนแบบของการเขยนโปรแกรมเชงวตถ ไดใหนยามของภาษาเชงวตถไวดงน

Page 86: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

Object

Page 87: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

โปรแกรมในความหมายของการเขยนโปรแกรมเชงวตถ กคอ กลมของวตถทสงขอความขาวสาร(Message) ถงกนและกนเพอบอกใหวตถทางาน

Page 88: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

องคประกอบคอมโพสตMobilePhone

String bandnameButton buttonScreen screenAntenna antennaSimm simNet

call()receive()hangup()sendSMS()

Attribute

Page 89: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ
Page 90: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

จงจะสรางวตถจากคลาส ดงนนวตถจงจะตองอยในคลาสใดคลาสหนง

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

Page 91: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

MobilePhone

String bandnameButton buttonScreen screenAntenna antennaSimm simNet

call()receive()hangup()sendSMS()

:siemens

:ericsson

:nokia

Page 92: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

วตถทอยในประเภทเดยวกนยอมไดขาวสารเหมอนกน คณสมบตขอนทาใหการเขยนโปรแกรมเชงวตถมประสทธภาพเพมขนเพราะชนดของวตถมไดกาหนดหรออยอยางโดด ๆ แตสามารถจดเปนกลม ผเขยนคาสงสามารถกาหนดชนดยอย ๆ ของวตถไดอกเชน คลาสคอ shape เราสามารถแตกออกเปนชนดทจาเพาะลงไปเปน Circle, Triangle, Rectangle เปนตน ดงนนเมอวตถในคลาสCircle สามารถไดรบขาวสารเหมอนกบ Triangle และ Rectangle

Page 93: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

การซอนรายละเอยด (information hiding) การเชอมตอ (Interface) การนาวตถมาใชใหม (Reusable) การพองรป: หนงรปหลายพฤตกรรม (Polymorphism)

Page 94: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

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

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

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

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

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

Page 95: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

Page 96: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

Page 97: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

Page 98: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ
Page 99: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

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

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

Page 100: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

Shape

+draw()+erase()

Circle

+draw()+erase()

Line

+draw()+erase()

Rectangle

+draw()+erase()

Page 101: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

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

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

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

Page 102: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ
Page 103: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

สถานะ (State)

พฤตกรรม (behavior)

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

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

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

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

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

เบรค

Page 104: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

สถานะ ปด , เปด

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

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

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

คนหาสญญาณ

โคมไฟ

วทย

Page 105: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

โปรแกรม)

Page 106: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

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

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

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

Page 107: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

Modularity : โคดของโปรแกรมแบบ Object สามารถแยกสวนกนเขยนไดอยางเปนอสระ

Information-hiding : รายละเอยดและขอมลถกซอนอยภายใน Object การปรบเปลยนขอมลภายใน Object ตองทาผาน Method เทานน

Code re-use : โคดของโปรแกรมสามารถนากลบมาใชใหมไดอยางสะดวก ทาใหพฒนาโปรแกรมไดอยางรวดเรว

Page 108: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

ดาวนโหลดชดพฒนาภาษาจาวาทเวบต

http://java.sun.com/j2se

Java virtual machine : JRE (Java Runtime Environment)Java Developer Kit : JDK

Page 109: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

Page 110: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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

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

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

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

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

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

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

• เคก, ขนม

Page 111: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

IDE : integrate development environment

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

int y;

Y = 8;

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

none case sensitive ไมสนใจ

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

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

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

MB5

Page 112: By : Dr.Nattapong Songneam ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_last... · C++ . ออกไป เช น multiple Inheritance, automatic type conversion, point และ

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;