- - PR -
is-a関連、has-a関連
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2002-07-08 15:04
現在、Java勉強中です。
皆さんから寄せられるスレッドを参考にしながら、 レベルアップを目指しています。 最近では、オブジェクト指向設計についても勉強しています。 そのオブジェクト指向設計において、クラス間の関係として、 is-a関係 is-a-kind-of関係 has-a関係 a-part-of関係などの言葉が説明されています。 is-a-kind-of関係、has-a関係は、なんとなく分かるのですが、 is-a関係とis-a-kind-of関係の違い、 a-part-of関係の違いがよく分かりません。 オブジェクト指向設計に精通されている方がお見えでしたら、 ご教示の程、よろしくお願いいたします。 | ||||
|
投稿日時: 2002-07-08 17:45
>現在、Java勉強中です。
>そのオブジェクト指向設計において、クラス間の関係として、 >is-a関係 オブジェクト指向設計と,オブジェクト指向 プログラミングは実は必ずしも関係は強くない ように思います.少なくともそれほど役に立たない のでは. 私個人としてはデザインパターン関係や 「Javaプログラムデザイン 第3版」の 方をお勧めします. | ||||
|
投稿日時: 2002-07-10 22:56
オブジェクト指向設計に精通してる訳ではありませんが、私なりに書きます。 「is-a、has-a」という言葉は良く聞きますが、「is-a-kind-of、a-part-of」は、余り聞きませんね。 「is-a、has-a」は、クラス間の継承・集約関係を現す言葉ですよね。 「is-a-kind-of」は多重継承に於ける「is-a」だと思います。 「a-part-of」は、集約に於いて、集約されている側を表現した言葉ではないでしょうか? つまり、 単純 多重(インターフェース含む) 「is-a」 ⇔ 「is-a-kind-of」 :継承 する側 される側 「has-a」 ⇔ 「a-part-of」 :集約 もし間違ってたら、ご免なさい! m(_ _)m | ||||
|
投稿日時: 2002-07-16 14:58
私なりに情報を調べてみたのですが、
2000年 −春− の情報処理試験にこれに関する問題が出題されたようです。 http://www.sun.co.jp/service/education/test/SCJ-P-2-sample.html しかし、 ・この問題の出題に関するコメントがあまりよくないこと。 ・以降、同様の問題が出題されていないこと。 などからすると、やはりこの件は、あまり深く考えない方が良いと思いました。 他の方からご指摘があったように『デザインパターン』に力を入れて、 勉強していきたいと思います。 ご回答を頂いた方々、貴重なご意見をいただきありがとうございました。 | ||||
|
投稿日時: 2002-07-16 17:41
そうですか、でも最低限「is-a」、「has-a」関連、つまり「継承」「集約」の意味は押さえて下さい。 そうでないと、『デザインパターン』は無理だと思います。 それから、最近は、どんなオブジェクト指向環境でもフレームワークに『デザインパターン』が採用されています。 そういう意味では、『デザインパターン』に関する知識は必須になりつつあります。 でも、『デザインパターン』を意識するあまり、フレームワークを台無しにする『デザインパターン』の軽率な適用は、弊害になる可能性が高いですから、これも注意が必要だと思いますよ。 最後に、「パターン」は、「デザイン」だけでなく、「アーキテクチャ」「アナリシス」「実装」等にもありますけど、最初は『デザインパターン』ですかね。 頑張って下さい。 | ||||
|
投稿日時: 2002-07-17 01:46
蛇足ですが、組織パターンというのもありますね。 http://www.bell-labs.com/user/cope/Patterns/Process/org_structure.html | ||||
|
投稿日時: 2002-07-20 16:03
もう話題終わってます?
私もis-a、has-aぐらいしか知りませんが。 前にはまったところがis-a関係。 〜は〜であると言葉で言える場合でも以下の2通りがあるようです。 1.ポチは犬である 2.秋田犬は犬である 1はクラスとインスタンスの関係、 2はクラスとクラス(サブクラス)の関係 1がis-kind-ofで 2がis-a だと思うんですが、、、たぶん。 (詳しい人教えて) | ||||
|
投稿日時: 2002-07-21 12:54
こんなふうに理解しています。
[is_a関係] class Class_B extends Class_A{ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ } Class_B "is_a" Class_A. Class_B is a "kind_of" Class_A. "is_a"関係 = "kind_of"関係 (微妙な違いはあるかも) [has_a関係] class Class_B { Class_A ca; ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ } Class_B "has_a" Class_A. Class_A is a "part_of" Class_B. ------------------------------------- "is_a"関係と"has_a"関係は"デザインパターン"においても基本。 | ||||
1
