オブジェクト思考設計のインターフェースクラスのC++での実装

C++は基本的にはJavaの様なオブジェクト指向専用言語ではなく、オブジェクト指向設計が実装「可能」である言語である。そのためオブジェクト指向設計を実装するのに実装する技術者が正しい知識を以ってやりくりしなければならない。
インターフェースクラスというオブジェクト指向の概念は、C++ではこの抽象関数のみを定義したクラス(メンバー、関数の実体を持たない)で実現可能である。
複数のインターフェースの実装は多重継承で実現する。
注意して欲しいのが、インターフェースクラスではない実体を持ったクラスの多重継承は事故が起こりうるので危険であるため一般的にやらないことを推奨されている。しかし、この知識のインパクトが強く、オブジェクト指向設計の知識に
乏しく、インターフェースクラスの概念を知らない未熟な技術者はC++のインターフェースクラスの多重継承も一色単に考え「ダメだ」と声高に主張するものもいるが、単に知識がないだけである。もう一度、なぜ実体を持ったクラスの多重継
承がまずいのかを思い出してもらえば、実体を持ってないクラス(=インターフェースクラス)の多重継承が安全なのかはよく理解できると思うので、検討して欲しい。Javaではインターフェースと継承の概念が明確に分かれていて、複数のイン
ターフェースの実装は許され、複数の継承は許されていない。C++はこの概念の違いが技術者に委ねられているのでその境が頭の固い旧型の技術者には理解するのが難しいようである。

コメントを残す