こんにちは!ISAMU(@burlesca_isa)です!
今回はjavaのオブジェクト指向について勉強していきます。
java オブジェクト指向とは
オブジェクト指向とはプログラムの部品化の考え方のことです。
あくまでも考え方なので、オブジェクト指向を覚えなくてもプログラミングは出来ます。
ただ、オブジェクト指向が広く使われているのはメリットが大きいからです。
プログラミングを楽にする考え方なので、一度学んでしまえば
Java以外の他のオブジェクト指向言語に応用することも出来ます。
オブジェクト指向は難しくない
オブジェクト指向を学ぶのは難しくありません。
プログラミングを学ぶ際によく言われることが、
「オブジェクト指向は難しい」という言葉です。
たしかに、継承やカプセル化などの機能面から勉強してしまうと難しいですが、
ざっくりとしたオブジェクト指向の概念を覚えることで、すんなり学習することが出来ます。
オブジェクト指向とは生活上でも活用できる自然な考え方なので、
コツさえわかれば意外と簡単に習得できます。
オブジェクトとは
オブジェクトとは「物理的なもの」や「人が認識できるもの」のことです。
自動販売機、人、スマートフォンなどの物理的なものや、
購入、散歩、通話など概念的なこともオブジェクトです。
現実世界で認識できるオブジェクトは、プログラムで記述することが可能です。
オブジェクトの特徴
オブジェクトは属性を持ちます。
属性とはオブジェクトが持っている情報のことです。
例えば人が共通して持っている属性は
- 名前
- 生年月日
- 血液型
- 性別
が挙げられます。
他にも身長や体重もありますね。
先程、現実世界の人はオブジェクトであると言いました。
例えば佐藤太郎さんという人を属性に当てはめると
- 名前 : 佐藤太郎
- 生年月日: 1990年10月25日
- 血液型: B型
- 性別:男性
となります。
この世に存在している一人ひとりがオブジェクトです。
そして、「人」という概念はプログラムではクラスとして記述します。
オブジェクトを抽象化したものがクラス
先ほど紹介した佐藤太郎オブジェクトは抽象化すると「人」です。
人が共通して持っている属性は「名前」「生年月日」「血液型」です。
オブジェクト指向プログラミングでは
抽象化した概念である「人」というクラスを作成します。
作成したクラスから人を具体化した「佐藤太郎オブジェクト」や「田中一郎オブジェクト」などのオブジェクトを作成します。
クラスはたい焼きを焼く型のようなもので、
一度型を作成してしまえば、大量生産できます。
オブジェクト指向のメリットの1つは、
プログラムの冗長化を防ぐことが出来ることです。
共通する属性を何度も書いたりするのは面倒なので
クラスにまとめて記述して再利用するようなイメージです。
人として共通する属性以外に佐藤太郎さんしか持っていない属性も存在する場合も、
佐藤太郎オブジェクトに追加することも、もちろん可能です。
オブジェクト指向は抽象・具体化
オブジェクト指向は抽象と具体の行き来です。
自動販売機をオブジェクトとして考えたい場合は、
自動販売機はだいぶ抽象化されている概念なので、自動販売機の「販売商品」や「メーカー」の特徴を捉えることで具体化されていきます。
例えば、自動販売機クラスを作成して、メーカ別にオブジェクトを作成できます。
自動販売機は抽象化すると「機械」にできますが、
どこまで抽象化するか考えることも大切です。
メーカー別に分析したいアプリケーションを作成したいのに「機械」まで抽象化する必要はありません。
まとめ
- 最も抽象化された概念をクラスとしてまとめる。
- クラスを具体化したものがオブジェクト
現実世界の物質などは、ほぼオブジェクトとして考えることが可能です。
オブジェクト指向を学ぶことによって、
現実世界の物質は、PCという仮想世界で作成することが可能ということを知ることが出来ます。
とてもおもしろくて便利なので、是非本格的に学んでみてはいかがでしょうか。