81
บทที1 : แนวคิดเกี่ยวกับการเขียนโปรแกรมเชิงวัตถุ ( Object Oriented Programming Concept) By : Dr.Nattapong Songneam http://www.siam2dev.net siam2[email protected] [email protected] Last update 20-03-2560

บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

บทท 1 : แนวคดเกยวกบการเขยนโปรแกรมเชงวตถ( Object Oriented Programming Concept)

By : Dr.Nattapong Songneam

http://www.siam2dev.net

[email protected]

[email protected]

Last update 20-03-2560

Page 2: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

Agenda

คาอธบายรายวชา

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

โปรแกรมภาษาเชงวตถ

Object Orientation

class & Object

Encapsulation

Polymorphism

Inheritance

Page 3: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

คาอธบายรายวชาการเขยนโปรแกรมเชงวตถ (4122309)

การพฒนาระบบงานทางคอมพวเตอรดวยวธการของเทคโนโลยเชงวตถ การสรางชนดขอมล คลาสคณสมบตของวตถ การรบทอด การหอหม โพลมอรฟซม การวเคราะหและการออกแบบระบบงานเชงวตถ API (Application Programming Interface) ของภาษาทใชในการเขยนโปรแกรมเชงวตถ และการพฒนาโครงงานเชงวตถ

Page 4: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

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

Page 5: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

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

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

Page 6: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

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

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

Page 7: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

Object Orientation

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

Page 8: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

การมองทกสงในโลกใหเปนวตถ เปนการทาใหปญหาทเปนนามธรรม (Abstraction) กลายมาเปนรปธรรม เพอทาใหคอมพวเตอรสามารถแกปญหาเหลานนไดดวยการพฒนาเปนซอฟตแวร และการพฒนาซอฟตแวรทมการนาเทคโนโลย Object มาใชงานกคอ การโปรแกรมเชงวตถ (Object –Oriented Programming) นนเอง

Object Orientation

Page 9: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

Object – Oriented Programming (OOP) หรอ การโปรแกรมเชงวตถ หมายถง การเขยนโปรแกรมทประกอบไปดวยกลมของ Object ซงแตละ Object จะถกจดกลมอยในรปของคลาส (Class) โดยทแตละคลาสสามารถมการถายทอดลกษณะ (Inheritance) กนลงมาอยางเปนลาดบ (Hierarchy)

Object – Oriented Programming (OOP)

Page 10: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

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

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

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

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

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

Page 11: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

ความหมายของวตถ (Object)

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

Page 12: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

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

ความหมายของวตถ (Object)

Page 13: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

วตถ

Attributes

Function

เกาอ

อาจารย

นกศกษา

คอมพวเตอร

แอปเปล

Tangilbe

wh h

b

r

Page 14: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน
Page 15: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน
Page 16: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

ลกษณะทวตถจะตองม

1. Identity คอ เอกลกษณเฉพาะตวททาให Object ของคลาสหนงๆ แตกตางจาก Object ของอกหนงคลาสหนง ซงในภาษาจาวา identity จะหมายถง Attribute หรอตวแปร (Variable)

Page 17: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

2. State คอสถานะของ Object ณ เวลาหนงๆ ซงสามารถเปลยนแปลงไดเมอมการกระตนจาก Object อนโดยการสง Message ในภาษาจาวา State จะหมายถงคาของ Attribute (Value of Attribute)

ลกษณะทวตถจะตองม

Page 18: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

3. Behavior คอ พฤตกรรมท Object กระทาและตอบสนองทกครง โดยการกระตน Object อนโดยการสง Message ตอกนในภาษาจาวา Behavior กคอ Method

ลกษณะทวตถจะตองม

Page 19: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

ในทาง OOP คณสมบตของ Object (identity + behavior) ทคลายกนจะถกจดไวในคลาสเดยวกน ดงนนการแยกแยะ Object ทสรางจากคลาสเดยวกนจงใช State ในการพจารณา เชน ชอของ Object (คาของตวแปร “name”) เปนตน สวนการแยกแยะ Object ทสรางจากคลาสตางกน จะใช identity และ Behavior ในการพจารณาเพราะ identity และ behavior ของ Object ตางกนทาใหจดอยตางคลาสกนนนเอง

