定期的な愚痴を吐くためにブログを使うようになってきているmasaoです。
えー、本日はとある仕事でオッサンSEが打ち合わせ内で微妙な指摘をしていた件についての投稿です。しかし、結果的に何も理解できないままだったのは先に伝えておきます。
スポンサーリンク
スーパークラス・ベースクラス・基底クラスは別物
一応、プログラマですのでオブジェクト指向は完璧ではないかもしれませんが、よく使うシングルトンクラスなどの決まったパターンは抑えているつもりです。
そこで、ある資料にここは基底クラスを定義して、それぞれ派生させて子クラスをつくって違いは各子クラス内で吸収し、利用側は基底クラスのメソッドをコールすることでその違いを意識しないといった図や文章が書いてありました。
するとオッサンSEは「これは基底クラスではない。ベースクラスです。スーパークラスとも違う」とか食いつきだしました。
一同唖然。(なぜ、そこーーーーーーーーー)
一応、茶化すことが大好きな人が多いので「基底クラスとベースクラスとスーパークラスは違うものですか?」との質問が教えを乞うような感じでされます。
オッサンSE「機能的にこういうときはスーパークラスであって・・・もにょもにょ・・ごにょごにょ・・・・」
なにかブツブツ言っているのはわかります。が、結局ハッキリとした説明は最後まで聞けませんでした。誰も期待していませんでしたが・・・・
書いた人も .Net Framework を使うから基底クラスと何気なく書いただけです。親クラスと書いてあっても、スーパークラスでもベースクラスであっても誰もそこには突っ込みません。
ただ、オッサンSEはオブジェクト指向の継承を全く理解していないようでした。クラス図からできあがりのイメージが全くできていないようです。
オブジェクト指向を思考する
しかし、オッサンSEはどこでどのように学習し、このような境地に到達したのかはわかりませんが、思考することは大切なことです。
わたしは、命名について思考することはしませんが、どなたか、基底クラス・ベースクラス・スーパークラス・親クラスの名称は、それぞれどのような場合に使用されるのかご存知の方いましたら、教えてもらえると嬉しいです。
思考が停止しているのは、こちら側かもしれませんから。
後日談:
それでもオッサンSEは、その中で一番偉くお山の大将です。ボス猿です。みんなやんわりと反対意見を出していましたが、継承を理解していないオッサンSEによって、基底クラスは使わないことになり、それぞれ独立したクラスを作成することになりました。
余計な手間暇をわざとかけることが決定されました。一同、継承を使うの当然だろという場面でしたので怒っています。「設計に関わるなボケ」って感じを出しています。
無知恐るべしです。こうやって出来の悪いシステムが誕生していくのです。それも無駄に時間をかけて・・・・・
オッサンSEの気持ちも人として理解できます。単純に怖いのです。知らないことを使用されることが怖いのです。残念ながら継承を理解するのではなく、放棄する選択をしたのです。