0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

面接官「『オブジェクト指向』について説明してください。」僕「…」

Last updated at Posted at 2019-03-09

#はじめに
先日面接させていただいた企業の面接官から、タイトルの質問を受けました。構造的に説明することができなかったので、オブジェクト指向についてまとめてみました。

#もしオブジェクトがなかったら
ドラクエのようなRPGで考える。

  • 剣士1は、Aボタンで攻撃、Bボタンで守る
  • 剣士2は、Aボタンで攻撃、Bボタンで守る
  • 剣士3は、Aボタンで攻撃、Bボタンで守る

剣士が3種類程度なら、追加で「Cボタンで魔法を使う」という機能を付け加えても、変更に対応できるかもしれない。しかし、これが1万種類の剣士がいたら、一万行の変更を加えなくてはならない。

この時、あらかじめ「剣士」というモノを作成しておけば、変更に対応しやすくなる。上の例では、あらかじめ「剣士」というモノを作成しておき、Aボタンで攻撃、Bボタンで守るというようにしておく。
そうすれば、

  • 剣士1は、「剣士」をコピーして、装備だけ木の棒にする
  • 剣士2は、「剣士」をコピーして、装備だけ鋼の剣にする
  • 剣士3は、「剣士」をコピーして、装備だけエクスカリバーにする

のようにできる。このようにして置けば、あとで「Cボタンで魔法を使う」という機能を追加する場合でも「剣士」というモノだけ変更すればよくなる。

#オブジェクト指向の基本的4用語
##1. オブジェクト
下で説明するクラス(設計図)をもとに作られた実物がオブジェクト(インスタンス)。例えば、剣士。
##2. クラス
オブジェクトの設計図のようなもの。プロパティ(属性)やメソッド(操作)をまとめたもの。
##3. プロパティ
オブジェクトが持っているデータ。剣士の例だと、HP・MPや装備がプロパティにあたる。
##4. メソッド
オブジェクトが持っている操作。剣士の例だと、攻撃する・守る・魔法を使うなどの、何らかのアクションを起こす処理のこと。

#オブジェクト指向のメリット
メリットは、大きく2点。

1.大人数での開発に適している
2.同じようなモノをすぐに作成できる

上の例で言うと、「剣士」というプログラムの中身は、作成者だけが知っていればよく、他のメンバーは「Aボタンで攻撃する、Bボタンで守る」という機能を持っているということだけ知っていればいい。(ちょうど、なぜテレビが映るのかがわからなくても、リモコンでチャンネルを変えられるように)
また、「魔法使い」をゲームに登場させようとするとき、「Aボタンで攻撃する、Bボタンで守る」という機能は剣士と共通にすればよく、「剣士」というモノを再利用して「魔法使い」を作れば効率的に開発できる。

#おわりに
自分なりにオブジェクト指向についてまとめてみました。ふわふわした理解ですが、これからもっと勉強しつつ、理解を深めていきたいです。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?