- PR -

is-a関連、has-a関連

1
投稿者投稿内容
はるな先生
会議室デビュー日: 2002/01/24
投稿数: 8
投稿日時: 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/03/28
投稿数: 255
投稿日時: 2002-07-08 17:45
>現在、Java勉強中です。

>そのオブジェクト指向設計において、クラス間の関係として、
>is-a関係

オブジェクト指向設計と,オブジェクト指向
プログラミングは実は必ずしも関係は強くない
ように思います.少なくともそれほど役に立たない
のでは.

私個人としてはデザインパターン関係や
「Javaプログラムデザイン 第3版」の
方をお勧めします.
object
ぬし
会議室デビュー日: 2002/03/20
投稿数: 338
お住まい・勤務地: 香川県高松市
投稿日時: 2002-07-10 22:56
引用:

はるな先生さんの書き込み (2002-07-08 15:04) より:
is-a-kind-of関係、has-a関係は、なんとなく分かるのですが、
is-a関係とis-a-kind-of関係の違い、
a-part-of関係の違いがよく分かりません。


オブジェクト指向設計に精通してる訳ではありませんが、私なりに書きます。

「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/01/24
投稿数: 8
投稿日時: 2002-07-16 14:58
私なりに情報を調べてみたのですが、
2000年 −春− の情報処理試験にこれに関する問題が出題されたようです。
http://www.sun.co.jp/service/education/test/SCJ-P-2-sample.html
しかし、
・この問題の出題に関するコメントがあまりよくないこと。
・以降、同様の問題が出題されていないこと。
などからすると、やはりこの件は、あまり深く考えない方が良いと思いました。
他の方からご指摘があったように『デザインパターン』に力を入れて、
勉強していきたいと思います。

ご回答を頂いた方々、貴重なご意見をいただきありがとうございました。
object
ぬし
会議室デビュー日: 2002/03/20
投稿数: 338
お住まい・勤務地: 香川県高松市
投稿日時: 2002-07-16 17:41
引用:

はるな先生さんの書き込み (2002-07-16 14:58) より:
他の方からご指摘があったように『デザインパターン』に力を入れて、
勉強していきたいと思います。


そうですか、でも最低限「is-a」、「has-a」関連、つまり「継承」「集約」の意味は押さえて下さい。
そうでないと、『デザインパターン』は無理だと思います。
それから、最近は、どんなオブジェクト指向環境でもフレームワークに『デザインパターン』が採用されています。
そういう意味では、『デザインパターン』に関する知識は必須になりつつあります。
でも、『デザインパターン』を意識するあまり、フレームワークを台無しにする『デザインパターン』の軽率な適用は、弊害になる可能性が高いですから、これも注意が必要だと思いますよ。
最後に、「パターン」は、「デザイン」だけでなく、「アーキテクチャ」「アナリシス」「実装」等にもありますけど、最初は『デザインパターン』ですかね。
頑張って下さい。
あまぴょん
会議室デビュー日: 2002/01/28
投稿数: 12
投稿日時: 2002-07-17 01:46
引用:

objectさんの書き込み (2002-07-16 17:41) より:
最後に、「パターン」は、「デザイン」だけでなく、「アーキテクチャ」「アナリシス」「実装」等にもありますけど、最初は『デザインパターン』ですかね。
頑張って下さい。



蛇足ですが、組織パターンというのもありますね。
http://www.bell-labs.com/user/cope/Patterns/Process/org_structure.html
みやも
ベテラン
会議室デビュー日: 2002/04/22
投稿数: 74
投稿日時: 2002-07-20 16:03
もう話題終わってます?

引用:

「is-a、has-a」という言葉は良く聞きますが、「is-a-kind-of、a-part-of」は、余り聞きませんね。



私もis-a、has-aぐらいしか知りませんが。

前にはまったところがis-a関係。

〜は〜であると言葉で言える場合でも以下の2通りがあるようです。
1.ポチは犬である
2.秋田犬は犬である

1はクラスとインスタンスの関係、
2はクラスとクラス(サブクラス)の関係

1がis-kind-ofで
2がis-a

だと思うんですが、、、たぶん。
(詳しい人教えて)
asip
ベテラン
会議室デビュー日: 2001/12/27
投稿数: 77
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)