見出し画像

【Webエンジニア】たのしいオブジェクト指向入門

みなさんこんにちは!
「楽しく×気軽×本格的」
なエンジニアメンターのスクータムです。

さて、今回はオブジェクト指向についてまとめようと思います。
「知ってる知ってる、継承とかカプセル化とかのやつでしょ?」

ええ、それです。
今回は初心者の方にも、あんまりよくわかってないかも?
という方にもみてもらえるように、なるべくわかりやすくまとめてみようと思います。

定義

いきなり定義か!?
となるのですが、まあ、慌てず。

私の手元にあるソフトウェア工学の教科書には、
「クラスやオブジェクトをモジュール化の単位とする設計手法」
とあります。

そう、冒頭では継承とかカプセル化とか言っていて、
まるで機能のような書き振りですが、実際は設計手法なのです。

機能ではなく、考え方なのです。

そう、ですので、オブジェクト思考での開発を行うことは、
・オブジェクト指向にそった言語を利用すること
でもないし、
・継承やカプセル化などを使うこと(部分的にはそうですが)
というわけでもないのです。

繰り返しますが、設計手法なのです。

咀嚼して解釈してみる

しかしまあ、
「クラスやオブジェクトをモジュール化」
っていったい何だよ?
って話です。

そこで、私なりに大胆に敷衍してみます。
オブジェクト指向は、
「興味のあるものをクラスにして、組み合わせていく考え」
だと思っています。

…これでもちょっとわかりづらいですよね。
ということで、テキトーな具体例を出します。

くどいようですが、単なる設計手法なのです。
最初のうちは、
「ああ、とりあえず色々クラスにまとめりゃいいのね」
くらいでいいと思います。

具体例

しょうもない例からいきましょう。
「犬に吠えられるとびっくりする人間」
は、コードで書くとどうなるでしょう?

※私はJava結構使うので、Javaで書いてます。

Dog dog = new Dog();
Person person = new Person();

dog.bark(person);

そして、上記のオブジェクトたちはこんな感じの定義をしているわけです。

Person.java

class Person {
  private name;
  
  public void walk() {
    System.out.println("歩いています");
  }

  public void suprise() {
    System.out.println("わあ、びっくりした");
  }
}

Dog.java

class Dog {
  private name;

  public void bark(Person person) {
    System.out.println("わんわん");
    person.surprise();
  }
}

こんな感じです。
「なんだ本当にしょうもないな…」
って感じでしょうか?
実際にどう仕事に役立つんだ!!
と思われるでしょうが….

例が小さなものなので、実感が出づらいかもしれません。
需要がありそうなら、
「業務上でのオブジェクト指向設計」
も書いてみようと思います。

例えば、データベースにアクセスする、加工する…を、
一つのファイルに書いていたら何が起こるでしょうか?

メンターを受けています

・ポートフォリオ構築が大変…
・開発の学習が行き詰まってる…
・キャリアの相談先がいない…

こんなお悩みを持っている方はいませんか?
現役のエンジニアがメンタリングいたします!

・先着4名
・2023/12/31まで無料

でございます!
ご検討ください!

お問い合わせは、
・こちらのNote
・公式HP
 https://tecedu.hp.peraichi.com/
まで!

サポートいただけますと幸いです。さらなる励みにして精進します。