エンジニアへの転身を目指し、タクシードライバーとして働きながらJavaの学習に励むShogoです。現在、YouTubeのJava入門講座で全部で6章ある内の第4章のオブジェクト指向を学んでいますが、これがなかなか手強い相手です!
プログラミングには、いくつかの考え方があります。これまで主流だった「手続き型言語」は、コンピューターに「何を」「どのように」処理するかを順番に記述していくものでした。しかし、オブジェクト指向は、現実世界の「モノ(オブジェクト)」 を中心にプログラムを組み立てる、全く新しい考え方なんです。
このオブジェクト指向の基本的な要素が、「クラス」と「オブジェクト」です。「クラス」は、モノの設計図 のようなもの。例えば、「犬」というクラスには、「名前」「年齢」「犬種」といったデータ(属性)や、「吠える」「歩く」「食べる」といった行動(メソッド)が定義されています。そして、「オブジェクト」は、この設計図を元に実際に作られたモノ、つまり「ポチ」という名前の3歳の柴犬、といった具体的な存在を指します。
さらに、オブジェクト指向には「カプセル化」「継承」「ポリモーフィズム」という3つの重要な概念があります。カプセル化 は、データとそれに関連する機能を一つにまとめて、外部からの不適切なアクセスを防ぐ考え方。例えるなら、車のエンジンをむやみに触れないように、特定の操作方法だけが公開されているイメージです。継承 は、既存のクラスの機能を受け継ぎつつ、新しい機能を追加したり、機能を修正したりする仕組み。例えば、「犬」クラスを元に、「チワワ」クラスや「ゴールデンレトリバー」クラスを作ると、基本的な「犬」としての機能はそのままに、それぞれの犬種特有の属性や行動を追加できるのです。そして、ポリモーフィズム は、「同じ名前のメソッドでも、オブジェクトの種類によって異なる振る舞いをする」という柔軟な仕組みです。例えば、「吠える」というメソッドは、「犬」オブジェクトなら犬の鳴き声で、「猫」オブジェクトなら猫の鳴き声で実行される、といった具合です。
このように、オブジェクト指向は、現実世界をより自然にプログラムで表現できるため、大規模な開発や、後から機能を追加したり修正したりする際に、非常に便利だとされています。
私自身は、この新しい考え方にまだ戸惑うことばかりです。設計図である「クラス」から、実体である「オブジェクト」を作り出すというイメージは掴めても、それを実際のコードにどう落とし込めば良いのか、試行錯誤の連続です。なぜ手続き型のように単純に書けないのか、と疑問に感じることもあります。
しかし、オブジェクト指向のメリットを理解しているからこそ、諦めずに学習を続けたいと思っています。動画講座を何度も見返し、Progateなどの学習サイトで実際にコードを書いてみることで、少しずつ理解が深まっている実感もあります。エラーに苦戦する毎日ですが、「できなかったことができるようになる」喜びを胸に、月収60万円の目標に向かって一歩ずつ前進していきます。
コメント