調べ物した結果

現役SEが仕事と直接関係ないことを調べた結果とか感想とか

抽象化するとはいったんなんということか。思考整理


abstract(抽象)なクラスの説明がうまくできなかったんだ。

目次

辞書

とりあえず辞書。
www.weblio.jp

抽象的とは、共通した要素を抜き出して一般化していること、または具体性に欠けていて実態が明確ではないことである。

おおよそあってる気がする。だけどプログラム、設計関連ではここに別のニュアンスがもたらされている気がする。
抽象の概念そのものよりプログラムの本質の話か。

なんでプログラムがいるんだ。

楽をしたいから。とかまーいろいろあるけど「問題を解決するため」にあるとおもう。
抽象的には「問題を解決するため」具体的には業務によるね。

プログラムは「問題解決のため」が前提なので、
(問題解決のための)抽象化。ということになる。
ということで問題を解決しようとしたら「抽象化」が必要になる場面があって、そのために抽象的なクラスがあるんだね。

抽象表現がもたらすメリットとはなんぞや。

先ほどの引用の通り「具体性に欠けていて実態が明確ではない」のが抽象だ。
字面だけおうとマイナス面が漂うが、具体的でないことによって「柔軟性」が確保できる。
抽象表現によって解決できる課題は「プログラム」の「柔軟性」

個別、固有の完全実体にしてしまうと融通が利かない。
多種多様の業務一つ一つ。それぞれをすべてプログラムで記述するのは非効率で現実的ではない。
また、業務は移ろうのでせっかくつくっても変更が発生する。
ということである程度の柔軟性を確保する必要がある。あった。

ということで。

抽象クラスとは:プログラムの柔軟性を保つためにあえて具体性を排除して実態を持たない。
となる。
abstractは実体みたいなのがあるので怪しいんだけれど。
実際のところがっつり保守なんかをしないとただただ具体的ではない不安定なものにしかみえないかもしれない。
たぶん恩恵なりメリットは実感する訓練が必要な気がする。