17
Object-Oriented Programming การเขียนโปรแกรมเชิงอ็อบเจ็กต์ อาจารย์สมเกียรติ ช่อเหมือน สาขาวิชาวิศวกรรมซอฟต์แวร์ คณะวิทยาศาสตร์และเทคโนโลยี ([email protected])

Object-Oriented Programming

Embed Size (px)

Citation preview

Page 1: Object-Oriented Programming

Object-Oriented Programmingการเขียนโปรแกรมเชิงออ็บเจ็กต์

อาจารย์สมเกียรติ ช่อเหมือน สาขาวิชาวิศวกรรมซอฟต์แวร์ คณะวิทยาศาสตร์และเทคโนโลยี

([email protected])

Page 2: Object-Oriented Programming

วิวัฒนาการของกระบวนทัศน์ (Paradigm Evolution)

ที่มา: http://www.slideshare.net/FALLEE31188/brookshear-06

Page 3: Object-Oriented Programming

Different Programming Paradigms

• การเขียนโปรแกรมเชิงโครงสร้าง– ใช้การพัฒนาในบล็อกที่ก าหนด

• เข้าใจง่าย

• ดูแลรักษาง่าย

• การเขียนโปแกรมเชิงวัตถุ– ใช้การพัฒนาแบบจ าลองของแต่ละส่วนของโปรแกรม

• สามารถน ามาใช้ใหม่ได้

• ง่ายต่อการปรับปรุงและพัฒนา

Page 4: Object-Oriented Programming

Introduction to Object Orientated Programming

• กระบวนทัศน์ที่แตกต่างกันในการเขยีนโปรแกรม

• ข้อดีของ OOP– แนวทางการพัฒนาซอฟแวร์และการสร้างแบบจ าลอง

– แนวคิดที่ใช้ในการเขียนโปรแกรมเชิงวัตถุ(abstraction, encapsulation, inheritance and polymorphism)

Page 5: Object-Oriented Programming

คุณลักษณะของภาษาที่ใช้เขียนโปรแกรมเชิงวัตถุ

• Encapsulation– สามารถปกป้องและเก็บรักษาข้อมลูไว้ภายในและปลอดภัยจากการเชื่อมตอ่

ภายนอกได้

• Inheritance– กระบวนการที่คลาสจะสบืทอดคุณสมบัตพิื้นฐานทั้งหมดของคลาสหลกั สามารถ

น าบางส่วนมาใช้และเพิ่มเติมคุณสมบัตไิด้

• Polymorphism– ความสามารถทีจ่ะอยู่ในรูปแบบต่างๆ ได้หลากหลาย

• Abstraction– ความสามารถในการแสดงข้อมูลในระดบัแนวคิด

Page 6: Object-Oriented Programming

คุณสมบัติที่ส าคัญของการเขียนโปรแกรมเชิงวัตถุ

• เน้นข้อมูลมากกว่าขั้นตอน• โปรแกรมจะถูกแบ่งออกเป็นส่วนประกอบ• โครงสร้างข้อมูลได้รับการออกแบบให้เป็นเช่นเดียวกับวัตถุ• ฟังก์ชั่นการท างาน+ข้อมูล = โครงสร้างข้อมูลของวัตถุ• ข้อมูลถูกซ่อนไว้และไม่สามารถเข้าถึงได้จากภายนอก• วัตถุสามารถสื่อสารกันผ่านฟังก์ช่ัน• ข้อมูลและฟังก์ชั่นสามารถเพิ่มไดง้่าย• การออกแบบโปรแกรมเป็นแบบล่างขึ้นบน

Page 7: Object-Oriented Programming

กระบวนการที่ส าคัญใน OOP

• Class definitions• instance• Abstraction• Encapsulation• Inheritance• Polymorphism• Generic class• Class libraries • Message passing

Page 8: Object-Oriented Programming

Object Oriented Programming

• เขียนโปรแกรมเชิงวัตถุคือ

– การน ากระบวนทัศน์ต่าง ๆ มาใช้ในการพัฒนาซอฟต์แวร์

– การพัฒนาที่เน้นส่วนประกอบของซอฟต์แวร์ที่น ากลับมาใช้ใหม่ได้

– ประหยัดเวลาในการพัฒนาและประหยัดค่าใช้จ่าย

– ช่วยให้สามารถปรับปรุงและพัฒนาซอฟแวร์รุ่นที่ดีกว่าได้ง่ายขึ้น

Page 9: Object-Oriented Programming

ออบเจ็กต์ (Object)

Object คือ สิ่งที่น ามาใช้ในการแก้ปัญหาที่สนใจ

Object ประกอบด้วยคุณลักษณะ 3 ประการ คือ

- identity ระบุได้ว่าสิ่งนั้นคืออะไร

- attribute คุณสมบัติของสิ่งนั้น เหมือนหรือแตกต่างกับสิ่งอื่น

- state มีสถานะหรือท าอะไรได้บ้าง (Method) เมื่อมีการเปลี่ยนแปลงสถานะหรือค่าต่างๆในแต่ละช่วงเวลา

Page 10: Object-Oriented Programming

Object-Oriented Programming

การเขียนโปรแกรมคอมพิวเตอร์ ซึ่งให้ความส าคัญกับ อ็อบเจ็กต์(Object) ที่น ามาใช้เขียนโปรแกรม โดยการนิยามคลาส (Class) ขึ้นเพ่ือเป็นตัวแบบของกลุ่มอ็อบเจ็กต์

