いままであまり技術的なことを自分から発信することはなかったのだが、ふと思い立ったので記録してみる。
あくまで自論なので万人受けするかは不明。
とにかくわかりにくい
オブジェクト指向という言葉は良く聞くし、資料もたくさんあるのだが全くと言っていいほど理解できなかった。正直今でもしっかりと理解しているかはわからないくらいだ。多分こういうことだろうな程度でしかない。
なぜわかりにくいか
良くたとえで学校のクラスやRPGのキャラクターなどを紹介されるが、実際に学校関係、ゲーム作成に携わっている人ならすんなり理解できるかもしれない。
しかし、自分のプログラムと全くかけ離れているとどこでコレを使うのかわからない。
え?自分の環境でどこで使うの??
みたいになる(なった)
後は、言語の環境とかもあるかもしれない。C#をメインで使っているがWinFormsの時は全く理解できていなかった(使わなくてもどうにかなっていた)。
簡単な解決策
一番簡単な解決策は、データベース設計をしてみる。簡単じゃないという突っ込みは無しでw
SQL Sever とか MySQLとか無償環境で自分のPCに入れてもいいと思う。
身近なものを題材にしたりしてもイイと思う。例えば自宅の備品管理とか?作ったからと言って継続して管理する必要はないと思うけどw
そしてそのデータをテーブル設計通りのクラスを作って配列なりリストにする。これだけでオブジェクト指向なプログラミングだと思ってる。
そのあとは自然とこのデータをこうしたい。とか思い始めるのでクラス内にメソッドを追加していくだけ。気が付くと、あれ?これがオブジェクト指向?的な感じになるw(なった)
後は日々努力で、よりコンパクトにしていったり、継承を使ってみたりと理解が進むと思う。
データベース設計を勉強するのも結構なコストなんだけど価値はかなりあると思う。
簡単にまとめてしまうと、規則性のある一定の数量(100とか1000とか)のデータを利用する環境がないとどうしてもクラス設計の恩恵を感じることができず、そんなことしなくても動くし考えるのが面倒だから使わない。となってしまう。(なってた)
まとめ
ここまでで正直10年くらいかかっているので正直自分の頭の悪さに悩むw
それでも習得する価値は十分ある。
オブジェクト指向の傾向なのかデータベース設計の傾向なのかわからないが、情報に対して最小の共通点を探すクセ?が付いた(表現できないw)。
これとこれは共通の情報を持っているから一緒に管理できるとかそういう感じ。
いまだにこんなはっきりとしていないので説得力はあまりないかもしれないが、この感覚が少しでも伝わるとイイなと思い書いてみたw
ただ、あまりこだわりすぎると設計ばかり時間がかかるのでその辺はうまく付き合う必要がある。たまには、勢い任せのプログラミングも大事だと思うw
新規のプログラムならとりあえずバンバン実装して後からクラス化を考える手法が多い気がするw
と、思いのまま書きなぐったので間違えていたら指摘してもらえると幸いです。
なんせ無資格、独学プログラマーなので答えが何かわからんw
コメント