ライフをハックしたい

エンジニアの退職エントリーや教育について書いています。 他にもランニングや就職活動、資格などについても書いています。

オブジェクト指向が分からないときに参考にしたい5つのサイト

f:id:ywataru:20171011181744p:plain

オブジェクト指向は難しい

オブジェクト指向を学ぼうと思っても、

  • なにをどう学んでよいかわからない
  • 教科書の説明がさっぱりわからない

と挫折してしまう方も多いと思います。

オブジェクト指向の理解は難しくてわかりにくいです。クラス、カプセル化、ポリモーフィズム、と新しい用語の連発で入門者の心が折れる気持ちもわかります。最初は用語の暗記になりますが、徐々に概念の理解を進めていきましょう。初心者はわからない用語を調べながら、覚えていくといいと思います。オブジェクト指向の利点やメリットを意識しながら学習してみてください。

参考にしたい5つのサイト


eng-entrance.com

オブジェクト指向は「概念」だ、ということだ。物事や対象を丸ごとひっくる見たときの大まかな理解のことだ。 明確な答えがないのだから、ざっくり雰囲気理解しておけばいい。 「ベテランエンジニアは色々とごちゃごちゃ言っているけど、なんとなくこんなもんかな?」くらいの理解で構わない。その状態になれただけで十分な成長だ。 あとは自分の成長と共に、理解が進んでいくし、自分の中で定義ができるようになるだろう。

なんとなくの状態で、次の学習に進むことが大切だと思います。完璧に理解できていないと次の学習に進みたくないという気持ちもわかりますが、次の学習を終えた後に、わからなかった箇所に戻ってみると途端に理解が出来ることがあります。


qiita.com

オブジェクト指向で書く理由、それは変更に対して柔軟に対応するためです。 オブジェクト指向は、予め変更の可能性が高い箇所を整理し、クラスに抽出することで変更に柔軟に対応できるようにしておくプログラミングスタイルなのです。

オブジェクト指向の目的は機能の実装ではありません。オブジェクト指向でしか実装できない機能はないと思っても良いでしょう。実装した機能を変更しやすくすることが目的です。


pg-kura.hatenablog.com

なぜ Java 的オブジェクト指向を理解するために部品を組み合わせるということを理解しないといけないのか。 部品にすると、良いことがたくさんあります。そうした良いことを積み上げていくことで、ようやくアプリケーションが出来上がります。何がどう良いのか、その理由を知ることが、Java 的オブジェクト指向を理解するための最短距離です。

  1. 部品を利用するプログラムの見通しが良くなる。
  2. 同じ処理をいくつも書かなくて良くなる。
  3. 部品を利用するプログラムは、その部品の詳細を深く知る必要がなくなる。

オブジェクト指向を部品で説明しています。また、クラスなどの用語も説明されているので初心者にも読みやすいです。全体を読んでも90分で終わります。ぜひ読んでみましょう。


www.slideshare.net

そのクラスは巨大な1枚岩のコードで作成され・・・ 全ての機能が実装されていた・・・ 人々はそのクラスを「神クラス」と呼んだ。

非OOPなコードの特徴です。 実際にあった伝説のコード。シンプルな2Dゲームなのに1万行ありました。調べてみると、ステージごとに、まるごとコピペで作成した神クラスが5つ。1ゼウス2千行、5ゼウスで、合計1万行となっていました。

オブジェクト指向は、このような経緯をもって生まれました。内容はコーディング規約になるので少し難しいですが、雰囲気を理解しておくとコーディングが上達するでしょう。なぜ、オブジェクト指向でプログラミングするのか、このスライドで少し理解しておくとよいでしょう。


www.slideshare.net

オブジェクトを上手に設計・実装すると・バグが激減・修正・変更が簡単・早くコードが安定する オブジェクトの設計と実装の基本 小さくする

クラス 50行以内 メソッド 3行以内 パッケージ 10ファイル以内

非常にわかりやすいです。オブジェクト指向の設計と実装の学び方のコツなので、答えではないと説明しています。オブジェクト指向でコーディングすれば、何がよくなるかということを、実際に手を動かし体験しないとオブジェクト指向設計は身に付きません。


まとめ

オブジェクト指向は、「わかったような気がする。」ということの繰り返しです。人によって理解が違いますし、人によって説明も違います。1回で分かるはずはありませんので、繰り返し学習をすることが大切です。 また、オブジェクト指向を理解してもどのように活用してよいかわからない場合があります。なぜ、オブジェクト指向でプログラミングするのか、メリットや利点を意識して理解しておくとよいでしょう。

他にもこんな記事を書いています

www.lifehackit.work