ท าให้สามารถน ากลับไปใช้ในการปรับปรุงและพัฒนาได้สะดวก รวดเร็วขึ้น

Class Object2

Object1

Page 11: Object-Oriented Programming

ท าไมต้องใช้ OOP

• เราสนใจแต่เขียนโค้ด เพื่อแก้ปัญหา• แต่วิธีการพัฒนา

– ที่ถูกน ามาใช้ไม่สามารถแก้ปัญหาได้– เกิดจากในช่วง

• analysis and design• Maintainability

• ค่าใช้จ่ายส่วนใหญ่– เกิดจากการพัฒนาและปรับปรุงตอ่จากคร้ังแรก

• ต้องแน่ใจว่าซอฟต์แวร์ที่พัฒนาขึ้น– มั่นใจว่ามีประสิทธิภาพ– ง่ายต่อการดูแลรักษาในอนาคต

Page 12: Object-Oriented Programming

Object Oriented Principles

• Abstraction และ encapsulation เป็นหลักการพื้นฐานในการพัฒนาซอฟต์แวร์

• Abstraction ช่วยให้สามารถพิจารณาความคิดที่ซับซ้อนได้– ทราบรายละเอียด– ลดความสับสนและสิ่งที่ไม่เกี่ยวข้องได้

• Encapsulation ช่วยให้สามารถมุ่งเน้นสิ่งที่สนใจ– เมื่อพิจารณาวิธีการท างานได ้– รายละเอียดของวิธีการท างาน

• polymorphism ช่วยให้สามารถใช้ประโยชน์จาก– Generalization/Specialization– โดยใช้การ inheritance (สืบทอด)

Page 13: Object-Oriented Programming

Object Oriented Principles (ต่อ)

• Generalization พิจารณาวัตถุที่มีคุณสมบัติทั่วไปและก าหนดระดับชั้นย่อยๆ เฉพาะที่จะสบืทอด

• Generalization / specialization ก าหนดคุณลักษณะทั่วไปและการด าเนินงานของวัตถุที่แตกต่าง

• ก าหนดคุณลักษณะพิเศษเพิ่มเติมของวัตถุได้• เมื่อสืบทอดจะได้รับลักษณะทั่วไปทั้งหมดของวัตถุแบบอัตโนมัติ

และเพิ่มลักษณะพิเศษขึ้นได้• Polymorphism สามารถขยายความสามารถให้กับวัตถุได้

Page 14: Object-Oriented Programming

อะไรคือ Object Oriented Programming?

• การพิจารณาวัตถุทางกายภาพ• การพิจารณาสิ่งที่เก่ียวข้องกับวัตถุ• การเขียนโปรแกรมที่เกี่ยวข้องกับการสร้างองค์ความรู้

– ในรูปของโมเดลเพ่ือแก้ปัญหาทางธุรกิจ– วัตถุมีสถานะและพฤติกรรมที่เกี่ยวข้องกับมัน ในแต่ละช่วงเวลา (สิ่งที่

โปรแกรมคอมพิวเตอร์ท าได)้

• โลกแห่งความจริงที่มคีวามยุ่งยากและซบัซ้อน– ต้องสร้างโมเดลจากโลกแห่งความจริง

• มุ่งเน้นที่ปัญหาและตัดส่วนที่ไม่สนใจออก

Page 15: Object-Oriented Programming

object oriented analysis and design techniques

• ช่วยให้เข้าใจโลกความจริงและได้โมเดลที่เข้าใจงา่ย

• 'Class' คือการออกแบบซอฟต์แวรท์ี่อธิบายคุณสมบัติทั่วไป โดยการสร้างแบบจ าลองทางซอฟแวร์

• ‘Object’ ถูกสร้างขึ้นจากClass ที่ออกแบบส าหรับแทนแตล่ะสิง่ที่เกิดขึ้นจริง

Page 16: Object-Oriented Programming

ประโยชน์ของวิธี OOP

• ก่อนการพัฒนาซอฟต์แวร์ สิ่งแรกที่คุณต้องพัฒนาคือ แบบจ าลองเชิงวัตถุ

• การสร้างแบบจ าลองเชิงวัตถุ เน้นการวิเคราะห์และออกแบบ– แนวคิดที่ดีกว่า (แบบจ าลองข้อมูลและพฤติกรรมร่วมกัน)

– การบ ารุงรักษาที่ดีกว่า (เข้าใจมากขึ้น)

– สามารถน ามาใช้ดีกว่า (มีการห่อหุ้มวัตถุ)

Page 17: Object-Oriented Programming

สรุป OOP

• เขียนโปรแกรมเชิงวัตถุเก่ียวข้องกับการสร้าง Class โดยการสร้างแบบจ าลองจากโลกแห่งความจริง

• ช่วยให้สร้าง Class ที่มีคุณลักษณะพิเศษ โดยการสืบทอดพฤติกรรมของ Class หลักได้

• พฤติกรรมที่มีความแตกต่าง สามารถปรับเปลีย่นหรือเพิ่มเติมได้ตามความต้องการที่เปลี่ยนแปลง

• สามารถเข้าถึงได้และไม่ต้องเปลี่ยนส่วนต่าง ๆ ของระบบ