Apple Developer Connection
Advanced Search
Member Login Log In | Not a Member? Contact ADC

< 前ページ次ページ >

階層以外の類似性

複数のクラスが一組のメソッドを実装する場合、それらのクラスは多くの場合、共通のメソッドを宣言する抽象クラスの下にグループ化されます。各サブクラスは独自の方法でメソッドを再実装できますが、継承階層および抽象クラスの共通の宣言によってサブクラス間の本質的な類似性が範囲されます。

しかし、共通のメソッドを抽象クラスにグループ化できないこともあります。それにもかかわらず、ほとんどの点で関連のないクラスが、いくつかの類似メソッドを実装する必要があるかもしれません。このような限られた類似性は、階層関係にするには十分な理由にならない可能性があります。たとえば、アプリケーション内のオブジェクトのXML表現を作成し、XML表現からオブジェクトを初期化するためのサポートを追加する場合は次のようになります。

- (NSXMLElement *)XMLRepresentation;
- initFromXMLRepresentation:(NSXMLElement *)xmlString;

これらのメソッドをプロトコルとしてグループ化し、クラスをすべて同じプロトコルに準拠させることで、それらの類似性を反映できます。

オブジェクトはそれらのクラスではなく、このような類似性(クラスが準拠するプロトコル)に応じて型定義することができます。たとえば、NSMatrixはセルを表すオブジェクトと通信しなければなりません。matrixは、これらの各オブジェクトがNSCell(クラスをベースにした型)の一種であることを要求し、NSCellクラスを継承するすべてのオブジェクトがNSMatrixメッセージに応えるために必要なメソッドを持っているものと想定することができます。もう1つの方法として、NSMatrixオブジェクトはセルを表すオブジェクトに、特定のメッセージセットに対応できるメソッドを持つことを要求することができます(プロトコルをベースにした型)。この場合、NSMatrixオブジェクトはセルオブジェクトがメソッドさえ実装していれば、どのようなクラスに属しているかは問題にしません。



< 前ページ次ページ >


Last updated: 2007-10-31




Did this document help you?
Yes: Tell us what works for you.

It’s good, but: Report typos, inaccuracies, and so forth.

It wasn’t helpful: Tell us what would have helped.
Get information on Apple products.
Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Copyright © 2007 Apple Inc.
All rights reserved. | Terms of use | Privacy Notice