はじめに
備忘以外で投稿するのは初めてなので、お手柔らかに(´・ω・`)プログラミングを勉強してまず最初に躓くのがオブジェクト指向だと思います。
そこまでは単純にコードを書いてコンソールで動かしてって感じだと思うんですが、 オブジェクト指向から急に
「えっ?はっ?どういう事??」ってなる人が多いと思います。
かくいう私も「オブジェクト指向の全容を完璧に理解しているのか?」って聞かれると、自身を持って「任せとき!」とは言い難いので、今回は自分の認識のズレを見つける目的もあって記事を書いています。
※筆者はJavaをメインにしているので、Java視点での記載をします。
オブジェクト指向ってなぁに?
まぁぶっちゃけて言ってしまうと、オブジェクト指向なんてなくてもプログラムは書けますし動かせます( ゚Д゚)
「じゃあいらんやんw」って言われてしまうかもしれませんが、実際にプロジェクトで多人数でプログラムを書いたりする時にとても大事になってきますし、設計思想とかにも繋がるので理解して損はないかと。
まぁ所謂考え方の1つです。
前置きが長くなりましたが、説明していきます。
簡単に言うと実際に現実にある物と同じ様にプログラムを扱いましょうって事なんです。
イメージしやすいものだと、ゲームのキャラとかでしょうか?
今回は人のキャラを題材にして説明していきます。
プログラムを人として扱う??
▼一般的に人は何を持っていますか?人は名前、性別、血液型を持っています。
▼人は何が出来ますか?
人は歩けるし、走れるし、眠れます。
これをHumanクラスとしてプログラムにすると、
Human.java
public class Human(){
/** 名前 */
String name;
/** 性別 */
String gender;
/** 血液型 */
String blood;
/** 歩く */
public void walk() {
System.out.println(name + "は歩いた");
}
/** 走る */
public void run() {
System.out.println(name + "は走った");
}
/** 眠る */
public void sleep() {
System.out.println(name + "は眠った");
}
}
このように定義してあげる事で、このプログラムを「人」として扱えるようになります。
じゃあ「人」と言っても世界に○億人程いるわけでして…
Test.java
public class World() {
public static void main(String[] args) {
// 太郎が産まれたイメージ
Human taro = new Human();
// 太郎と命名されるイメージ
taro.name = "太郎";
// 太郎が歩くイメージ
taro.walk();
// 同じように
// 次郎が産まれたイメージ
Human jiro = new Human();
// 次郎と命名されるイメージ
jiro.name = "次郎";
// 次郎が走るイメージ
jiro.run();
}
}
実行すると…
コンソール.
太郎は歩いた
次郎は走った
まぁ本当にこんな感じでザックリと神になった気分で現実に存在するものとしての認識をつけて扱えるよ~って事なんです。
人をものって思ってるわけじゃありませんよ…
ʅ(◞‿◟)ʃ
他にもインターフェースを使って多態性とかって考え方とかあるけど、それはまた別の機会に。
最後に
書いてみて改めてオブジェクト指向の説明って文章だとちょっと伝わりずらいんです…本当に色々なプログラム書いて慣れてってのが一番の近道だと思うので、初めてから全部理解しようとせずにザックリとイメージを持っておいてもらう方が混乱しないでいいかなと思いました。