アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
私は悩みをリストアップし始めたが、そのあまりの長さにいやけがさし、何も考えないことにした。-- Robert C. Pike
ここでいうオブジェクト指向ってどのオブジェクト指向? (スコア:1, 参考になる)
1. カプセル化 - 型の実装を構文的に隠蔽できること。例えばCやPascalでは何かが構造体であるか配列であるか常に意識することになるが、CLUやJavaではその違いを隠すことができる。
2. 保護 - 型の使用者がその実装をのぞくことができないこと。これによって、ふるまいさえ変えなければ、実装を変更しても型の使用者に影響を与えないことが保障でき、またパスワードのような情報が漏れ出さないようにすることもできる。
3. アドホックポリモルフィズム - 関数やパラメータつきデータ構造がたくさんの異なる型の値をとることができる。
4. パラメトリックポリモルフィズム - 関数やデータ構造が任意の値 (例:任意のオブジェクトのリスト)に対してパラメタライズできること。 MLとLispはこれを持つ。Javaは非Objectな型のために、これを完全に持つとは言えない。
5. 全てはオブジェクトなり - 全ての値はオブジェクト。Smalltalkでは真だが、 Javaでは (int等のため) 真ではない。
6. メッセージを送ることだけができる (All you can do is send a message, AYCDISAM) = Actorモデル - オブジェクトを直接いじることはできず、それと通信する、もしくはそれを起動することのみができる。Javaにおけるfieldの存在はこれに反する。
7. 仕様継承 = サブタイピング - ふたつの異なる型で、一方の型の値がもう一方の型の値として使われても型の正当性を破らないことを言語が保障できるようなもの。(例: Javaのインタフェース継承)。
8. 実装継承, 再利用 - ひとまとまりのコードを書いたら、それと似たコード (そのスーパーセット) が制御された方法で生成できる。つまりコードをコピーして編集する必要がない。制限された、特殊な抽象化である。 (例: Javaのクラス継承)。
9. 「関数の積和(sum-of-product-of-function)」パターン - オブジェクトは (実質的に)有限の簡単な名前の集合から選ばれるキー引数を第一引数に取り、それによってメソッドを呼び出す関数として動作する。
Re: (スコア:0)