モデルオブジェクト
モデルオブジェクトは、アプリのデータを含むオブジェクトの型であり、データへのアクセスを提供し、データを操作するためのロジックを実装します。モデルオブジェクトは、Model-View-Controller デザインパターンで定義された3つの役割のいずれかひとつを演じます。(他の二つの役割は、ビューとコントローラオブジェクトによって演じられます。) アプリの永続的な状態の部分である任意のデータは(その永続状態がファイルやデータベースに格納されているかどうか)、アプリの中にデータがロードされた後、モデル·オブジェクトに存在する必要があります。
モデルオブジェクトは、知識を表現し、特定の問題領域に関連する事を専門にするため、その問題領域が有効である場合、それらを再利用できます。理想的には、モデルオブジェクトは、そのデータを表示するビュー·オブジェクトへの明示的な接続がなく、ユーザーにはそのデータを編集できるようにします。言い換えれば、それはユーザインタフェースで接続してはならず、プレゼンテーションの問題であってはいけません。
うまく設計されたモデルクラス
モデルクラス、つまり、コアデータテクノロジーを利用し、NSManagedObject のサブクラスを利用している場合は、通常、NSObject のサブクラスのモデルオブジェクトを生み出すクラスです。モデル·オブジェクトを作成するには、基本的なクラスのようにそれを定義して、Cocoa の命名規則に従って下さい。例えば、インスタンス変数の名前、宣言されたプロパティの名前、宣言されたメソッドは小文字で始め、埋め込まれた単語の最初の文字を大文字にします。
モデルのサブクラスを実装するときは、クラス設計の以下の側面を考慮する必要があります。
- インスタンス変数。アプリのカプセル化されたデータを保持するためのインスタンス変数を宣言します。インスタンス変数は、オブジェクト、スカラー値、または、例えば NSRange のような構造体にできます。そこには、非オブジェクトの型に対してオブジェクトを使用する交換条件があり、オブジェクトの可変性は、考慮事項です。
- アクセサメソッドと宣言されたプロパティ。アクセサメソッドと宣言されたプロパティは、オブジェクトのインスタンスデータへのアクセスを仲介するため、カプセル化を維持する方法を提供します。アクセサメソッドは、一般的にインスタンス変数の値を取得し、設定します(通称 getter メソッドと setter メソッドとして知られています)。宣言されたプロパティは、実行環境が、クラスのアクセサメソッドを合成できるようにする、言語レベルの利便性です。アクセサメソッドと宣言されたプロパティの重要な役割は、オブジェクトのメモリを管理することです。このため、getter メソッドと setter メソッドを実装するための推奨される形式があります。
- キー値コーディング。キー値コーディングは、クライアントがキーとしてプロパティ名を使用して、オブジェクトのプロパティにアクセスできるようにするメカニズムです。これは、コアデータによって使われ、ココアの他の場所で使われています。アクセサメソッド(と、暗黙のうちに、宣言されたプロパティ)の名前は、このメカニズムの要因です。
- 初期化と解放。ほとんどの場合、モデルクラスは、妥当な初期値にそのインスタンス変数を設定するための初期化メソッドを実装します。これは、初期化メソッドのための標準的な形式に従う必要があります。また、その dealloc メソッドでオブジェクトの値を保持している任意のインスタンス変数を解放することを確認する必要があります。
- オブジェクトエンコード。モデルクラスのオブジェクトがアーカイブされることが予想される場合、そのオブジェクトのインスタンス変数をクラスがコード化し、デコードしていることを確認してください。
- オブジェクトコピー。クライアントが、モデルオブジェクトをコピーすることが予想される場合、あなたのクラスは、オブジェクトコピーを実装する必要があります。
前提条件の記事
関連記事
既出の議論
Objective-C でのプログラミング
次の章
前の章