แบบฝึกหัด - ภาพรวมของ OOP

(นิยามของ OOP)

อธิบายความหมายของการเขียนโปรแกรมเชิงวัตถุ (Object-Oriented Programming) และยกตัวอย่างประโยชน์ที่ได้จากการใช้ OOP

Solution to Exercise (นิยามของ OOP)

การเขียนโปรแกรมเชิงวัตถุ (Object-Oriented Programming) คือแนวคิดในการพัฒนาโปรแกรมที่เน้นการจัดโครงสร้างให้เป็น "วัตถุ" หรือ "ออบเจกต์" ซึ่งแต่ละวัตถุจะมีคุณลักษณะ (Attributes) และพฤติกรรม (Methods) เป็นของตัวเอง แนวคิดนี้ช่วยให้การเขียนโค้ดเป็นระเบียบ เข้าใจง่าย และสะดวกต่อการแก้ไขหรือเพิ่มฟังก์ชัน เนื่องจากแต่ละวัตถุทำหน้าที่ของตัวเองอย่างอิสระ

ประโยชน์ของการใช้ OOP

  1. การจัดโครงสร้างที่ดี โค้ดมีการจัดระเบียบและแยกเป็นส่วนๆ ตามลักษณะงาน ทำให้ง่ายต่อการดูแลรักษา

  2. การนำกลับมาใช้ซ้ำ (Reusability) คลาสและวัตถุที่สร้างขึ้นสามารถนำกลับมาใช้ได้ในหลายโปรแกรม ลดการเขียนโค้ดซ้ำ

  3. ความยืดหยุ่นและขยายได้ง่าย (Scalability) สามารถเพิ่มฟังก์ชันหรือปรับปรุงโค้ดได้ง่าย โดยไม่ต้องเปลี่ยนโครงสร้างหลักของโปรแกรม

  4. การซ่อนข้อมูล (Encapsulation) ช่วยป้องกันไม่ให้มีการแก้ไขข้อมูลโดยไม่ตั้งใจจากภายนอก ทำให้โค้ดมีความปลอดภัยและเสถียร

(หลักการสำคัญของ OOP)

อธิบายหลักการพื้นฐานของ OOP ได้แก่ การห่อหุ้ม (Encapsulation), การสืบทอด (Inheritance), การซ่อนข้อมูล (Abstraction), และโพลีมอร์ฟิซึม (Polymorphism)

Solution to Exercise (หลักการสำคัญของ OOP)

หลักการพื้นฐานของการเขียนโปรแกรมเชิงวัตถุ (OOP) มี 4 ข้อหลัก ดังนี้

  1. การห่อหุ้ม (Encapsulation) คือการซ่อนรายละเอียดการทำงานภายในของวัตถุ (Object) ไว้ และให้มีเพียงการเข้าถึงผ่านเมธอด (Methods) ที่กำหนดไว้เท่านั้น เช่น การซ่อนข้อมูลที่เป็นแอททริบิวต์ภายในคลาส เพื่อให้มั่นใจว่าข้อมูลเหล่านั้นจะไม่ถูกแก้ไขโดยตรงจากภายนอก และช่วยให้โปรแกรมมีความปลอดภัยและเป็นระเบียบมากขึ้น

  2. การสืบทอด (Inheritance) คือการสร้างคลาสใหม่โดยใช้คลาสที่มีอยู่แล้วเป็นต้นแบบ เพื่อให้คลาสใหม่สามารถใช้คุณสมบัติและพฤติกรรมของคลาสต้นแบบได้ และสามารถเพิ่มหรือลดคุณสมบัติได้ตามต้องการ การสืบทอดช่วยลดการเขียนโค้ดซ้ำซ้อนและเพิ่มความยืดหยุ่นในการพัฒนาระบบ

  3. การซ่อนข้อมูล (Abstraction) คือการจัดการความซับซ้อนของโปรแกรมโดยแสดงเฉพาะข้อมูลที่จำเป็นสำหรับการใช้งาน และซ่อนรายละเอียดการทำงานเบื้องหลังไว้ เช่น แสดงเพียงการทำงานหลักๆ ของระบบแก่ผู้ใช้ และซ่อนการประมวลผลภายในออกไป ทำให้โปรแกรมเข้าใจง่ายและใช้งานสะดวก

  4. โพลีมอร์ฟิซึม (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