0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

大規模C++ソフトウェアデザイン

Last updated at Posted at 2020-09-13

#諸言
 学習履歴全体のリンク
 https://qiita.com/shigural/private/444b991293e5ab1b40af
#本文
##大規模C++ソフトウェアデザイン
###1-10章
執筆中
###付録A
Protocol Hierachyパターン
多くのオブジェクトを1つのクラスにまとめたいが、派生クラスの持つ関数が独立しており、基底クラスに空の関数を実装しなければならない かつ派生クラスが今後多数発生すると考えられるような状況で用いられるデザインパターン。
クラスは2層以上からなるが、ここでは基底クラス(A)→派生クラス(B)→派生クラス(C)の派生クラス の3つの場合を例にとって説明する。
(基本的に3層以上で構成することが望ましい)
Aクラス:基本機能を実装する。派生クラスに関する実装は書かない
Bクラス:独自の実装を書く
Cクラス:さらに独自の実装を書く
クラスを利用する場合には必要な一番基底となる型にキャストする。例えばobjectがBクラス独自の実装を利用する場合には次のように実装する
if(p=ClassB::dynamicCast(object)){
p->function();
}
else{
cout<<"object is not have function()"<<endl;
}
これにより、派生クラスに追加で機能をもたせた場合にも基底クラスを変更しなくてすむ
###付録B-D
執筆中

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?