オブジェクト指向とは?【ポイントはデータとメソッド】|Webデザイナー専用メディアWEBDESIGNWEBデザイナーについて考えてみました。今回のテーマは、「オブジェクト指向」についてです。オブジェクト指向は、”わかりそうでわからない”という状況になりやすいです。本記事を参考にしていただき、オブジェクト指向の理解を深めてください!オブジェクト指向とはオブジェクト指向は、以下のような説明がなされています。object-oriented)は、ソフトウェア工学理論の一つであり、ソフトウェア設計とプログラム記述の際に用いられる考え方である。https://ja.m.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91オブジェクト指向は、オブジェクト(訳すとモノや目標物)を複数個作って、それらを合体していくことを指します。踏み込んだ表現をすると、オブジェクトにデータとメソッドを付け加えることです。ボタンにデータとメソッドを与えるとすると以下のような分類ができます。基本的な用語オブジェクト指向ではよく使われる用語がいくつかあります。オブジェクト指向のイメージを明確化するためにも、こうした用語を一定頭に入れておくことはかなり効果的です。基本的な用語について見ていきます。カプセル化カプセル化とは、データとメソッドを一つにまとめたものを指します。カプセル化することで、中身を見られにくくなります。情報を盗まれにくくなるということです。カプセル化をすることで扱いやすくなるし、セキュリティー面も良くなる利点があります。ポリモーフィズム(多様性)ポリモーフィズムとは、作成したオブジェクトに同じ命令を送ると、それぞれが独自の処理を行うことを指します。クラスクラスとは、各オブジェクトの名前です。ボタンに関するオブジェクトを作ったなら「ボタン」というクラス名をつけるイメージです。厳密というと、各オブジェクトの性質に名前をつけることを指します。継承はそのままの意味で、受け継ぐということです。受け継ぐ際にポイントになるのが上記で紹介したクラスです。この2つが関わっていることがわかると、オブジェクト指向はほぼほぼ理解したも同然です。スーパークラス実はクラスには2種類あります。その1つにスーパークラスというものがあります。これはいわゆるボタンクラスのようなものを指します。このスーパークラスを作る理由には、「ボタンの機能ごとを1つ1つゼロから作らないといけないという手間を省きたい」理由があります。いうことかというと、ボタンにはトグルボタンやホバーボタンのような多種多様なボタンがあります。これらをいちいち作ってたらめんどくさいので、基本形を決めて、基本形を再利用することでシンプルなコードで書けるようにしようということです。サブクラスもう一つのクラスがサブクラスです。このクラスは、スーパークラスで作成したオブジェクトの基本形を受け継いで、さまざまなボタンを作っていくクラスです。スーパークラスのオブジェクトを継承して、サブクラスでトグルボタンやホバーボタンを作っていくというフローになります。インスタンスインスタンスとは、クラス名をつけたオブジェクトを実体化したものです。「ボタンをインスタンス化する」と言われたなら、実際にボタンができている状態を指します。変数は、入れ物の役割を果たしてくれます。ある変数のたとえとして箱があります。この箱に、常時扱いたいもしくは頻繁に扱うであろうデータを入れておきます。このようにすることで複雑な処理を行うことができます。可視範囲)とは、ある変数や関数などの名前(識別子)を参照できる範囲のこと。https://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%97難しい言葉が並んでますが、簡単に言うと変数(箱)の使える範囲決まっているということです。A,B,Cという変数があったときに、Aはすべての範囲で使えるけど、B,Cは限られた範囲でしか使えないという感じです。セッタメンバ変数(クラスの中で指定される変数)に値を設定すること。クラスに直接設置する方法もありますが、変なエラー等ができる可能性があるため、こうしたセッタが使われています。ゲッタメンバ変数から値を取得して呼び出し元に返す仕事をするセッタで設定した値を引っ張り出してくる役割です。ゲッタとセッタをまとめると以下の通りセッタ(setter)は値を設置させるゲッタ(getter)は値を取り出してくるコントラクタコンストラクタとは、クラスのインスタンス生成時に実行されるメソッドで、主にそのクラスのメンバ変数を初期化するときに使用します。コンストラクタはインスタンス生成時に呼び出される特別なメソッドで、通常のメソッド同様に引数を指定することも可能です。抽象クラス抽象クラスとは、抽象メソッドを1つ以上持つクラスです。抽象クラスは、自身だけでは意味をもたず、サブクラスに継承されることで初めて機能します。具体的には、以下の通りです。ないところに注目してください。メソッド名(引数);次に、抽象クラスです。抽象クラスとは、抽象メソッドを1つ以上持つクラスです。抽象クラスは下記のように記述します。メソッド名(引数);}静的メソッドこのstaticのついたメソッドや変数の事を「クラス変数」「クラスメソッド」と言います。クラス内固有に保持される変数やメソッドの事を指します。反対にstaticのつかない非staticな変数やメソッドの事を、「インスタンス変数」「インスタンスメソッド」と言います。newで呼び出されたインスタンスで使われるもののことを指します。staticメソッドは、newを使わずに呼び出すことができます。オブジェクトとクラスとインスタンスの関係オブジェクトとクラスとインスタンスの関係は密接です。それぞの特徴は以下の通り。クラスは設計図インスタンスは設計図を実物したものオブジェクトはクラスとインスタンスの両方を指す料理で例えるならば、レシピがクラスで、実際にできた料理がインスタンスという感じです。野球で例えるなら、サインがクラスで、実行されたものがインスタンスというイメージです。オブジェクト指向を使うメリット本項目では、オブジェクト指向を使用するメリットをご紹介していきます。再利用で書くコード量が減る1つ目はコード量が減ることです。オブジェクト指向では、一度使ったコード(スーパークラス)で使用したコードをサブクラスで再利用しながら作成していくため、実際に書くコード量が少ないです。複数人で作れて、柔軟性もある2つ目のメリットは、柔軟性があることです。上記の通り、オブジェクト指向ではスーパークラスで作ったものを派生させていくため、複数人がスーパークラスで作ったものをいじることができます。そのため、柔軟性があります。クラスまたはインスタンスごとのコードがあるため、変更もしやすいという特徴もあります。スポーツを例にオブジェクト指向を見てみる最後にスポーツを例にオブジェクト指向を見ていきたいと思います。このように、「スポーツクラス」があり、その配下に「野球」「サッカー」「バスケットボール」などのスポーツがあります。その配下にカテゴリーがあります。このように、オブジェクト指向は物事を分解してカテゴリー分けをし、それぞれのクラスおよびインスタンスを作っていくようなイメージです。本記事は以上となります。参考になれば幸いです。Webデザイナー専用メディア。