C#

【C#】なぜオブジェクト指向ができないのか?オブジェクト指向が苦手な方必見!

C#を勉強したり、C#を使ってプログラミングをしていると、最初にぶち当たる壁は「オブジェクト指向」ではないでしょうか。
「オブジェクト指向」という単語だけ聞くだけで「うっ」と苦手意識がある人は少なからず多いはず…!

僕も駆け出しエンジニアの時はこのような気持ちがありました。
今回は、当時の僕を思い出して「なぜオブジェクト指向ができないのか」を説明します!

そして、オブジェクト指向を身に着けるためにはどのようにすればいいのかまでをシェアしていきます。

オブジェクト指向ができない理由

オブジェクト指向は、結構難しく感じたり、とかかりにくかったりすることがあると思います。
ぶっちゃけ余程の天才出ない限り「オブジェクト指向」の考え方はできません

なぜならプログラミングはいくつかの学びのフェーズがあります。

  1. 文法を理解する
  2. 共通化を図る
  3. デザインパターンを身に着ける
  4. テスト駆動開発身に着ける
  5. ドメイン駆動開発を身に着ける

第1段階「文法を理解する」

第1段階は、「文法を理解する・覚える」フェーズです。
ここでは、変数や定数の宣言を理解したり、ループや関数などの使い方など文法を勉強していきます。
これからC#の開発にあたり、このような基礎文法を学んでいきます。

ここでは「このように書いたら、このように動く」というようにプログラミングの動きを理解する必要があります。
そして、大体のエンジニアはこれ以上を求めようとしません

なぜなら、C#の文法を理解していれば、プログラムは動くし、それ以上に必要なことを学という思考にまずなりません。
あなたがエンジニアの場合、周りのエンジニアはどうですか?

職場の実際に動いているプログラミングが読めて、大体既存ソースの使い回しでオブジェクト指向について詳しく説明できる人はいらっしゃいますか?
大体は、文法覚えたらプログラミングができるようになったと思いがちです。

コンパイルが正常に通れば、C#は別にエラーを出したり、怒り始めたりしないので余計に「次のフェーズ」を意識することはなくなります。

第2段階「共通化を図る」

第2段階は、「共通化を考える」フェーズです。
プログラミングをしていると、「この処理とこの処理は似ている!」という感覚が生まれます。
同じ処理は冗長になったり、メンテナンスが大変ですから「まとめる」という考えが生まれます。

基礎文法を学んである程度プログラミングができるようになると、身につきます。
しかし、これはプログラミングに限らず仕事でも同じように同じことをしなくても、一箇所にまとめるという考えが生まれます。

スキル成長には「オブジェクト指向」が必須

第1段階、第2段階までが、普通に思いつく限界なのです。
もしも、これ以上のプログラミングを身に付けるとしたら「もう学ぶしかない」です。

それは「オブジェクト指向」を学しかないのです。
普通に考えて、オブジェクト指向みたいな考え方と言うのはかないと思います。

頭の良い人については、オブジェクト指向の考え方に至るかもしれないです。
しかし、普通の人はオブジェクト指向の考え方にいたりません。

なぜなら、私ちはプログラミングをする時にスタートからエンドまで上から下というようにイメージします。
しかし、オブジェクト指向は個々にそれぞれの役割を振るので、このように上から下というイメージがありません。

これがオブジェクト指向にとっかかりにくい理由なのではないかと思います。
なので、オブジェクト指向を知るためには、先人を真似して、知恵を学ぶことが近道です。

オブジェクト指向を身に着けるには?

オブジェクト指向を学ぶには色々な方法があります。
学校の先生や、会社の先輩に教えてもらう、身近にエンジニアの友人がいれば聞いてみるのも良いでしょう。
ただし、この場合教えてもらう人がオブジェクト指向を理解してコーディングができる人でないとNGです。

最近ではYouTubeやプロゲートなどのオンラインで学べるコンテンツがあるので、そちらを利用してもいいと思います。
このブログ「でもC#について色々特集していこうと思っていますので、お楽しみに!

オブジェクト指向を勉強するにあたり、オススメの書籍とオンラインサービスを以下に紹介するので、ぜひチェックしてみてくださいね!

書籍

予備知識なしに読むのは難しいですが、”デザインパターン”とは何かということを、そしてその記述の仕方(パターン名、問題、解決、結果)を説明されています。
個人的にもデザインパターンを説明するにはテキストエディタや描画エディタが最適だと思います。

各デザインパターンより、”生成”、”構造”、”振る舞い”の区別方法が分かります!

プログラミング学習

無料レッスンもできるので、お試しで利用してみるのは全然ありだと思います。
CodeCamp
実際に僕はこの講座のマスターコースを受講しました。
コードキャンプメニュー
ユーザーメニューは、購入したコースごとに分かれおり各演習の最終課題に合格すると「合格」とつきます。
コードエディター
コードキャンプにはオンラインエディターがあるので、ソフトを買ったりDB設定など一切いりません。
その日から何も用意せずに勉強できます。

ぜひ、体験だけでもやってみる価値はあると思うので、お勧めします!
こちらからチェック!