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� งายในการแกไข
� งายตอการพฒนาความสามารถเพม
� สะดวกตอการนามาใชใหม
� ไมตองระวงชอซ� า