HOME
10章 継承の調整
委譲
- 実装で下手に継承を使うよりは委譲を使う方がよい。
- Listを作った後でstackを作りたくなった。そんな場合、Listの子クラスとしてStackを作ってはいけない。
- List{
-
- どこにでもadd, remove,
- first , last
- }
- stack{
-
- 先頭にpush,
- 先頭からpop
- }
- listの方がStackより拡張性がある。それなのにListの子クラスとしてStackを作ってしまう
-
- class STACK: public LIST
- と,Stackでありながら どこにでもadd, removeが出来てしまう。これはおかしい。
-
- そんな場合、継承を使わず,ListをStackの属性,所有物とするのがよい。
- class STACK{
-
- private:
-
- LIST MyList;
- public :
-
- void push( *data);
- *data pop;
- }
- STACK::push(*data)
- {
-
- MyListの先頭にaddする。
- }
- *data STACK::pop(void)
- {
-
- MyListの先頭から抜き出す。
- }
- これを、Pushやpopという操作をListクラスに委譲した,という。
-
HOME