Object Oriented Programming - WordPress.com · Object Oriented Programming ˘ˇ...

Post on 12-Mar-2020

64 views 2 download

Transcript of Object Oriented Programming - WordPress.com · Object Oriented Programming ˘ˇ...

Object Oriented Programming

สาราญ วานนทsamranwanon@gmail.comSamranTim.wordpress.comSamrantim.blogspot.com

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

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

� เทยบการเขยนโปรแกรมแบบ OOP กบรถยนต อยางแรกโปรแกรมแบบ OOP แยกเปนช�นสวนทมมาตรฐานเหมอนรถยนต ซงเราเรยกช�นสวนน�นวา วตถ หรอ Object

� พอมองเปน Object กงาย เราจะถอดเขาถอดเปลยนดวยช�นสวนใดกได ขอใหมนมมาตรฐานเดยวกน (เหมอนทเรามองวา เราถอดเปลยนช�นสวนรถยนตไดสะดวกนนเอง) ฉะน�นมนกงายทเราจะยอมใหใครหลายๆ คนมาชวยสรางรถยนต หรอปรบแตงรถยนต

การเขยนโปรแกรมเชงวตถคออะไร (ตอ)� พอทกคนทเขามาชวยกนสราง ชวยกนใช Object กทาให Object ตางๆ ท

ประกอบกนน�นทางานไดสอดคลองกนงาย ซอฟตแวรทสรางดวย OOP จงทาไดรวดเรวข�น เพราะมมาตรฐานททกคนทวโลกเขาใจในแบบเดยวกน

องคประกอบพ<นฐานของ OOP1. Object : ออบเจกต

� ออบเจกตเปนสงแรกทตองทารจกเมอจะเขยนโปรแกรมแบบ OOP เพราะสงตางๆ ใน OOP เราจะมองเปนออบเจกต เชน ออบเจกตรถยนต Honda, ออบเจกตรถยนต Toyota เปนตน

� ความเปนออบเจกตจะแสดงใหเหนชด (หรอแยกแยะ) ดวยสงทเรยกวาคณสมบตเฉพาะ (Attribute) และความสามารถในการทางาน (Method) ของออบเจกตน�นๆ

องคประกอบพ<นฐานของ OOP (cont.)2. Class : คลาส

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

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

องคประกอบพ<นฐานของ OOP (cont.)3. Method : เมธอด

� เมธอด (Method) คอ ความสามารถในการทางานของออบเจกตแตละตว เชน ภายในคลาสรถยนต มออบเจกตจะมเมธอดตางๆ เชน การตดเคร�อง, การว�ง, การหยดรถ เปนตน

การสรางคลาส (Class)� รปแบบการสรางคลาส

การเขาถงคลาส Class ช"อคลาส { การประกาศแอตทรบวต การประกาศเมธอด {

ชดคาส"งของเมธอด}

}

การสรางคลาส (Class)� ตวอยางสรางคลาส

การสรางแอตทรบวต (Attribute)� รปแบบการสรางแอตทรบวต

� ตวอยาง

การเขาถงแอตทรบว ชนดขอมล ชMอแอตทรบวต;

การสรางเมธอด (Method)� รปแบบการสรางเมธอด

� ตวอยางการสรางเมธอด

