Object-Oriented Programming
การเขียนโปรแกรมเชิงอ็อบเจ็กต์
อาจารย์สมเกียรติ ช่อเหมือน
สาขาวิชาวิศวกรรมซอฟต์แวร์ คณะวิทยาศาสตร์และเทคโนโลยี
(tkorinp@hotmail.com)
วิวัฒนาการของกระบวนทัศน์ (Paradigm Evolution)
ที่มา: http://www.slideshare.net/FALLEE31188/brookshear-06
Different Programming Paradigms
• การเขียนโปรแกรมเชิงโครงสร้าง
– ใช้การพัฒนาในบล็อกที่กาหนด
• เข้าใจง่าย
• ดูแลรักษาง่าย
• การเขียนโปแกรมเชิงวัตถุ
– ใช้การพัฒนาแบบจาลองของแต่ละส่วนของโปรแกรม
• สามารถนามาใช้ใหม่ได้
• ง่ายต่อการปรับปรุงและพัฒนา
Introduction to Object Orientated Programming
• กระบวนทัศน์ที่แตกต่างกันในการเขียนโปรแกรม
• ข้อดีของ OOP
– แนวทางการพัฒนาซอฟแวร์และการสร้างแบบจาลอง
– แนวคิดที่ใช้ในการเขียนโปรแกรมเชิงวัตถุ
(abstraction, encapsulation, inheritance and polymorphism)
คุณลักษณะของภาษาที่ใช้เขียนโปรแกรมเชิงวัตถุ
• Encapsulation
– สามารถปกป้องและเก็บรักษาข้อมูลไว้ภายในและปลอดภัยจากการเชื่อมต่อ
ภายนอกได้
• Inheritance
– กระบวนการที่คลาสจะสืบทอดคุณสมบัติพื้นฐานทั้งหมดของคลาสหลัก สามารถ
นาบางส่วนมาใช้และเพิ่มเติมคุณสมบัติได้
• Polymorphism
– ความสามารถที่จะอยู่ในรูปแบบต่างๆ ได้หลากหลาย
• Abstraction
– ความสามารถในการแสดงข้อมูลในระดับแนวคิด
คุณสมบัติที่สาคัญของการเขียนโปรแกรมเชิงวัตถุ
• เน้นข้อมูลมากกว่าขั้นตอน
• โปรแกรมจะถูกแบ่งออกเป็นส่วนประกอบ
• โครงสร้างข้อมูลได้รับการออกแบบให้เป็นเช่นเดียวกับวัตถุ
• ฟังก์ชั่นการทางาน+ข้อมูล = โครงสร้างข้อมูลของวัตถุ
• ข้อมูลถูกซ่อนไว้และไม่สามารถเข้าถึงได้จากภายนอก
• วัตถุสามารถสื่อสารกันผ่านฟังก์ชั่น
• ข้อมูลและฟังก์ชั่นสามารถเพิ่มได้ง่าย
• การออกแบบโปรแกรมเป็นแบบล่างขึ้นบน
กระบวนการที่สาคัญใน OOP
• Class definitions
• instance
• Abstraction
• Encapsulation
• Inheritance
• Polymorphism
• Generic class
• Class libraries
• Message passing
Object Oriented Programming
• เขียนโปรแกรมเชิงวัตถุคือ
– การนากระบวนทัศน์ต่าง ๆ มาใช้ในการพัฒนาซอฟต์แวร์
– การพัฒนาที่เน้นส่วนประกอบของซอฟต์แวร์ที่นากลับมาใช้ใหม่ได้
– ประหยัดเวลาในการพัฒนาและประหยัดค่าใช้จ่าย
– ช่วยให้สามารถปรับปรุงและพัฒนาซอฟแวร์รุ่นที่ดีกว่าได้ง่ายขึ้น
ออบเจ็กต์ (Object)
Object คือ สิ่งที่นามาใช้ในการแก้ปัญหาที่สนใจ
Object ประกอบด้วยคุณลักษณะ 3 ประการ คือ
- identity ระบุได้ว่าสิ่งนั้นคืออะไร
- attribute คุณสมบัติของสิ่งนั้น เหมือนหรือแตกต่างกับสิ่งอื่น
- state มีสถานะหรือทาอะไรได้บ้าง (Method) เมื่อมีการ
เปลี่ยนแปลงสถานะหรือค่าต่างๆในแต่ละช่วงเวลา
Object-Oriented Programming
การเขียนโปรแกรมคอมพิวเตอร์ ซึ่งให้ความสาคัญกับ อ็อบเจ็กต์
(Object) ที่นามาใช้เขียนโปรแกรม โดยการนิยามคลาส (Class) ขึ้นเพื่อ
เป็นตัวแบบของกลุ่มอ็อบเจ็กต์
ทาให้สามารถนากลับไปใช้ในการปรับปรุงและพัฒนาได้สะดวก รวดเร็วขึ้น
Class Object2
Object1
ทาไมต้องใช้ OOP
• เราสนใจแต่เขียนโค้ด เพื่อแก้ปัญหา
• แต่วิธีการพัฒนา
– ที่ถูกนามาใช้ไม่สามารถแก้ปัญหาได้
– เกิดจากในช่วง
• analysis and design
• Maintainability
• ค่าใช้จ่ายส่วนใหญ่
– เกิดจากการพัฒนาและปรับปรุงต่อจากครั้งแรก
• ต้องแน่ใจว่าซอฟต์แวร์ที่พัฒนาขึ้น
– มั่นใจว่ามีประสิทธิภาพ
– ง่ายต่อการดูแลรักษาในอนาคต
Object Oriented Principles
• Abstraction และ encapsulation เป็นหลักการพื้นฐานในการ
พัฒนาซอฟต์แวร์
• Abstraction ช่วยให้สามารถพิจารณาความคิดที่ซับซ้อนได้
– ทราบรายละเอียด
– ลดความสับสนและสิ่งที่ไม่เกี่ยวข้องได้
• Encapsulation ช่วยให้สามารถมุ่งเน้นสิ่งที่สนใจ
– เมื่อพิจารณาวิธีการทางานได้
– รายละเอียดของวิธีการทางาน
• polymorphism ช่วยให้สามารถใช้ประโยชน์จาก
– Generalization/Specialization
– โดยใช้การ inheritance (สืบทอด)
Object Oriented Principles (ต่อ)
• Generalization พิจารณาวัตถุที่มีคุณสมบัติทั่วไปและกาหนด
ระดับชั้นย่อยๆ เฉพาะที่จะสืบทอด
• Generalization / specialization กาหนดคุณลักษณะทั่วไป
และการดาเนินงานของวัตถุที่แตกต่าง
• กาหนดคุณลักษณะพิเศษเพิ่มเติมของวัตถุได้
• เมื่อสืบทอดจะได้รับลักษณะทั่วไปทั้งหมดของวัตถุแบบอัตโนมัติ
และเพิ่มลักษณะพิเศษขึ้นได้
• Polymorphism สามารถขยายความสามารถให้กับวัตถุได้
อะไรคือ Object Oriented Programming?
• การพิจารณาวัตถุทางกายภาพ
• การพิจารณาสิ่งที่เกี่ยวข้องกับวัตถุ
• การเขียนโปรแกรมที่เกี่ยวข้องกับการสร้างองค์ความรู้
– ในรูปของโมเดลเพื่อแก้ปัญหาทางธุรกิจ
– วัตถุมีสถานะและพฤติกรรมที่เกี่ยวข้องกับมัน ในแต่ละช่วงเวลา (สิ่งที่
โปรแกรมคอมพิวเตอร์ทาได้)
• โลกแห่งความจริงที่มีความยุ่งยากและซับซ้อน
– ต้องสร้างโมเดลจากโลกแห่งความจริง
• มุ่งเน้นที่ปัญหาและตัดส่วนที่ไม่สนใจออก
object oriented analysis and design techniques
• ช่วยให้เข้าใจโลกความจริงและได้โมเดลที่เข้าใจง่าย
• 'Class' คือการออกแบบซอฟต์แวร์ที่อธิบายคุณสมบัติทั่วไป
โดยการสร้างแบบจาลองทางซอฟแวร์
• ‘Object’ ถูกสร้างขึ้นจากClass ที่ออกแบบสาหรับแทนแต่ละสิ่งที่
เกิดขึ้นจริง
ประโยชน์ของวิธี OOP
• ก่อนการพัฒนาซอฟต์แวร์ สิ่งแรกที่คุณต้องพัฒนาคือ แบบจาลอง
เชิงวัตถุ
• การสร้างแบบจาลองเชิงวัตถุ เน้นการวิเคราะห์และออกแบบ
– แนวคิดที่ดีกว่า (แบบจาลองข้อมูลและพฤติกรรมร่วมกัน)
– การบารุงรักษาที่ดีกว่า (เข้าใจมากขึ้น)
– สามารถนามาใช้ดีกว่า (มีการห่อหุ้มวัตถุ)
สรุป OOP
• เขียนโปรแกรมเชิงวัตถุเกี่ยวข้องกับการสร้าง Class โดยการสร้าง
แบบจาลองจากโลกแห่งความจริง
• ช่วยให้สร้าง Class ที่มีคุณลักษณะพิเศษ โดยการสืบทอด
พฤติกรรมของ Class หลักได้
• พฤติกรรมที่มีความแตกต่าง สามารถปรับเปลี่ยนหรือเพิ่มเติมได้
ตามความต้องการที่เปลี่ยนแปลง
• สามารถเข้าถึงได้และไม่ต้องเปลี่ยนส่วนต่าง ๆ ของระบบ

