24
Object Oriented Programming สําราญ วานนท์ [email protected] SamranTim.wordpress.com Samrantim.blogspot.com

Object Oriented Programming - WordPress.com · Object Oriented Programming ˘ˇ [email protected] SamranTim.wordpress.com Samrantim.blogspot.com

  • Upload
    others

  • View
    77

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Object Oriented Programming - WordPress.com · Object Oriented Programming ˘ˇ samranwanon@gmail.com SamranTim.wordpress.com Samrantim.blogspot.com

Object Oriented Programming

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

Page 2: Object Oriented Programming - WordPress.com · Object Oriented Programming ˘ˇ samranwanon@gmail.com SamranTim.wordpress.com Samrantim.blogspot.com

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

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

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

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

Page 3: Object Oriented Programming - WordPress.com · Object Oriented Programming ˘ˇ samranwanon@gmail.com SamranTim.wordpress.com Samrantim.blogspot.com

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

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

Page 4: Object Oriented Programming - WordPress.com · Object Oriented Programming ˘ˇ samranwanon@gmail.com SamranTim.wordpress.com Samrantim.blogspot.com

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

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

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

Page 5: Object Oriented Programming - WordPress.com · Object Oriented Programming ˘ˇ samranwanon@gmail.com SamranTim.wordpress.com Samrantim.blogspot.com

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

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

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

Page 6: Object Oriented Programming - WordPress.com · Object Oriented Programming ˘ˇ samranwanon@gmail.com SamranTim.wordpress.com Samrantim.blogspot.com

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

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

Page 7: Object Oriented Programming - WordPress.com · Object Oriented Programming ˘ˇ samranwanon@gmail.com SamranTim.wordpress.com Samrantim.blogspot.com

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

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

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

}

Page 8: Object Oriented Programming - WordPress.com · Object Oriented Programming ˘ˇ samranwanon@gmail.com SamranTim.wordpress.com Samrantim.blogspot.com

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

Page 9: Object Oriented Programming - WordPress.com · Object Oriented Programming ˘ˇ samranwanon@gmail.com SamranTim.wordpress.com Samrantim.blogspot.com

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

� ตวอยาง

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

Page 10: Object Oriented Programming - WordPress.com · Object Oriented Programming ˘ˇ samranwanon@gmail.com SamranTim.wordpress.com Samrantim.blogspot.com

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

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

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

Page 11: Object Oriented Programming - WordPress.com · Object Oriented Programming ˘ˇ samranwanon@gmail.com SamranTim.wordpress.com Samrantim.blogspot.com

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

Page 12: Object Oriented Programming - WordPress.com · Object Oriented Programming ˘ˇ samranwanon@gmail.com SamranTim.wordpress.com Samrantim.blogspot.com

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

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

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

Page 13: Object Oriented Programming - WordPress.com · Object Oriented Programming ˘ˇ samranwanon@gmail.com SamranTim.wordpress.com Samrantim.blogspot.com

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

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

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

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

Page 14: Object Oriented Programming - WordPress.com · Object Oriented Programming ˘ˇ samranwanon@gmail.com SamranTim.wordpress.com Samrantim.blogspot.com

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

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

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

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

Page 15: Object Oriented Programming - WordPress.com · Object Oriented Programming ˘ˇ samranwanon@gmail.com SamranTim.wordpress.com Samrantim.blogspot.com

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

Page 16: Object Oriented Programming - WordPress.com · Object Oriented Programming ˘ˇ samranwanon@gmail.com SamranTim.wordpress.com Samrantim.blogspot.com

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

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

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

Page 17: Object Oriented Programming - WordPress.com · Object Oriented Programming ˘ˇ samranwanon@gmail.com SamranTim.wordpress.com Samrantim.blogspot.com

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

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

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

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

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

Page 18: Object Oriented Programming - WordPress.com · Object Oriented Programming ˘ˇ samranwanon@gmail.com SamranTim.wordpress.com Samrantim.blogspot.com

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

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

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

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

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

คลาสเดยวกน

public / / / / /

protect X / X / /

package X / X X /

private X X X X /

Page 19: Object Oriented Programming - WordPress.com · Object Oriented Programming ˘ˇ samranwanon@gmail.com SamranTim.wordpress.com Samrantim.blogspot.com

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

Page 20: Object Oriented Programming - WordPress.com · Object Oriented Programming ˘ˇ samranwanon@gmail.com SamranTim.wordpress.com Samrantim.blogspot.com

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

Page 21: Object Oriented Programming - WordPress.com · Object Oriented Programming ˘ˇ samranwanon@gmail.com SamranTim.wordpress.com Samrantim.blogspot.com

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

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

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

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

Page 22: Object Oriented Programming - WordPress.com · Object Oriented Programming ˘ˇ samranwanon@gmail.com SamranTim.wordpress.com Samrantim.blogspot.com

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

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

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

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

Page 23: Object Oriented Programming - WordPress.com · Object Oriented Programming ˘ˇ samranwanon@gmail.com SamranTim.wordpress.com Samrantim.blogspot.com

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

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

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

Page 24: Object Oriented Programming - WordPress.com · Object Oriented Programming ˘ˇ samranwanon@gmail.com SamranTim.wordpress.com Samrantim.blogspot.com

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

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

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

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