แบบฝึกหัด - ภาพรวมของ OOP¶
(นิยามของ OOP)
อธิบายความหมายของการเขียนโปรแกรมเชิงวัตถุ (Object-Oriented Programming) และยกตัวอย่างประโยชน์ที่ได้จากการใช้ OOP
(หลักการสำคัญของ OOP)
อธิบายหลักการพื้นฐานของ OOP ได้แก่ การห่อหุ้ม (Encapsulation), การสืบทอด (Inheritance), การซ่อนข้อมูล (Abstraction), และโพลีมอร์ฟิซึม (Polymorphism)
Solution to Exercise (หลักการสำคัญของ OOP)
หลักการพื้นฐานของการเขียนโปรแกรมเชิงวัตถุ (OOP) มี 4 ข้อหลัก ดังนี้
การห่อหุ้ม (Encapsulation) คือการซ่อนรายละเอียดการทำงานภายในของวัตถุ (Object) ไว้ และให้มีเพียงการเข้าถึงผ่านเมธอด (Methods) ที่กำหนดไว้เท่านั้น เช่น การซ่อนข้อมูลที่เป็นแอททริบิวต์ภายในคลาส เพื่อให้มั่นใจว่าข้อมูลเหล่านั้นจะไม่ถูกแก้ไขโดยตรงจากภายนอก และช่วยให้โปรแกรมมีความปลอดภัยและเป็นระเบียบมากขึ้น
การสืบทอด (Inheritance) คือการสร้างคลาสใหม่โดยใช้คลาสที่มีอยู่แล้วเป็นต้นแบบ เพื่อให้คลาสใหม่สามารถใช้คุณสมบัติและพฤติกรรมของคลาสต้นแบบได้ และสามารถเพิ่มหรือลดคุณสมบัติได้ตามต้องการ การสืบทอดช่วยลดการเขียนโค้ดซ้ำซ้อนและเพิ่มความยืดหยุ่นในการพัฒนาระบบ
การซ่อนข้อมูล (Abstraction) คือการจัดการความซับซ้อนของโปรแกรมโดยแสดงเฉพาะข้อมูลที่จำเป็นสำหรับการใช้งาน และซ่อนรายละเอียดการทำงานเบื้องหลังไว้ เช่น แสดงเพียงการทำงานหลักๆ ของระบบแก่ผู้ใช้ และซ่อนการประมวลผลภายในออกไป ทำให้โปรแกรมเข้าใจง่ายและใช้งานสะดวก
โพลีมอร์ฟิซึม (Polymorphism) คือความสามารถของวัตถุหรือเมธอดในการทำงานได้หลายรูปแบบ เช่น เมธอดที่มีชื่อเดียวกันในคลาสต่างๆ สามารถทำงานแตกต่างกันได้ ขึ้นอยู่กับว่าถูกเรียกใช้จากคลาสใด การใช้โพลีมอร์ฟิซึมทำให้โค้ดมีความยืดหยุ่นสูง และง่ายต่อการปรับปรุงหรือขยายการทำงานในอนาคต
(คลาสและออปเจกต์)
อธิบายความแตกต่างระหว่าง “คลาส” และ “ออบเจกต์” และยกตัวอย่างคลาสและออบเจกต์ในชีวิตจริง
Solution to Exercise (คลาสและออปเจกต์)
คลาส (Class) คือ แม่แบบหรือโครงสร้างที่ใช้ในการสร้างวัตถุ (Object) ซึ่งจะกำหนดคุณสมบัติ (Attributes) และพฤติกรรม (Methods) ของวัตถุนั้น คลาสเป็นแนวคิดเชิงนามธรรม (Abstract) ที่กำหนดลักษณะของสิ่งที่เราต้องการให้โปรแกรมจำลองขึ้น เช่น คลาส "รถยนต์" ซึ่งกำหนดคุณสมบัติเช่น สี รุ่น และยี่ห้อ รวมถึงพฤติกรรมอย่างเช่น การขับและการหยุด
ออบเจกต์ (Object) คือ ตัวแทนของคลาสที่ถูกสร้างขึ้นมาเพื่อใช้งานจริงๆ หรือก็คือ "ตัวอย่าง" ของคลาสนั้นเอง ออบเจกต์มีคุณสมบัติและพฤติกรรมตามที่คลาสกำหนดไว้ แต่มีค่าหรือสถานะเฉพาะเป็นของตัวเอง เช่น ออบเจกต์ "รถยนต์สีแดง รุ่น Camry" ซึ่งเป็นตัวแทนของคลาส "รถยนต์" และมีคุณลักษณะเฉพาะที่กำหนดไว้
ตัวอย่างในชีวิตจริง
คลาส: "สัตว์เลี้ยง" (Pet) เป็นคลาสที่มีคุณสมบัติเช่น ชื่อ, อายุ และชนิดสัตว์ และมีพฤติกรรม เช่น การกิน การนอน
ออบเจกต์: "เจ้าเหมียว" ซึ่งเป็นออบเจกต์ของคลาส "สัตว์เลี้ยง" มีคุณสมบัติ ชื่อว่า "เจ้าเหมียว", อายุ 3 ปี, ชนิดสัตว์คือ "แมว"
(ตัวอย่างคลาสและออปเจกต์)
คิดคลาสหนึ่งคลาสจากชีวิตจริง เช่น "รถยนต์" และระบุแอททริบิวต์ (Attributes) และเมธอด (Methods) ที่ควรมีในคลาสนั้น
Solution to Exercise (ตัวอย่างคลาสและออปเจกต์)
ตัวอย่างคลาส "โทรศัพท์มือถือ"
Attributes (แอททริบิวต์)
brand ยี่ห้อของโทรศัพท์ (เช่น Apple, Samsung)
model รุ่นของโทรศัพท์ (เช่น iPhone 13, Galaxy S21)
storage ความจุหน่วยความจำ (เช่น 128GB, 256GB)
battery_capacity ความจุแบตเตอรี่ (เช่น 4000mAh)
camera_quality คุณภาพกล้อง (เช่น 12MP, 48MP)
color สีของโทรศัพท์ (เช่น ดำ, ขาว, ทอง)
price ราคา
Methods (เมธอด)
make_call(number) โทรไปยังหมายเลขที่กำหนด
send_message(number, message) ส่งข้อความไปยังหมายเลขที่กำหนด
take_photo() ถ่ายภาพโดยใช้กล้อง
browse_internet(url) เข้าถึงเว็บไซต์ตามที่กำหนด
show_battery_status() แสดงสถานะแบตเตอรี่คงเหลือ
`charge_battery() ` ชาร์จแบตเตอรี่ให้เต็ม
(เขียนคลาสด้วย Python)
เขียนคลาสจากโจทย์ก่อนหน้านี้ด้วยภาษา Python
(สร้างออปเจกต์ Python)
เขียนคลาสจากโจทย์ก่อนหน้านี้ด้วยภาษา Python