การเขาถงเมธอด ชนดของขอมลท"จะสงกลบออกไป ช"อเมธอด (ลกษณะของตวแปรสง ช"อตวแปรสง){ รายละเอยดการทางานในเมธอด}

Example 5.1 : การสรางคลาส

Lab 5.1 : ใหสรางคลาส Dog� โดยมขอกาหนดดงน�

� 1. Attribute ประกอบดวย color, leg, weight

� 2. Method ประกอบดวย bark, runUp, runDown

การสราง และใชงานออบเจกต� รปแบบทM 1 การสรางออบเจกต

� รปแบบทM 2 การสรางออบเจกต

ช"อคลาส ช"อตวแปรออบเจกต ;ช"อตวแปรออบเจกต = new ช"อคลาส();

ช"อคลาส ช"อตวแปรออบเจกต = new ช"อคลาส();

การสราง และใชงานออบเจกต (cont.) � เบ<องหลงการทางาน

� 1. มการจองพ�นทหนวยความจาเพอเกบขอมลออบเจกต

� 2. มการเรยกใชเมธอดพเศษคอ เมธอดทมชอเหมอนคลาส เรยกวา Constructor

� 3. กาหนดคาเรมตนใหกบตวแปรของออบเจกต

Example 5.2 : การสรางออบเจกต

Lab 5.2 : การสรางออบเจกตเรยกใช Dog � โดยมขอกาหนดดงน<

� 1. กาหนด Attribute ดงน� Color = Red , Leg = 4, Weight = 10 จากน�นลองพมพคณสมบตออกทางจอภาพ

� 2. เรยกใช method การ Bark, RunUp, RunDown

การเขาถงแอตทรบวต และการใชงานเมธอด� คยเวรด

� 1. public คอสามารถเขาถงไดทก ๆ ท

� 2. protected คอคลาสเดยวกน แพคเกจเดยวกน และตางแพคเกจแตเปนคลาสแมและคลาสลกกนสามารถเขาถงได

� 3. package คอคลาสเดยวกน แพคเกจเดยวกนสามารถเขาถงได

� 4. private คอคลาสเดยวกนเทาน�นทจะสามารถเขาถงได

การเขาถงแอตทรบวต และการใชงานเมธอด(cont.)� คยเวรด

� เราสามารถกลบไปปรบตวอยางทผานมาได เชน attribute speed เราไมตองการใหผใชเขาถงไดโดยตรง เราจะปรบดงน�

รปแบบการเขาถง

ใชไดท �งหมด แพกเกจเดยวกน

ตางแพกเกจกน ตางแพกเกจกนแตเปนคลาสแมลกกน

คลาสเดยวกน

public / / / / /

protect X / X / /

package X / X X /

private X X X X /

การเขาถงแอตทรบวต และการใชงานเมธอด(cont.)

การเขาถงแอตทรบวต และการใชงานเมธอด(cont.)� ตอนเรยกในงาน CarV2 เราจะไมเหน Attribute ทชอ speed แลว

Lab 5.3 ใหปรบแก Class Dog � โดยปรบความเรวของ Run คอ speed ไมใหผใชเขาถงไดโดยตรงแต

สามารถเรยกใชผานทาง runUp, runDown

� เรยกใช Method bark, runUp, runDown

� พมพคา Attribute, Method ตาง ๆ ออกทางจอภาพ

คณสมบตพ<นฐานของ OOP1. Inheritance : สบทอดคลาส

� Inheritance เปนการแสดงความสมพนธแบบสบทอดคณลกษณะ และพฤตกรรม ถาจะยกตวอยางงายๆ กเชนพอแมมผวสดา ลกท�เกดมากจะมผวดา เชนกน

2. Encapsulation : ซอนรายละเอยดไวภายใน

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

คณสมบตพ<นฐานของ OOP (cont.)3. Polymorphism : รปแบบการใชท"หลากหลาย

� เปนคณสมบตหน�งใน OOP ท�อธบายไดงายๆ วา ทาใหการใชงานเมธอดเดยวกนมหลายรปแบบคอ แตละคร� งท�เรยกใชเมธอดน�นอาจใหผลลพธท�ตางกนได

� ยกตวอยางเชน ถาเรามคลาส Shape ซ�งเปนคลาสตนแบบของรปทรงตางๆ ไมวาจะเปนสามเหล�ยม หรอส�เหล�ยม โดยคลาส Shape มเมธอด Area ซ�งใชหาพ�นท�ของรปทรงน�น แลวเราสรางคลาสข�นมาอก 2 คลาสคอ Triangle และ Rectangle ซ�ง inherit คลาส Shape มาอกทหน�ง

ขอดของ OOP� งายในการแกไข

� งายตอการพฒนาความสามารถเพม

� สะดวกตอการนามาใชใหม

� ไมตองระวงชอซ� า