【プログラミング】オブジェクト指向を人に説明するのは困難
virtualの説明というエントリで、
オブジェクト指向を教えるのは大変だと書きました。
最近ふと思ったのですが、
C++で教えようとしたから大変だったのでしょうか?
C++だと、オブジェクト指向設計の話
(例えば、継承、多態性、カプセル化やDPなど)
をしようとすると、
余計な面倒がついてまわります。
例えば、下のC++のコードは、
Personクラスのコンストラクタの宣言です。
「このnameを、コンストラクタ内部でchar*型のメンバ変数にコピーします。」
Person(const char* name);
というと、途端に話がややこしくなります。
どれくらい余計な話が増えるかちょっと考えてみます。
- Deep Copy, Shallow Copy
- RAII
- 暗黙の型変換
- 代入演算子
- コピーコンストラクタ
オブジェクト指向設計の話をしようとしてるのに、
これじゃわき道に逸れていってしまいますよね。
C++使う以上、ポインタは避けて通れないので、
ポインタださなきゃいいじゃん、というわけにもいかなそうですし。
でも、結局、説明者側がサンプルについて熟慮すればいいのかもしれないですね。
(とはいえ、そんな完璧には行かないのが現状。)