Object-Oriented Programming

  • 1.
  • 2.
  • 3.
    Different Programming Paradigms •การเขียนโปรแกรมเชิงโครงสร้าง – ใช้การพัฒนาในบล็อกที่กาหนด • เข้าใจง่าย • ดูแลรักษาง่าย • การเขียนโปแกรมเชิงวัตถุ – ใช้การพัฒนาแบบจาลองของแต่ละส่วนของโปรแกรม • สามารถนามาใช้ใหม่ได้ • ง่ายต่อการปรับปรุงและพัฒนา
  • 4.
    Introduction to ObjectOrientated Programming • กระบวนทัศน์ที่แตกต่างกันในการเขียนโปรแกรม • ข้อดีของ OOP – แนวทางการพัฒนาซอฟแวร์และการสร้างแบบจาลอง – แนวคิดที่ใช้ในการเขียนโปรแกรมเชิงวัตถุ (abstraction, encapsulation, inheritance and polymorphism)
  • 5.
    คุณลักษณะของภาษาที่ใช้เขียนโปรแกรมเชิงวัตถุ • Encapsulation – สามารถปกป้องและเก็บรักษาข้อมูลไว้ภายในและปลอดภัยจากการเชื่อมต่อ ภายนอกได้ •Inheritance – กระบวนการที่คลาสจะสืบทอดคุณสมบัติพื้นฐานทั้งหมดของคลาสหลัก สามารถ นาบางส่วนมาใช้และเพิ่มเติมคุณสมบัติได้ • Polymorphism – ความสามารถที่จะอยู่ในรูปแบบต่างๆ ได้หลากหลาย • Abstraction – ความสามารถในการแสดงข้อมูลในระดับแนวคิด
  • 6.
    คุณสมบัติที่สาคัญของการเขียนโปรแกรมเชิงวัตถุ • เน้นข้อมูลมากกว่าขั้นตอน • โปรแกรมจะถูกแบ่งออกเป็นส่วนประกอบ •โครงสร้างข้อมูลได้รับการออกแบบให้เป็นเช่นเดียวกับวัตถุ • ฟังก์ชั่นการทางาน+ข้อมูล = โครงสร้างข้อมูลของวัตถุ • ข้อมูลถูกซ่อนไว้และไม่สามารถเข้าถึงได้จากภายนอก • วัตถุสามารถสื่อสารกันผ่านฟังก์ชั่น • ข้อมูลและฟังก์ชั่นสามารถเพิ่มได้ง่าย • การออกแบบโปรแกรมเป็นแบบล่างขึ้นบน
  • 7.
    กระบวนการที่สาคัญใน OOP • Classdefinitions • instance • Abstraction • Encapsulation • Inheritance • Polymorphism • Generic class • Class libraries • Message passing
  • 8.
    Object Oriented Programming •เขียนโปรแกรมเชิงวัตถุคือ – การนากระบวนทัศน์ต่าง ๆ มาใช้ในการพัฒนาซอฟต์แวร์ – การพัฒนาที่เน้นส่วนประกอบของซอฟต์แวร์ที่นากลับมาใช้ใหม่ได้ – ประหยัดเวลาในการพัฒนาและประหยัดค่าใช้จ่าย – ช่วยให้สามารถปรับปรุงและพัฒนาซอฟแวร์รุ่นที่ดีกว่าได้ง่ายขึ้น
  • 9.
    ออบเจ็กต์ (Object) Object คือสิ่งที่นามาใช้ในการแก้ปัญหาที่สนใจ Object ประกอบด้วยคุณลักษณะ 3 ประการ คือ - identity ระบุได้ว่าสิ่งนั้นคืออะไร - attribute คุณสมบัติของสิ่งนั้น เหมือนหรือแตกต่างกับสิ่งอื่น - state มีสถานะหรือทาอะไรได้บ้าง (Method) เมื่อมีการ เปลี่ยนแปลงสถานะหรือค่าต่างๆในแต่ละช่วงเวลา
  • 10.
    Object-Oriented Programming การเขียนโปรแกรมคอมพิวเตอร์ ซึ่งให้ความสาคัญกับอ็อบเจ็กต์ (Object) ที่นามาใช้เขียนโปรแกรม โดยการนิยามคลาส (Class) ขึ้นเพื่อ เป็นตัวแบบของกลุ่มอ็อบเจ็กต์ ทาให้สามารถนากลับไปใช้ในการปรับปรุงและพัฒนาได้สะดวก รวดเร็วขึ้น Class Object2 Object1
  • 11.
    ทาไมต้องใช้ OOP • เราสนใจแต่เขียนโค้ดเพื่อแก้ปัญหา • แต่วิธีการพัฒนา – ที่ถูกนามาใช้ไม่สามารถแก้ปัญหาได้ – เกิดจากในช่วง • analysis and design • Maintainability • ค่าใช้จ่ายส่วนใหญ่ – เกิดจากการพัฒนาและปรับปรุงต่อจากครั้งแรก • ต้องแน่ใจว่าซอฟต์แวร์ที่พัฒนาขึ้น – มั่นใจว่ามีประสิทธิภาพ – ง่ายต่อการดูแลรักษาในอนาคต
  • 12.
    Object Oriented Principles •Abstraction และ encapsulation เป็นหลักการพื้นฐานในการ พัฒนาซอฟต์แวร์ • Abstraction ช่วยให้สามารถพิจารณาความคิดที่ซับซ้อนได้ – ทราบรายละเอียด – ลดความสับสนและสิ่งที่ไม่เกี่ยวข้องได้ • Encapsulation ช่วยให้สามารถมุ่งเน้นสิ่งที่สนใจ – เมื่อพิจารณาวิธีการทางานได้ – รายละเอียดของวิธีการทางาน • polymorphism ช่วยให้สามารถใช้ประโยชน์จาก – Generalization/Specialization – โดยใช้การ inheritance (สืบทอด)
  • 13.
    Object Oriented Principles(ต่อ) • Generalization พิจารณาวัตถุที่มีคุณสมบัติทั่วไปและกาหนด ระดับชั้นย่อยๆ เฉพาะที่จะสืบทอด • Generalization / specialization กาหนดคุณลักษณะทั่วไป และการดาเนินงานของวัตถุที่แตกต่าง • กาหนดคุณลักษณะพิเศษเพิ่มเติมของวัตถุได้ • เมื่อสืบทอดจะได้รับลักษณะทั่วไปทั้งหมดของวัตถุแบบอัตโนมัติ และเพิ่มลักษณะพิเศษขึ้นได้ • Polymorphism สามารถขยายความสามารถให้กับวัตถุได้
  • 14.
    อะไรคือ Object OrientedProgramming? • การพิจารณาวัตถุทางกายภาพ • การพิจารณาสิ่งที่เกี่ยวข้องกับวัตถุ • การเขียนโปรแกรมที่เกี่ยวข้องกับการสร้างองค์ความรู้ – ในรูปของโมเดลเพื่อแก้ปัญหาทางธุรกิจ – วัตถุมีสถานะและพฤติกรรมที่เกี่ยวข้องกับมัน ในแต่ละช่วงเวลา (สิ่งที่ โปรแกรมคอมพิวเตอร์ทาได้) • โลกแห่งความจริงที่มีความยุ่งยากและซับซ้อน – ต้องสร้างโมเดลจากโลกแห่งความจริง • มุ่งเน้นที่ปัญหาและตัดส่วนที่ไม่สนใจออก
  • 15.
    object oriented analysisand design techniques • ช่วยให้เข้าใจโลกความจริงและได้โมเดลที่เข้าใจง่าย • 'Class' คือการออกแบบซอฟต์แวร์ที่อธิบายคุณสมบัติทั่วไป โดยการสร้างแบบจาลองทางซอฟแวร์ • ‘Object’ ถูกสร้างขึ้นจากClass ที่ออกแบบสาหรับแทนแต่ละสิ่งที่ เกิดขึ้นจริง
  • 16.
    ประโยชน์ของวิธี OOP • ก่อนการพัฒนาซอฟต์แวร์สิ่งแรกที่คุณต้องพัฒนาคือ แบบจาลอง เชิงวัตถุ • การสร้างแบบจาลองเชิงวัตถุ เน้นการวิเคราะห์และออกแบบ – แนวคิดที่ดีกว่า (แบบจาลองข้อมูลและพฤติกรรมร่วมกัน) – การบารุงรักษาที่ดีกว่า (เข้าใจมากขึ้น) – สามารถนามาใช้ดีกว่า (มีการห่อหุ้มวัตถุ)
  • 17.
    สรุป OOP • เขียนโปรแกรมเชิงวัตถุเกี่ยวข้องกับการสร้างClass โดยการสร้าง แบบจาลองจากโลกแห่งความจริง • ช่วยให้สร้าง Class ที่มีคุณลักษณะพิเศษ โดยการสืบทอด พฤติกรรมของ Class หลักได้ • พฤติกรรมที่มีความแตกต่าง สามารถปรับเปลี่ยนหรือเพิ่มเติมได้ ตามความต้องการที่เปลี่ยนแปลง • สามารถเข้าถึงได้และไม่ต้องเปลี่ยนส่วนต่าง ๆ ของระบบ