Перейти к содержанию

B.3 · Объектно-ориентированное программирование

International Baccalaureate · IB Diploma · Computer Science · HL · Тема 7

7.1

Область применения и требования

Поддерживаемая фокусная точка HL. Первая оценка 2027 целевой показатель; официальный PDF возвращает 403; ранее приобретенный краткий план является финальной оценкой 2026. Оставшиеся руководство, оценка и практические требования сохраняют свои зарегистрированные удержания.

Предварительные требования: прочитайте указанные количества и единицы измерения, используйте арифметику и нижеприведённые условия модели. Каждый урок осваивает собственный метод перед независимым переносом.

Это оригинальные или явно вымышленные учебные примеры, а не фактические измерения или завершённые оценочные исследования учащихся.

English Русский
instance/ˈɪnstəns/ экземпляр
encapsulation/ɪnˌkæpsjʊˈleɪʃn/ инкапсуляция
7.2

Объекты: состояние, поведение и интерфейс

Что могло бы объяснить это наблюдение?

  • Два объекта модели банковского счета могут реагировать на одну и ту же операцию пополнения, имея при этом разные балансы.
  • Начните с гипотезы. Укажите величины или признаки, которые вы будете сравнивать, затем определите, какие доказательства могут различить два объяснения.

Постройте модель

  • Класс определяет тип с состоянием и поведением. Объект — это экземпляр. Инкапсуляция контролирует доступ через интерфейс, чтобы операции могли сохранять инварианты. Наследование моделирует соответствующую связь типов; композиция моделирует объект, содержащий или использующий другой объект.
  • инкапсуляция: Управление доступом к состоянию через интерфейс; экземпляр: Отдельный объект класса.
Объекты: состояние, поведение и интерфейс: исходная диаграмма разобранного примера

Выберите доказательства для проверки гипотезы

  • Вызов метода действует над конкретным экземпляром. Изменения состояния должны удовлетворять предусловиям и постусловиям. Полиморфизм позволяет коду использовать общий интерфейс с различными реализациями при соблюдении контракта.
  • Реализуйте небольшую синтетическую модель счета или инвентаря. Протестируйте два независимых экземпляра, отклоните недопустимые операции и граничные значения. Держите модель отдельно от реальных финансовых счетов и учетных данных.

Работайте с известными величинами

  • Укажите известные значения и их единицы измерения. Выберите соотношение, предположения которого подходят к данному случаю, затем преобразуйте формулу перед подстановкой.
  • Известно: объект A начинается со 40 единиц и получает 15; объект B начинается со 20 и получает 5. Итоговые балансы составляют 55 и 25. Их сумма равна 80, но ни один из индивидуальных балансов объектов не равен 80.

Пример:

Экземпляр начинается со 12 единиц, добавляет 8 и удаляет 3. Найдите его конечное значение. Используйте ту же последовательность: известные величины → модель → соотношение → подстановка → единицы и интерпретация.


Проверьте вывод и его границы применимости

  • Класс — это не то же самое, что и один экземпляр. Наследование не всегда лучше композиции. Просто скрытие поля не доказывает, что все операции сохраняют допустимое состояние.
  • Вернитесь к первоначальному наблюдению. Объясните, что подтверждает результат, при каких условиях он верен и каким образом можно проверить конкурирующее объяснение.

Предупреждение:

Два экземпляра одного класса всегда должны иметь общий баланс. Это утверждение неверно: Класс — это не то же самое, что и один экземпляр. Наследование не всегда лучше композиции. Просто скрытие поля не доказывает, что все операции сохраняют допустимое состояние.

Ключевые моменты:

Объекты: состояние, поведение и интерфейс: Вызов метода действует над конкретным экземпляром. Изменения состояния должны удовлетворять предусловиям и постусловиям. Полиморфизм позволяет коду использовать общий интерфейс с различными реализациями при соблюдении контракта.

Работоспособная трассировка и границы

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. Этот небольшой учебный класс раскрывает атрибуты; производственный дизайн должен контролировать все пути мутации, а не полагаться на то, что метод один обеспечивает инкапсуляцию.

Больше тем в International Baccalaureate · IB Diploma · Computer Science · HL

Войти или создать аккаунт

IGCSE, A-Level & AP