はじめに
今までPHP/Laravelと学習を進めてきたのですが、そもそもコードの内容をあまり理解しきれていない現状に気づき
色々ありまして現在はJavaの学習を進めています。
Javaではオブジェクト指向という考えが非常に重要であり、またその考え方は他の言語にも
共通していくというのを知ったのでアウトプットとして基礎的なことをまとめていきたいと思います。
オブジェクト指向とは
プログラムの機能や役割を区別し、それぞれを部品(オブジェクト)として組み合わせることで1つのプログラムを作ること。
こうやって書くとふーんって感じですが、現実の世界でも色んな物体が存在して組み合わさっていると考えると僕は腹落ちしました!
例えば...
・車
→タイヤ、ハンドル、アクセル、ブレーキなどなど
・家
→屋根、扉、壁、床などなど
・人間
→手、足、頭、胴体などなど
現実の世界と同じようにプログラミングの世界も考えた方がわかりやすいね!的な発想がオブジェクト指向なのかなぁと感じました。
オブジェクト指向の専門用語
- オブジェクト指向 → 機能や役割を区別し、オブジェクト(部品)を組み合わせてプログラムする考え方
- オブジェクト → モノの総称
- クラス → 設計書
- フィールド → モノの情報
- メソッド → モノの振る舞い
- インスタンス化 → 設計書を元に作った物体
Javaのコードでオブジェクト指向を書く
1.まずは「自転車」という設計書を作ります。
class Bycycle {
}
※class Bycycleにて「Bycycle」というクラス名を宣言します。
2.設計書のフィールドに情報を記述する
class Bycycle {
String bycycleName = "A自転車";
String color = "red";
}
※車の名前を表す文字列型のbycycleName
※車の色を表す文字列型のcolor
3.設計書のメソッドに自転車の動作を記述する
class Bycycle {
String bycycleName = "A自転車";
String color = "red";
void start(){
System.out.println("発進します");
}
void stop(){
System.out.println("停止します")
}
}
※自転車の発進動作を表すstartメソッド
※自転車の停止動作を表すstopメソッド
4.自転車の設計書をもとにし自転車を作る。
class BycycleTest {
public static void main(String[] args){
Bycycle bycycle = new Bycycle();
}
}
※ クラス名 変数名 = new クラス名();にてCarクラスをインスタンス化(実体化)して左辺のbycycleという変数に代入します。
**5.インスタンス化したオブジェクトにてメソッドを実行する
class BycycleTest {
public static void main(String[] args){
Bycycle bycycle = new Bycycle();
bycycle.start(); //発信します
bycycle.stop(); //停止します
}
}
※変数名.メソッド名();と記述することによりBycycleクラスの中のstartメソッドとstopメソッドを呼び出すことができます!
まとめ
- オブジェクト指向は複数の部品の組み合わせだということを意識すれば理解しやすい
- 設計書だけあっても動かせないため、必ずインスタンス化(実体化)して使えるようにする。
- クラスによって細分化すれば後からの変更があっても対応しやすい→柔軟化
- コンストラクタ・継承・オーバライド・オーバーロード・ポリモーフィズムなどについてはまた知識を定着させてから纏めたい。
参考記事
https://qiita.com/snyt45/items/55363a7a0634f38158d2
https://qiita.com/snyt45/items/c0164e409d7f54501060
→ほぼほぼ参考にしてしまい感謝です。。。