Page 20: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

แนวคดในการเขยนโปรแกรม(Programming Concepts)

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

Page 21: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

แนวความคดการเขยนโปรแกรมแบบโครงสราง (Structured Programming Concept)

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

Page 22: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

แนวความคดเชงวตถ (Object-Oriented Programming Concept)

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

Page 23: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

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

Page 24: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

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

Page 25: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

ตวอยางตขายเครองดมอตโนมต

Page 26: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

วธการคดแบบการเขยนโปรแกรมเชงกระบวนการ

เมอมการหยอดเหรยญเขาต:

ตรวจสอบจานวนเหรยญและชนดของเหรยญ

แสดงผลชนดของนาทสามารถเลอกซอได

ตรวจสอบจานวนนากระปองทมอยในต

รบผลการเลอกชนดนา

สงนาทเลอกออกมาจากชอง

จดเกบเงนเขาระบบ

หากมเงนทอน ใหทอนเงนทเหลอ ทชองรบเงนทอน

Page 27: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

วธการคดแบบการเขยนโปรแกรมเชงวตถ

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

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

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

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

Page 28: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

จงเขยนขนตอนการทางานของตทอนเงน

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

แบงค 500 จานวน 1 ฉบบ

แบงค 100 จานวน 3 ฉบบ

แบงค 50 จานวน 1 ฉบบ

แบงค 20 จานวน 1 ฉบบ

เหรยญ 10 จานวน 0 เหรยญ

เหรยญ 5 จานวน 0 เหรยญ

เหรยญ 1 จานวน 4 เหรยญ

เหรยญ .50 จานวน 0 เหรยญ

เหรยญ .25 จานวน 1 เหรยญ

Page 29: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

ขนตอนวธ

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

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

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

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

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

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

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

กลม 1

Page 30: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

Algorithm กฏขอแรก

1. ตองมเรมตน

2. ....

3. ....

4. ตองมสนสด

START

STOP

GIGO:Gabag In Gabag out

Page 31: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

Algorithm กฎขอสอง 1 บรรทด 1 งาน 1 job สนกะทดรด ไดใจความ หรอ ทคอมฯสามารถทางานได

1. ตองมเรมตน

2. ....

3. ....

4. ตองมสนสด

START

STOP

Page 32: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

Algorithm

ขนตอนแรก ตอง

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

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

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

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

• INPUT• PROCESS• OUTPUT

Exchange = Money - Price

Page 33: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

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

เศษทเหลอ

MOD%

/ DIV ไมสนใจเศษ

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

B500 = Exchange / 500Tmp = Exchange % 500

274.751

Page 34: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

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

เศษทเหลอ

MOD%

/ DIV ไมสนใจเศษ

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

B100 = Exchange / 100Tmp = Exchange % 100

274.751

Page 35: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

การเขยนโปรแกรมเชงวตถ(Object – Oriented Programming)

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

Page 36: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

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

การเขยนโปรแกรมเชงวตถ(Object – Oriented Programming)

Page 37: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

Object 1

data

Object 2

data

Object 3

data

Object 4

data

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

Message ไปท Object อน

Page 38: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

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

Page 39: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

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

Class

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

Page 40: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

Class and Objects

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

Page 41: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

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

Object

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

Page 42: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

Encapsulation• Encapsulation - การปดบงขอ มล เปนว ธการ

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

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

Page 43: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

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

Inheritance

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

Page 44: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

Inheritance

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

Page 45: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

Inheritance

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

Page 46: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

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

Abstraction

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

Page 47: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

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

Polymorphism

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

Page 48: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

ตวอยางโปรแกรม

import javax.swing.*;

import java.awt.*;

public class CardView extends JLable

