What is Object-Oriented


Hey, guys! This is mumvall.
Today, I explain about Object-Oriented.

It’s a difficult concept for beginners in programming to understand.
I teach you as easily as possible.

This is the agenda of today.

What is Object-Oriented?


Farst of all, checking the word, Object.

Object means a material thing or a person.

In Japanese,

a material → 「物(mono)」
a person → 「者(mono)」

In short, Object is the concept of not specifying.

Object-Oriented is a approach that object is considered most important

Merits of Object oriented

ソフトウェアの開発をイメージしてください。
プログラマーが一生懸命にプログラムを組んでいます。
残業してまで、必死に組んでます。バカですね~
プログラマーは効率的でないといけないのに残業なんて・・・

そんなとき、オブジェクト指向が役に立つわけです。
まず同じようなコードを何度も書いてる時間がもったいないですよね?
これを排除しましょう。(DRY原則)

次にプログラマーが残業増しになる原因は仕様変更ですね。
これにもオブジェクト指向は役に立ちます。

担当している部分の変更箇所が1か所で済むように設計されているので、
時間が短縮されています。

そして、オブジェクト指向の有用性のもう一つが、
部品を組み合わせるように作ることができるので、
再使用性が高いです。

これらからプログラマーがサボれ…いや、楽をできるわけです。

Rubyの開発者である、まつもとゆきひろさんも「プログラマーは怠惰であれ」といっていました。笑

オブジェクト指向の3つの特徴

オブジェクト指向といってもひとことで表すことは難しいです

なので、特徴を絞りましょう。

  1. カプセル化
  2. 継承
  3. ポリモフィズム

の3つです。

カプセル化

これは「公開範囲を特定できる」という特徴です。
イメージはSNSの鍵垢ですね。
NGT48で公開範囲を間違えて、研究生へ降格なんてことがありましたね笑

継承

上記スライドの通り、親クラスで必要なものをまとめておけばよいわけですね。
逆に言えば、

こういったプログラミングの方法を差分プログラミングと言ったりします。

子クラスから親クラスを考えることを、「汎化」
親クラスから子クラスを考えることを、「特化」
といいます。

ポリモ―フィズム

「手を挙げて」といっても
右手を挙げるひとも
左手を挙げるひともいますよね。

そんな感じで、同じ命令をしても個体ごとに違う動きをします。
そんな感じのものです。(雑感。。。)

クラスとインスタンス、集約

もう頭がパンパンかもしれませんが、もう1つだけ覚えましょう

クラスとインスタンス

イメージだけで大丈夫です。
javaやC++などでプログラミングをしていったらわかってきます。

集約

集合体とパーツの関係性で考えればわかりやすいと思います。
これもイメージで大丈夫です。

さいごに

じつは、オブジェクト指向って難しいように聞こえて、
中身をみれば、考え方のみなのでイメージングができれば難しくないです。

苦手意識を捨てて、僕といっしょに夢へと旅立とう笑