[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 1547] Re: Java スレッドプ ログラミングを読む会第 4 回議事録



小薮です。
# 最近なかなかお会いできませんねー > 高橋さん

On Thu, 1 Mar 2001 12:22:09 +0900
in [jfriends-ml 1546] Re: Java スレッドプログラミングを読む会第 4 回議事録
Toru TAKAHASHI <tooru6.takahashi@xxxxxxxxxxxxx> wrote:

> 高橋(徹)です。
> 
> Javaのプログラムで単なる集約(◇)とコンポジション(◆)の違いを実装
> するとしたら、後者はインナークラスあたりでしょうか? 

これは違うでしょう。たとえば生成したインナークラスのインスタンスを
外のオブジェクトに渡してしまったら、インナークラスのインスタンスと
それを含んでいるクラスのインスタンスの生存期間が一致しません。

Javaでは実装上の区別はつけられないと思っています。

C++の場合、ポインタや参照ではなくインスタンス自体をメンバとして
持っているような場合では明示的にコンポジションになると思います。


class child {
	int foo;
};

class parent {
	// c の生存期間はそれが属するparentのインスタンスと
	// 生存期間が一致
	child c;

	// 下のポインタで管理されるインスタンスはもちろん
	// それが属するparentのインスタンスと生存期間は
	// かならずしも一致しない
	child *p;
}


-----------------------------------
koyabu@xxxxxxxxxxxxxxxxx