お耳を拝借vol.8 クラス、メソッドって何?

お耳を拝借vol.8 クラス、メソッドって何?…

前回は、「オブジェクト指向」という概念について解説しましたが
その中でオブジェクトを構成する概念として「クラス」、「メソッド」というものがあると説明しました。
本日はその「クラス」、「メソッド」とそれに関係する概念について解説していきたいと思います。

目次

クラスとは…

クラス

データやメソッドをまとめたものです。
インターネットで調べてみると「オブジェクトの設計図である」という解説がありますが、
個人的には直感的ではないと思っています。

左図のように、
データやメソッドを
小さな箱とし、※イラストではキャンディのイメージ
クラスはそれを格納する容器のようなものと解釈するとイメージしやすいのではないかと思います。

メソッドとは…

メソッド

インターネットで調べてみると「オブジェクトに対する操作を定義したもの」と解説されています。
要するに「何らかの処理」であると覚えてもらえば良いと思います。

処理は「入力値」に対して、「結果」が出力されます。
メソッドとは、入力(設定)した値に応じて何かしらの処理を行い、その結果を返すものです。

Javaでは、以下のような定義となります

public String TestMethod (String str) {
if (str == “ABC”) {
  return “ABCです。”;
} else {
    return “それ以外です。”;
}

解説

  String 戻り値の型です。
   戻り値とは 処理結果をどういう形式で返却するか、という定義のことです。
  String は文字列という意味なので、
  TestMethodの処理結果は何らかの文言で返却する必要があります。
   戻り値はreturn で指定します。

  (String str) 引数(パラメータ)です。
  これがメソッドに対する入力値となります。
  ですので、上記のTestMethodの処理は以下のとおりとなります。

 入力値が”ABC”の場合は”ABCです。”という文言が返却され、
 それ以外の場合は”それ以外です。”という文言が返却される

関数(ファンクション)とは…

関数(ファンクション)

メソッドと類似する言葉として、関数というものがあります。
基本的な概念はメソッドと同様で何らかの処理を指しますが、
メソッドとの違いは、クラスに定義されるか否かです。

クラス内に定義されるもの=メソッド
クラス内に定義されないもの=関数

JavaScriptやPHPはクラスの定義が必須ではないので、メソッドと関数を使い分けられます。

プロパティ

プロパティ=クラスが持つデータにアクセスするための定義です。
getterメソッドでデータ参照、setterメソッドでデータ設定を行います。

Javaでは、以下のような定義となります

public class Parent {
   private String name

   public String getName() {
      return name;
    }
   public String setName(nm) {
        this.name = nm;
      }
    }

解説

  Parentクラスが持つnameというデータに対して
   getNameメソッドで設定値を取得
   setNameメソッドで値を設定しています。 

ちょっと長いけど、あと少し!

インスタンスとは…

インスタンス

ここまでクラス、メソッド等概念を解説してきましたが、クラスやメソッドはこのままでは
使用できません。

クラスの解説欄にて、インターネットで調べるとクラスとは
「オブジェクトの設計図である」と解説される、と説明しました。
私個人的には直感的ではないと言いましたが、
この”設計図”という表現は正にその通りでクラスそのものには実体がないのです。

要するに「クラスAという大きな容器にデータ①やメソッド②等という中身がある」という図だけが用意されている状態です。

クラス内に定義したメソッド等を使用するには、クラスそのものを実体化する必要があります。
この手続きがインスタンス化です。
インスタンス化されたクラス(オブジェクト)のことをインスタンスと呼びます。

インスタンス化自体は難しいものではく、
 Javaでは、以下の一文で終了します。

Parent prt = new Parent();

解説

 変数「prt」にインスタンス化したParent(プロパティ解説欄参照)を設定します。
 上記の処理によって、以下のようにParentクラスに定義している
 getNameメソッドやsetNameメソッドを使用することができます。

prt.setName(“山田 太郎”);
 String rtnValue = prt.getName();
 System.out.println(rtnValue);

  上記の処理を実行すると、
  コンソールに「山田 太郎」と出力されます。

目次