0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初学者がオブジェクト指向について説明してみる。

Posted at

前書き

プログラミングを学ぶ上で必ず通るであろう、オブジェクト指向について自分なりにまとめてみました。
間違っている部分もあるかもしれませんが、読んでいただけると幸いです。

目次

 ・オブジェクト指向が生まれた背景
 ・RPGを例にオブジェクト指向を説明
 ・まとめ

オブジェクト指向が生まれた背景

まずは生まれた背景について説明します。テクノロジーの発展によりコンピューターの性能があがり、大規模な開発が可能になり大量のソースコードを書くことが増えました。大量のソースコードと扱う問題点として以下のようなものが挙げられました。

  ・プログラムを一箇所だけ変えたいのに他のコードも合わせて変えないといけない
  ・コードが長く新しいメンバーがわかりずらい
  ・テスト時間が増え開発にコストがかかる

このような問題を解決するために独立性、再利用性、拡張性を持ったオブジェクト指向という考えが広まった。

RPGを例にオブジェクト指向を説明

オブジェクト指向を一言で表すと「情報空間の概念すべてをオブジェクトと捉え、管理すること」だと思っています。
これだと抽象的で分かりにくいと思うので、RPGを例にオブジェクト指向を説明していきます。

クラスとは

RPGでキャラクターを作るときのことを考えてください。まずはキャラクターの土台になる人間の設計図を書くと思います。この設計図をことをオブジェクト指向ではクラスといいます。初期クラスには頭があって、とか足は2本でとか人間である必要条件だけを入れていきます。

プロパティとメソッドとは

設計図(クラス)に書ける内容として、プロパティとメソッドとがあります。

プロパティというのは、『名前』『年齢』『どこの国出身』『HP』『勝利したときの決め台詞』などのキャラごとの属性のことです。
次にメソッドというのは、『攻撃する』『ジャンプする』『決め台詞を言う』などの動き部分つまり処理のことです。

設計図にすべてのキャラクターに共通するプロパティとメソッドの情報を入れることで、初期キャラが完成しました。初期キャラの情報を継承し、勇者や魔法使いといったクラスを増やしていきます。

継承

継承というのは初期クラスのプロパティ、メソッドを引き継いだ新たなクラスを作ること。
キャラクターを生成するとき共通した機能をわざわざプログラミングするのが面倒なので、継承を使い開発を楽にしています。

魔法使いを例に継承していきます。
まずはプロパティを変え、HP=100、出身=ホグワーツ など魔法使い独自の情報を入れていきます。
次はメソッドを加えます。魔法使いは人間と違って魔法が扱えるので、「攻撃する」といった処理を「魔法を使う」に上書きできます。
このように継承をすることによって、共通のプロパティ、メソッドをまた書かなくてよくなるのでコードの重複を減らしてコードの再利用性、拡張性を高めることができるです。

独立性

次に独立性について説明していきます。
先程キャラクターに設定したプロパティのHPは攻撃系のメソッドでしか変えられない値にしましょう。
理由はなにかの拍子に外側から値をいじれてしまったらHPの管理が難しく、コードが管理できなくなるからです。
独立性をもたせることでオブジェクトが与えれる影響や与えられる影響をコントロールすることができます。

まとめ

オブジェクト指向は独立性、再利用性、拡張性を持つので、今もなお開発に使われています。
至らないところもあると思いますが、オブジェクト指向を理解するきっかけに少しでもなれたら幸いです。

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?