はじめに
こんにちは!新卒三年目のエンジニアです。
この記事では開発でよく耳にする ”オブジェクト指向” について
自分なりに簡潔にまとめてみました。
目次
📙オブジェクト指向とは
現実世界のものをプログラムで表現しようという考え方。
具体的には人や車、本などのモノをオブジェクトとしてプログラムで扱える。
モノではない予約や注文などもオブジェクトにすることが可能。
プログラミングを学ぶ上では避けては通れない道となっており、
0からプログラミングを学ぶ人にとっては登竜門となっている。
オブジェクト指向は大きく3段階に分けることができる。
それが、"クラス" , "インスタンス" , "継承" だ。
・クラスとは
一言で表すと、 モノを作る際に必要となる
「 設計図 」
そのモノがどういった "属性" をもっており、
どういった "動き" をするのかを定義したものをクラスという。
・インスタンスとは
一言で表すと、クラス(設計図)から
「 作成されたモノ 」
下記の表をみれば、なんとなくクラスとの違いが分かるかと思う。
| クラス | インスタンス |
|---|---|
| 本 | 週刊少年ジャンプ |
| 車 | アルファード |
| 人 | メッシ |
| 携帯電話 | iPhone |
・継承とは
一言で表すと、クラス(設計図)から
「 要素を引き継ぐこと 」
言うなれば、オリジナル(設計図)から亜種を作り出すようなもので、
ポケモンで例えるなら、ミュウの遺伝子からミュウツーを作るような感じ(?)
💭具体例
今回は車に例えてみようと思う。
①クラスの作成
まずは基本となる "車クラス" を作成すると下記のようなクラスになる。
クラスには基本的な動作を定義しておく。
| 車クラス |
|---|
| ・メーカー |
| ・車名 |
| ・走る |
| ・止まる |
| ・曲がる |
②クラスを"継承"し、「ミニバンクラス」を作成する
「ミニバンクラス」には車クラスの基本的な動作に加え、下記の要素を追加する
| 車クラス | ミニバンクラス(継承) |
|---|---|
| ・メーカー | ・スライドドア |
| ・車名 | ・シート列 |
| ・走る | ・威圧感 |
| ・止まる | |
| ・曲がる |
③継承されたミニバンクラスから、"インスタンス" を作成する
仮にアルファードを作ると下記のようになる
| 車クラス | ミニバンクラス(継承) |
|---|---|
| ・トヨタ | ・自動スライドドア |
| ・アルファード | ・3列シート |
| ・走る | ・威圧感 |
| ・止まる | |
| ・曲がる |
このように属性と動作をまとめたオブジェクトを作ることができる。
クラスを再利用し、何台も複製したり
要素を変更するれば別の車を簡単に作成することができる。
⚠️オブジェクト指向を使用しないと...
「トヨタ製で車名はアルファード、自動スライドドアがついていて、3列シート構造。
威圧感がある車。走る、止まる、曲がることができる。」
上記のように再利用性が低く、
複製したり、別の車を作るには要素を改変したり、何度もコピペする必要がある。
最後に
今回は自分なりにオブジェクト指向についてまとめてみました!
オブジェクト指向を使用することで、
プログラムを効率的に整理できるだけでなく、
再利用性や保守性が高まることもわかりました。
しかし、いくら説明されようとも完全に理解できないのがオブジェクト指向...
これからの開発にも積極的に取り入れ、理解を深めていきたいと思います!
最後まで読んでいただきありがとうございました!