質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

Q&A

解決済

3回答

2107閲覧

メソッドという名前の由来は?

mr0237

総合スコア164

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

0グッド

0クリップ

投稿2017/03/20 02:08

JAVAを勉強・練習している者です。説明が下手ですいませんが、

コード

Java

1 public static void main(String[] args) { 2 3 4}

このコードの部分を「メソッド」と呼びますが、なぜ「メソッド」と呼ぶんですか?

ネットや参考書をみても

「1つの巨大なプログラムを複数の部品に分けることができる」とか
「複数の文にまとめそれを1つの処理として名前を付けたもの」とか
「メソッド(機能)」

と書いてあるんですが、「メソッド」と呼ばれるようになった理由が書いておりません。

英語辞書を見ても「方法」「方式」としか書いておりません。

「メソッド」と呼ばれるようになった理由は何でしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

オブジェクト指向以前はデータと手続処理・関数が分離されていました。
しかし、オブジェクト指向では「特定のデータ群」と「そのデータ群や外から渡されるデータに対する手続処理・関数群」を統合してオブジェクトとして定義しています。
そのため、オブジェクトは「データ」と「それを処理する方法」を提供しなければならないため、手続処理・関数ではなく、新しくメソッド(方法・方式)と呼ぶように決めたのではないでしょうか。

投稿2017/03/20 03:26

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

一般的に
英語で
何かの方法論の事を
~メソッドと呼びます
仮にmr0237氏が素晴らしい育児の方法論を開発したとするとそれが
「mr0237メソッド」と呼ばれ その方法を教える教室は「日本初mr0237メソッド公開!」「mr0237メソッド提唱者mr0237氏の講演会12:30~」などと喧伝されるわけです

このあたり、検索システムで
英語 メソッド
で検索すると色々なメソッドが出てくると思います(~メソッド)

この「方法論」は複数の機能が合体したもの、Javaにおけるメソッドのようなものです
~メソッド
という名前で示される手法は一般的であり、そこに引数のように毎回異なる要素を入れて実行すると毎回異なる引数(要素)に対して同様の操作が行われた戻り値たる結果が返されるわけです
仮にmr0237氏が素晴らしい育児の方法論を開発したとしてそれが
mr0237メソッドと呼ばれるようになったとすると

java

1class Kindergartener{ 2 3static void main(String[] args){ 4 5String[] infants={"Alice","Bob","Tom","Jene","Chris","Buddah"};//幼稚園児達 6 7for(int babynumber=0;babynumber<infants.length;babynumber++){//教室で園児一人一人に対して教える過程 8 9infants[babynumber]=mr0237(infants[babynumber]);//ある園児をmr0237メソッドで成長させる過程 10 11System.out.println(infants[babynumber]);//顕れる素晴らしい結果 12} 13 14} 15 16 17static String mr0237(String infant){//mr0237メソッド 18 19String hyperbaby="物凄く成長した"+infant;//mr0237メソッドの本体 生徒の本質が書き換えられる 20 21return hyperbaby; 22 23} 24 25 26

mr0237メソッドを持つKindergartener(幼稚園)クラスに入れたinfants(幼児達)は皆その中でmr0237メソッドにかけられてものすごく成長した存在となって出力されるわけです

Javaでの機能が集合した最小単位と英語圏での「~メソッド」の用法は類似しているため
Javaが開発された英語圏ではそのような機能の集合物をメソッドと記述しておくと教科書等を読んだ時に抵抗なく理解把握されるからではないでしょうか
このあたり、英語圏の人間は説明が必要ないレベルで見たらすぐ意味が分かるのであえてそんな事を説明している場所すらないのではないでしょうか・・・

C言語ではメソッドと同様のものを「関数」とうまく数学の概念と被せて類似概念の単語に置き換えて訳せていますが
Javaでは英語の「method」を日本語にうまく訳せずそのまま「メソッド」とカタカナ語で書いていたのが定着しただけではないでしょうか

投稿2017/03/20 08:27

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

こちらこちらが参考になりそうですね。初出は1960年代頃に開発が進められたSimulaという言語で産まれた概念のようです。

「開発者がそういう風に名づけた」が端的な説明かと思いますが私の私見も踏まえてもう少し踏み込んでみます。

当時、既に概念として「関数」という概念はあったと思われます。英語にするとfunctionですね。要するに「処理を依頼すると何か値を返す機能」のことです。
狭義では「メソッド」の概念は「関数」に含まれています。特に「オブジェクトのメンバ関数」のことを「メソッド」と呼んでいるようですね。

ここからが私見になりますが、「メソッド」というのは直訳すると英語辞書等で調べられたとおり「方法、方式」のことです。
プログラミングにおける「メソッド」とはオブジェクト志向の概念の登場と共に現れた考え方のようです。オブジェクト志向とは、数学的で無味乾燥なプログラミングコードよりも可読性や保守性を高めるために、現実世界に即した内容をコーディングで実現しようとして産まれた考え方です。
そこで、「あるオブジェクトにプログラマが提供する機能」のことを表す最も良い英単語としてmethodが選ばれたのではないかと思います。

例えば「人間」というクラスを考えたとして、「話す」という機能をプログラマが加えたとします。
クラスを使うときはインスタンス化して利用しますが、コンストラクタ(初期化処理)呼び出し時にその人の母国語を指定するとします。
そうするとボブは英語で「話す」、タクヤは日本語で「話す」、リュウは中国語で・・・とやっていると、その機能はまるでインスタンス化されたオブジェクトそれぞれは「話す」という方法を持っているものの、それぞれに与えられた属性によってそれぞれごとに振舞っているように見えます。
話は戻って、「話す」という機能はプログラマが定義したものです。ですが、上記のようなオブジェクトの具体的な振る舞いを想像すると、定義した「話す」という機能は「関数」などと呼ぶにはちょっとピントがずれている気がします。プログラマはオブジェクトたちに「話す」という機能を提供したわけですが、その後はオブジェクトたちが自主的にその機能を解釈して、それぞれがそれぞれごとに振舞います。

上記のようなことを想像した上で、何か「オブジェクトに与える機能」としての適当な語彙はないかということで探した結果、「method」という英単語が割り当てられたのだと予想します。
つまりプログラマはオブジェクトに対してメソッドを与えることでオブジェクトの動作を増やすことができるわけですね。上記「人間」オブジェクトであれば、「話す」メソッドとは別に「踊る」メソッドや「歩く」メソッドをプログラマが提供することで、「人間」はできることが増えていくわけです。

かなり難しいオブジェクト志向の概念まで引用しましたので、良く分からなければ申し訳ありません。

また、関数とメソッドは現状そこまで厳密に区別されていないように思います。区別しようとすると、上記説明のように「オブジェクトのメンバ関数」という説明になりそうですが、その理解のためにはオブジェクト志向の考え方を習得する必要があります。
ですのでJavaの教本としては、話をややこしくしないため、メソッドの説明をあたかも「関数」のように説明していると思われます。根本的なところが知りたい人にとっては、ちょっと疑問が残るかもしれませんね。

投稿2017/03/21 04:17

編集2017/03/21 05:01
akabee

総合スコア1947

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問