{

private ImageIcon icon;

Page 49: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

public CardView(VCard card)

{

getImage(card.getImage());

setIcon(icon);

setBackground(Color.white);

setOpaque(true);

}

Object 1

data

Page 50: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

private void getImage(String name)

{

java.net.URL url =

this.getClass().getResource(name);

icon = new ImageIcon(url);

}

}

Object 2

data

Page 51: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

…Break..

Page 52: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

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

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

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

Page 53: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

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

}

Page 54: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

Structural Programming VS Object Oriented Programming

Page 55: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

แนวคดของเอลน เคย (Alan Kay)

ทกๆ สงเปนวตถ

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

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

วตถตองมชนด

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

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

Page 56: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

ทกๆ สงเปนวตถ

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

Object

Page 57: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

โปรแกรมคอกลมของวตถ

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

Page 58: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

วตถมหนวยความจา

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

• สวนของขอมลนอาจจะประกอบขนจากวตถอนๆ ได

• เปนทมาของการเกดคณสมบตการถายทอดและคณสมบตขององคประกอบคอมโพสต

MobilePhone

String bandnameButton buttonScreen screenAntenna antennaSimm simNet

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

Attribute

Page 59: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

หนวยความจาคอมพวเตอร

Page 60: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

วตถจะตองจดอยในกลมหรอชนด

ชนดของวตถดงกลาวกคอคลาส (Class)

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

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

Page 61: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

ตวอยางชนดของวตถและวตถ

MobilePhone

String bandnameButton buttonScreen screenAntenna antennaSimm simNet

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

:siemens

:ericsson

:nokia

Page 62: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

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

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

Page 63: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

แนวคดทเปนประโยชนจากการโปรแกรมเชงวตถ

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

Page 64: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

การซอนรายละเอยด(Information Hiding)

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

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

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

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

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

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

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

Page 65: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

การเชอมตอ(Interface)

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

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

Page 66: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

Information hiding

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

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

Page 67: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

การนาวตถมาใชใหม(Reusable)

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

Page 68: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

ตวอยางวตถทเกดจากวธคอมโพสต

Page 69: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

การพองรป (Polymorphism)

• รากฐานของการพองรปคอคณสมบตการถายทอด

• คณสมบตการถายทอดยนยนไดวาคลาสลกทเกดจากคลาสแมเดยวกนยอมมคณสมบตเหมอนกน

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

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

Page 70: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

การถายทอดใหเกดลกษณะของพองรป

Shape

+draw()+erase()

Circle

+draw()+erase()

Line

+draw()+erase()

Rectangle

+draw()+erase()

Page 71: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

มารจกคลาสและวตถกน

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

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

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

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

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

Page 72: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

เปรยบเทยบคลาสกบวตถ

Page 73: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

วตถในโลกความจรง (Real-world objects)วตถในโลกความจรง มองคประกอบสาคญสองสงคอ

•สถานะ (State)

•พฤตกรรม (behavior)

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

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

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

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

Page 74: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

สถานะ ปด , เปด

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

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

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

คนหาสญญาณ

โคมไฟ

วทย

Page 75: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

วตถในโปรแกรม (Software objects)

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

• เกบสถานะของวตถไวใน Field หรอ Attribute (ตวแปรในโปรแกรม)

• และแสดงพฤตกรรมโดยผาน Method (ฟงกชนการทางานในโปรแกรม)

Page 76: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

การทางานระหวาง Method กบ Field

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

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

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

Method Change cadence ทาหนาทเปลยนความเรวรอบการปน

Page 77: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

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

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

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

Page 78: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

ดาวนโหลดเครองมอในการพฒนาภาษาจาวา

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

http://java.sun.com/j2se

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

Page 79: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

โปรแกรม NetBeanIDE

https://www.netbeans.org/

Page 80: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

กจกรรม

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

Page 81: บทที่ 1 : แนวคิดเกี่ยวกับการ ...siam2dev.net/E_Learning/OOP/Lec01_OOP_concept_lastupdate... · 2018-03-20 · บทที่ 1 : แนวคิดเกี่ยวกับการเขียน

แบบฝกหดบทท 1

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

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

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

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

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

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