コンテンツへスキップ

B.3・オブジェクト指向プログラミング

国際バカロレア · IB Diploma · Computer Science · SL · トピック 7

查看幻灯片 練習する
7.1

対象範囲と前提条件

対応するSLの焦点。最初の評価 2027 の目標;公式PDFでは 403 が返されます;古い取得済みブリーフィングは最終評価 2026 です。残りのガイド、評価、および実践的要項は、記録された保留事項を維持します。

前提条件:指定された数量と単位を読み取り、算術を使用し、以下のモデル条件に従う。各授業は独立した転移前に独自の方法を発展させる。

これらは元々または明示的に架空の教学例であり、実際の測定値や完了した評価対象学習者調査ではない。

7.2

オブジェクト:状態、振る舞い、およびインターフェース

この観察を説明するのは何か?

  • 2つの銀行口座モデルオブジェクトは、異なる残高を保持しながらも、同じ預金操作に応答できる。
  • まず予測を立てる。比較したい量や特徴を明記し、2つの説明を区別できる証拠は何かを決定せよ。

モデルを構築する

  • クラスは状態と振る舞いを持つ型を定義する。オブジェクトはインスタンスである。カプセル化は、操作が不変式を維持できるようにするためのインターフェースを通じてアクセスを制御する。継承は適切な型の関係性をモデル化し、合成(コンポジション)はオブジェクトが他のオブジェクトを含んでいるか使用している関係をモデル化する。
  • エンカプスレーション: インターフェースを通じて状態へのアクセスを制御すること;インスタンス: クラスの個々のオブジェクト。
オブジェクト: 状態、振る舞い、およびインターフェース: 元例示図

モデルを検証できる証拠を選ぶ

  • メソッド呼び出しは特定のインスタンスに対して動作する。状態の変化は前条件と後条件を満たすべきである。ポリモルフィズムは、契約が遵守される場合、異なる実装でも共通のインターフェースを使ってコードを記述することを可能にする。
  • 小型の架空の口座や在庫モデルを実装せよ。2つの独立したインスタンスをテストし、無効な操作や境界値を拒否せよ。モデルを実際の金融口座や認証情報から遠ざけておけ。

既知の値から始める

  • 既知の値と単位を明記する。このケースに適応する仮定を持つ関係式を選び、代入前に変形する。
  • 既知: オブジェクトAは 40 単位から始まり 15 を受け取る;オブジェクトBは 20 から始まり 5 を受け取る。最終残高は 55 と 25 である。それらの合計は 80 だが、いずれの個別オブジェクトの残高も 80 ではない。

例:

ある値が12単位から始まり、8を加え、3を引きました。最終値を求めよ。同じ手順を用いてください: 既知量 → モデル → 関係式 → 代入 → 単位と解釈。


結論とその限界を確認する

  • クラスは単一のインスタンスと同じものではない。継承が常に合成より優れているわけではない。フィールドを隠蔽するだけでは、すべての操作が有効な状態を維持することが保証されない。
  • 元の観察に戻り、結果が何を裏付けているか、どのような条件を前提としているかを説明し、対立する説明を検証する方法を一つ示す。

警告:

クラス instances の2つは常に1つの残高を共有しなければならないという主張は誤りです。クラスは1つのインスタンスと同じものではありません。継承が自動的にコンポジションより優れているわけではありません。単にフィールドを隠すだけでは、すべての操作が有効な状態を維持することを証明しません。

重要:

オブジェクト: 状態、振る舞い、およびインターフェース: メソッド呼び出しは特定のインスタンスに対して動作する。状態の変化は前条件と後条件を満たすべきである。ポリモルフィズムは、契約が遵守される場合、異なる実装でも共通のインターフェースを使ってコードを記述することを可能にする。

実行可能なトレースと境界

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を維持します。この小さな授業クラスは属性を露出しますが、生産環境の設計ではメソッド自体がカプセル化を強制すると仮定せず、すべての変異経路を制御する必要があります。

English 日本語
instance/ˈɪnstəns/ インスタンス
encapsulation/ɪnˌkæpsjʊˈleɪʃn/ カプセル化

国際バカロレア · IB Diploma · Computer Science · SL の他のトピック

ログインまたはアカウント作成

IGCSE, A-Level & AP