View
34
Download
0
Embed Size (px)
Citation preview
Object-Oriented Programmingการเขียนโปรแกรมเชิงออ็บเจ็กต์
อาจารย์สมเกียรติ ช่อเหมือน สาขาวิชาวิศวกรรมซอฟต์แวร์ คณะวิทยาศาสตร์และเทคโนโลยี
วิวัฒนาการของกระบวนทัศน์ (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 หลักได้
• พฤติกรรมที่มีความแตกต่าง สามารถปรับเปลีย่นหรือเพิ่มเติมได้ตามความต้องการที่เปลี่ยนแปลง
• สามารถเข้าถึงได้และไม่ต้องเปลี่ยนส่วนต่าง ๆ ของระบบ