クラス名・変数名に迷ったら書き込むスレ。Part23
■ このスレッドは過去ログ倉庫に格納されています
0640デフォルトの名無しさん
2013/10/14(月) 09:37:04.59>あと、オブジェクトがある型と互換性があるかどうかを検査する機能は
>ライブラリじゃなくて言語の機能じゃないのかなと
C++/Javaに代表される、現在メジャーな静的型付け言語における
「静的なオブジェクト指向言語」であれば正にその通りなんだけど、
他のケースでは事情が異なる
・Smalltalk/Ruby/JavaScript: 動的型付け言語における「動的なオブジェクト指向」
=> 言語ではなくライブラリの機能であり、
インターフェイス仕様による検査は存在しない
・Objective-C: 静的型付け言語における「動的なオブジェクト指向」
=> 言語およびライブラリの機能であり、
インターフェイス仕様による検査は任意
つまり基本は無検査だけど、仕様を明示的に宣言すれば静的に型検査される
そして、Objective-Cにはインターフェイスという概念に加えて「プロトコル」がある
これがデータ型としては不一致だけどインターフェイスの要求には従うことを意味し、
オブジェクト間は委譲(delegate)によって動的に結合される
前置きが長くなったけど、Objective-C的発想では:
>>625
・特定のインターフェースを実装してる:hasXxxInterface
・必要なメソッドやプロパティを持っている:hasXxxProtocol
■ このスレッドは過去ログ倉庫に格納されています