2
2

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.

オブジェクト指向をざっくり理解する(初心者向け)

Posted at

はじめに

最近フロントエンドを独学で勉強中ですが、JavaScriptを学習するにあたり「オブジェクト指向」という概念が出てきて色々調べたのでメモを残しておく。
ちなみに私はインフラエンジニアなので業務でプログラミングはshellscriptやIaCしかやってません。
なので、かなり初心者向けの内容になっています。

オブジェクト指向とは

オブジェクト指向とは要素をと捉えて、それに動きを与える考え方。
プログラムを手順ではなくて、物の作成と操作として見るといった感じ。

RPGを例にオブジェクト指向を理解してみる

例えばこんなRPGのPTがあったとする。
これを例に、基本的な用語と3大要素と呼ばれるものをみていく。

疑似言語
Class 人間 {
 性別:
 年齢:
 職業:

 fanction action(){
  歩く;
  }

 fanction action(){
  話す;
  }

fanction action(){
  食べる;
  }
}


勇者 = new 人間{
 性別:男
 年齢:18
 職業:勇者

 fanction action(){
  剣で切りつける;
  }
}

魔法使い = new 人間{
 性別:女
 年齢:17
 職業:魔法使い

 fanction action(){
  魔法を唱える;
  }
}

僧侶 = new 人間{
 性別:男
 年齢:40
 職業:僧侶

 fanction action(){
  回復をする;
  }
}

基本用語

まずはオブジェクト指向における基本用語を見ていく。

オブジェクト

オブジェクトはクラス(設計図)から作った実物のことを指す。
例だと、人間という設計図に勇者という情報を与え、出来上がったものが勇者オブジェクトとなる。
この情報にはプロパティメソッドの2つの要素がある。

プロパティ

オブジェクトが持っている属性を定義するもの。
例だと性別や年齢がこれにあたる。

メソッド

オブジェクトが持っている操作を定義するもの。
例だと歩くや話すがこれにあたる。

クラス

クラスはオブジェクトの設計書のようなもの。
例だと、人間という設計図があり、そこにプロパティとメソッドを与えることで勇者や魔法使いといったオブジェクトになる。

インスタンス

インスタンスとは「実体」という意味。
クラスで説明した、

人間という設計図があり、そこにプロパティとメソッドを与えることで勇者や魔法使いといった`オブジェクトになる

この設計図からオブジェクトを作ることをインスタンス化と呼ぶ。

3大要素

次にオブジェクト指向における3大要素と呼ばれるものについて見ていく。

継承

特定のオブジェクトの機能を引くついで使用すること。
例えば、似たようなオブジェクトを複数作成する場合、全てのプロパティやメソッドを書くとコードが長くなり保守性も悪くなる。
例だと、人間というクラスを継承することでパーティの3人が人間クラスの持つ基本動作をそのまま利用することができる。
継承を使用することで、プログラムの再利用性や保守性を高めることができる。

カプセル化

他のプログラムから干渉されないようにする仕組みのこと。
例だと、actionの部分に「切腹する」なんてアクションを追加されたら困る。
カプセル化することによって、他のプログラムからの干渉を防ぐことができる。
(※正確にいうと、干渉されない部分を明確に分けれる)

ポリモーフィズム

聞き慣れない言葉だが、日本語にすると多様性という言葉になる。
こちらも継承と同じで、プログラムの再利用性を高める考え方になる。
例えば、ポリモーフィズムという考え方なしで考えると、このパーティが攻撃するときは

ポリモーフィズムなし
// action関数を呼び出す
勇者.action()
魔法使い.action()
僧侶.action()

みたいに操作を列挙しないといけない。
これをポリモーフィズムの考え方に基づいて直すと

ポリモーフィズムあり
// action関数を呼び出す
 party = [勇者,魔法使い,僧侶];

 party.action();

といった具合にスッキリ書くことができる。
パーティーのメンバーが増えたり、呼び出す回数が増えるほど両者の違いがどんどん明確になっていく。

まとめ

まずはオブジェクト指向をイメージだけ理解するためにざっくり書いて見た。
もちろんオブジェクト指向はもっともっと深いですが、まずはイメージだけつかめれば幸いです。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?