ข้ามไปยังเนื้อหา

B.3 · การเขียนโปรแกรมแบบ面向对象 (Object-oriented programming)

International Baccalaureate · IB Diploma · Computer Science · HL · หัวข้อ 7

ดูสไลด์ ฝึกฝน
7.1

ขอบเขตและเงื่อนไขก่อนเข้าเรียน

จุดเน้น HL ที่ได้รับการสนับสนุน. เป้าหมายการประเมินผล 2027 ครั้งแรก; PDFทางการส่งกลับ 403; บทสรุปที่เก็บรวบรวมแล้วเก่าเป็นผลการประเมินสุดท้าย 2026. คู่มือที่เหลือ มาตรฐานการประเมิน และข้อกำหนดเชิงปฏิบัติยังคงมีค่าบันทึกไว้เดิม

สิ่งจำเป็น: อ่านปริมาณและหน่วยที่กำหนด ใช้เลขคณิตและเงื่อนไขโมเดลด้านล่าง บทเรียนแต่ละบทพัฒนาวิธีการของตนเองก่อนการถ่ายโอนแบบอิสระ

นี่คือตัวอย่างการสอนดั้งเดิมหรือที่ระบุว่าเป็นเรื่องfictional อย่างชัดเจน ไม่ใช่การวัดค่าจริงหรือการสืบสวนผู้เรียนที่ได้รับการประเมินเสร็จสมบูรณ์

7.2

วัตถุ: สถานะ พฤติกรรม และอินเทอร์เฟซ

อะไรจะเป็นคำอธิบายสำหรับการสังเกตนี้?

  • วัตถุจำลองบัญชีธนาคารสองตัวสามารถตอบสนองต่อการฝากเงินที่เหมือนกันได้ ในขณะที่มียอดคงเหลือต่างกัน
  • เริ่มต้นด้วยการทำนาย ระบุปริมาณหรือลักษณะที่คุณจะเปรียบเทียบ แล้วตัดสินใจว่าหลักฐานอะไรที่จะแยกแยะคำอธิบายสองแบบได้

สร้างโมเดล

  • คลาสกำหนดชนิดที่มีสถานะและพฤติกรรม วัตถุคือ อินสแตนซ์ การห่อหุ้ม (Encapsulation) ควบคุมการเข้าถึงผ่านอินเทอร์เฟซเพื่อให้การดำเนินการรักษา invariant ไว้ได้ การสืบทอด (Inheritance) สร้างความสัมพันธ์ของชนิดที่เหมาะสม ส่วนการประกอบ (Composition) สร้างวัตถุที่ประกอบด้วยหรือใช้อีกวัตถุหนึ่ง
  • encapsulation: การควบคุมการเข้าถึงสถานะผ่านอินเทอร์เฟซ; instance: วัตถุเฉพาะของคลาสหนึ่ง
วัตถุ: สถานะ พฤติกรรม และอินเทอร์เฟซ: แผนภาพกรณีตัวอย่างต้นฉบับ

เลือกหลักฐานที่นำมาทดสอบได้

  • การเรียกเมทόδทำงานกับอินสแตนซ์เฉพาะ ตัวแปรสถานะควรเป็นไปตามเงื่อนไขก่อน (preconditions) และเงื่อนไขหลัง (postconditions) Polymorphism ทำให้โค้ดสามารถใช้อินเทอร์เฟซร่วมกันพร้อมกับการนำไปใช้ที่แตกต่างกัน เมื่อสัญญา (contract) ถูกเคารพ
  • สร้างโมเดลบัญชีหรือสินค้าคงคลังสังเคราะห์ขนาดเล็ก ทดสอบอินสแตนซ์อิสระสองตัว ปฏิเสธการดำเนินการที่ไม่ถูกต้องและค่าขอบเขต เก็บโมเดลห่างจากบัญชีการเงินจริงและข้อมูลการเข้าสู่ระบบ

เริ่มจากปริมาณที่ทราบแล้ว

  • ระบุค่าที่ทราบและหน่วยของมัน เลือกความสัมพันธ์โดยพิจารณาว่าข้อสมมติฐานสอดคล้องกับเคสนี้ แล้วจัดรูปสมการก่อนแทนค่า
  • Known: Object A เริ่มต้นที่ 40 หน่วยและได้รับ 15; Object B เริ่มต้นที่ 20 และได้รับ 5. ยอดคงเหลือสุดท้ายคือ 55 และ 25. ผลรวมของทั้งสองคือ 80 แต่ยอดคงเหลือของแต่ละ object ไม่เท่ากับ 80

ตัวอย่าง:

อินสแตนซ์เริ่มต้นที่ 12 หน่วย เพิ่ม 8 และลบออก 3. หาค่าสุดท้าย用它 ใช้ลำดับเดียวกัน: จำนวน Known → โมเดล → ความสัมพันธ์ → การแทนค่า → หน่วยและการตีความ


ตรวจสอบข้อสรุปและขอบเขต

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

เตือน:

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

จุดสำคัญ:

วัตถุ: สถานะ พฤติกรรม และอินเทอร์เฟซ: การเรียกเมท็อดทำงานกับอินสแตนซ์เฉพาะ ตัวแปรสถานะควรเป็นไปตามเงื่อนไขก่อน (preconditions) และเงื่อนไขหลัง (postconditions) Polymorphism ทำให้โค้ดสามารถใช้อินเทอร์เฟซร่วมกันพร้อมกับการนำไปใช้ที่แตกต่างกัน เมื่อสัญญา (contract) ถูกเคารพ

ลายเส้นที่ดำเนินการได้และขอบเขต

class Account:
    def __init__(self, balance):
        self.balance = balance
    def withdraw(self, amount):
        if amount < 0 or amount > self.balance:
            return False
        self.balance -= amount
        return True
a, b = Account(15), Account(20)
print(a.withdraw(30), a.balance, b.balance)
print(a.withdraw(15), a.balance, b.balance)

ผลลัพธ์ที่คาดหวัง:

False 15 20
True 0 20

การปฏิเสธจะเกิดขึ้นก่อนการเปลี่ยนแปลงสถานะ ด้วยยอดเงินเริ่มต้นที่ไม่ติดลบ การถอนเงินที่ได้รับการตรวจสอบแล้วจะรักษายอดเงินให้ ≥ 0 ชั้นเรียนการสอนขนาดเล็กนี้เปิดให้เห็นคุณสมบัติ (attributes) การออกแบบสำหรับใช้งานจริงต้องควบคุมทุกเส้นทางของการเปลี่ยนแปลงสถานะ ไม่ควรสันนิษฐานว่าเมทโธดเพียงอย่างเดียวจะรักษาการห่อหุ้มข้อมูลได้

คำศัพท์ ฝึกฝน
English ไทย
instance/ˈɪnstəns/ ตัวอย่าง
encapsulation/ɪnˌkæpsjʊˈleɪʃn/ การห่อหุ้ม

หัวข้อเพิ่มเติมใน International Baccalaureate · IB Diploma · Computer Science · HL

เข้าสู่ระบบหรือสร้างบัญชี

IGCSE, A-Level & AP