違いを解説君

あるゆる物事の"違い"をわかりやすく解説する情報マガジン

スクリプト

ITの違い

メソッドと関数の違いをわかりやすく解説!意味や定義をチェック

プログラムを組むには、『メソッド』や『関数』を定義する必要があります。

この『メソッド』と『関数』の違いが分かりますか?

 

はなこ
プログラムを組む時に『メソッド』とか『関数』を定義するじゃない。

『メソッド』と『関数』って違うものなの?

僕はあまり意識したことがないな。

どちらも同じようなものでしょ?

たろう
はなこ
でも、言葉が違うということは意味も違うんじゃない?

『メソッド』と『関数』の違いについて調べてみたいわね。

 

今回は、『メソッド』と『関数』の意味や定義をチェックして、その違いについて解説します。

スポンサーリンク

『メソッド』と『関数』の意味や定義

まずは、『メソッド』と『関数』の意味や定義について見てみましょう。

『メソッド』とは?

オブジェクト指向言語において、クラスの中で処理内容が定義されたもの

のことです。

オブジェクト指向言語とは、一般的にはクラスと呼ばれる設計情報を元にインスタンスを生成して処理を行う形のプログラミング言語です。

クラスは、オブジェクトがどのようなものかを定義した設計図

であり、

その設計図を元に実体化したものがインスタンス

と考えれば分かりやすいでしょう。

クラスでは通常、様々な処理を行うための仕組みが定義されます。

その定義された処理内容を『メソッド』と呼びます。

 

例えば、会社の社員を管理するためにEmployeeというクラスを定義したとします。

Employeeクラスでは、社員番号や部署、役職などを管理するために、それらを出力するための機能が必要になりますね。

社員番号などの情報を出力するための機能が『メソッド』の一種になります。

 

『関数』とは?

プログラムの中で、あるひとまとまりの処理を定義したもの

のことです。

プログラムは、記述された命令を上から順番に処理します。

関数を呼び出す命令が見つかると、関数に定義された処理を行い、処理が終わったら元に戻って次の命令を実行します。

 

例えば、先ほどのEmployeeインスタンスを生成する処理を行うための仕組みは、関数として定義することができます。

 

はなこ
どちらも、処理内容を定義したものを意味するのね。
じゃあ、いったい何が違うんだろう?
たろう

 

『メソッド』と『関数』の違い

タイピング

タイピング

『メソッド』と『関数』は、いったい何が違うのでしょうか?

『メソッド』は、クラスの中で定義される関数の一種です。

そのため、『メソッド』は

クラスにある機能のひとつ

として動作します。

それに対して

関数は、クラスとは独立して定義されます。

クラスとは切り離されていて、独立して呼び出されるのが『関数』です。

 

C言語には、オブジェクト指向言語が持つクラスという概念がありません。

なので、C言語には『メソッド』はなく、『関数』だけがあります。

JavaやC#はオブジェクト指向言語であり、全てはオブジェクトを使って処理が行われます。

そのため、JavaやC#には『関数』がなく、『メソッド』だけが存在します。

 

『関数』と『メソッド』の両方を持つ言語にC++があります。

C++では、『関数』と『メソッド』のどちらも定義することが可能です。

例えば、C++で

class Employee

{

_:

_int id(); // 社員番号

_string section(); // 部署

_string position(); // 役職

};

/* Employeeインスタンスを生成する */

Employee CreateEmployee( int id, string section, string position )

{

_:

}

というプログラムを作成したとき、

id(), section(), position() は『メソッド』

CreateEmployeeは『関数』

となります。

 

『メソッド』と『関数』の主な違いをまとめると次のようになります。

『メソッド』と『関数』の違い

  • 『メソッド』は、対象クラスの中の変数にアクセスすることができるが、『関数』は通常はそれができない。
  • 『メソッド』はインスタンスを介して呼び出され、『関数』は直接呼び出される。

『メソッド』は、クラスが持っている変数にアクセスすることができます。

例えば、Employeeクラスの場合、社員番号や部署、役職などを持つための変数が内部に必要ですよね。

それらの変数にアクセスできるのは、そのクラスの『メソッド』だけで、『関数』がアクセスすることは通常できません。

クラス内の変数を public 属性というものにすると、『関数』からもアクセスできるようになりますが、たいていの場合はそうしません。

変数に直接アクセスできないようにすることで、安全性を高めているわけです。

 

『メソッド』はインスタンスを介して呼び出されます。

例えば、Employeeインスタンスの emp という変数があった場合、id()メソッドを呼び出すには

emp.id();

と記述します。

emp1、emp2という複数のEmployeeインスタンスがあったとき、emp1を介してメソッドが呼び出されても、emp2の内部には影響しません。

メソッドは、呼び出したインスタンスだけに対して影響を及ぼすわけです。

『関数』は、インスタンスを介することなく直接呼び出されます。

 

はなこ
うーん、『メソッド』はオブジェクトにつながっていると考えればいいのかな?
オブジェクトの内容を書き換えたり、中の情報を呼び出すのが『メソッド』の役目ということかな?
たろう

スポンサーリンク

まとめ

今回の違いのポイントを、まとめていきましょう。

ポイント

  • 『メソッド』とは、オブジェクト指向言語において、クラスの中で処理内容を定義されたものである。
  • 『関数』とは、プログラムの中で、あるひとまとまりの処理を定義したものである。
  • 『メソッド』は、対象クラスの中の変数にアクセスすることができるが、『関数』は通常はそれができない。
  • 『メソッド』はインスタンスを介して呼び出され、『関数』は直接呼び出される。

『メソッド』も『関数』も、処理内容を定義するためのものです。

書き方は非常によく似ています。

実際にプログラムを作成する時に、『メソッド』や『関数』を意識することは、ほとんどないでしょう。

関連記事

-ITの違い

Copyright© 違いを解説君 , 2020 All Rights Reserved.