【C#】オブジェクト指向に大切な「メソッド」を身に付けよう!

以前に説明したオブジェクト指向について、少しは理解していただけたでしょうか。

オブジェクト指向は非常に大切なプログラミングの考え方ですが、それを実践するために重要なことがあります。記事の最後の方でもお伝えした、メソッドというプログラミング技法です。

今日は、オブジェクト指向も大切だけど、それを実践するために必要なメソッドについて学んでいきましょう。最初は掴みづらいですがプログラミングを書いていくことで、次第に慣れていきますよ。

メソッドって一体なに?

method2

もちろんメソッドと言うものの、イメージが付きづらい人も多いと思います。得にプログラミング初心者にしてみたら、悪夢のようなものです。正直言って僕も、はじめはサッパリ分かりませんでした。

でも、プログラミングを書きつつメソッドの使い方に慣れていくことで、その機能の本質を少しづつ理解できているような気がします。

やっぱり慣れって大事ですね。英語には「Practice makes perfect.」ということわざがありますが、本当にそのとおりだと日々感じています。

 

それではもう少し技術的な内容に入っていくことにしましょう。

メソッドを理解するためには、2つの言葉を覚える必要があります。その一つが「フィールド」そして「メソッド」です。

フィールドとは「クラス内部で宣言される変数」のことを差しています。クラスとかサッパリわかんねーぜ!という人は、特に気にしなくても大丈夫です。また、メソッドとは読んで字のごとく(英語ではmethodと表記)、「外部から行える操作を行えるようにするための関数」です。

「何か処理するときに使える道具」みたいなものだと理解してもらえれば。

 

関数とは?

今さっき出てきた関数って、そもそもなんぞや?ともう人もいるかもしれないので、簡単に質問に答えておきます。プログラミングなので数学的な意味ではなく、コンピューター的な意味をここに記しておきます。

プログラミング上での関数はサブルーチンとも呼ばれています。以下、ウィキペディアから関数(サブルーチン)についての説明を引用します。

サブルーチン(英: subroutine)は、コンピュータプログラミングにおいて、プログラム中で意味や内容がまとまっている作業をひとつの手続きとしたものである。

結局は、処理を表す方法を示しているのが関数であり、その使用方法は主に「同じような繰り返しの処理を一回の記述で済ませること」だと言われています。

プログラミングにおいての関数には、引数と戻り値というものが存在しています。これについては後ほど詳しく記述することにします。

 

一応、興味好奇心のために数学とプログラミングにおける関数の意味合いの違いを載せておきましょう。気になる人はチェックしてみてください。

  • 引数が同じでも状況に応じて戻り値が異なる(状態を持つ)
  • 関数の処理の実行によってシステムに変化が発生する(副作用を持つ)
  • (「関数」と「手続き」を区別しない言語では)戻り値が存在しない場合がある

だそうです。ではもう少し実践的な説明をしていこうと思います。

 

メソッドの使い方について

method3

メソッドの使い方・書き方について記述を進めて行くことにします。その前に、まずは一般的な関数の公式を記述しておきます。

 

関数の書き方

簡単な公式としました。一番上の行から戻り値の型、関数名、入力の型、引数となり、カッコ内に入って処理内容、returnの後にあるのが出力値となります。

戻り値の型というのは、関数を通過して値を戻す時の数値の型です。

C#の基本としてint型やstring型、char型がある、というのはすでにお話済みだと思います。要するに「この関数を通過してint型の値を、元あった場所に返しますよ」ということです。

関数名は「呼び出し元から関数を使用したいよ!」というときに使ってあげる名前です。誰しも名前がないと正確に呼べませんよね、ということで名前をつけてあげるのです。今回は適当に、ReturnValueと名付けました。

 

カッコ内に入って一番目のintは入力の型と呼ばれるものです。

これは関数の呼び出し元から渡される数値に型を示しています。関数を使うのに、加工する値がないと意味がありませんからね。電気のないパソコンみたいなものですよ。

で、最後のbというのは「引数」と呼ばれるもので、「呼び出し元から渡される値」です。

加工するための原材料のようなものです。もちろん処理内容によって様々に変わりますが、原則として関数を動かすのに必要な値、と覚えておいてください。

 

メソッドの書き方

method4

メソッドも基本的には上で説明した関数と同様に記述します。

メソッドの方が関数よりも多く使用するので、呼び出す側とメソッドの両方を参考として挙げておこうと思います。適当にプログラミング書くので許してください。なんとなくの雰囲気を、このブログで掴んで頂けたら。

超ざっくりとかきましたが、だいたいこんな感じです。

上の方にはメソッドを、下の方には呼び出し側を書いておきました。一番下にあるカッコの中、「quizz(question)」という部分がメソッドを呼び出している記述です。その一行前にint型の変数・questionを3として宣言しているので、その値が引数としてメソッド側に渡されます。

メソッド側をみてわかるように、下の呼び出し側で指定された値・questionがquizzメソッドで使用されます。計算の答えを知りたい式は2x^2+5なので、Xに3が代入されます。

その答えである23が、returnを通じてint型の値で返されるのです。

この時、メソッド側の戻り値の型がint型で指定されていることを確認しておきましょう。今回適当に書いたソースでは、int型で返ってきた値を、ToString();という記述を使って、数列を文字列にして表示させるようにしています。

こうしたように戻り値の型を指定したメソッドでは、値が返ってきます。このときは関数名に返したい値の型を記述しておきます。

 

では、逆に値を返したくない時の処理はどうしたら良いのでしょうか?

値を返したくないメソッドを作成するときは、関数名の前にvoidという言葉を書き加えれば良いのです。この際は戻り値の型を書かないので注意しましょう。

こうすることで、値を変えさずに処理をすべて呼び出された場で行うことができます。

まあ、簡単にプログラミングを書いたらこんな感じです。こちらは上のプログラミングとは違い計算結果の値を返さないように設定してあるメソッドです。

入力してもらった値をaとして、12 * a を2で割る式の答えを求めるメソッドを書いてみました。このメソッド側の処理の最後に答えをコンソール上に書くという指令も付け加えてあります。

これにより値ではなく、処理自体をメソッドで完結しくれるようになります。

 

まとめ

以上、C#におけるメソッドについて解説してみました、いかがでしたか?メソッドに慣れている人も、メソッドなんて知らなかったよ!なんて人も少しでも理解してもらえたなら嬉しい限りです。

最後に、メソッドの呼び出し方と引数の受け方について、気をつけるべきポイントを記しておきます。

  • 呼び出す方は、「関数名を書き、カッコの中に渡したい引数を書く」が基本
  • メソッド側は「関数名の後に引数の型と変数を書く」のが基本
  • 値を返す場合は変数の型を、返さない場合はvoidをつける

以上の3つのポイントをしっかりと抑えておけばメソッドは大丈夫です。まずはメソッドを実際に書いてみてプログラミングしてみてください。幾つか実際に書くことで使い方を覚えられますよ。

一週間前にプログラミングを始めた僕も、ここまで語れるようになりました。みなさんもやればできるはずです。一緒にプログラミングを学んでいきましょう。

この記事が気に入ったら
いいね ! しよう

Twitter で
SPONSORED LINK

ABOUTこの記事をかいた人

旅・音楽・プログラミング・ブログを愛するコンテンツ・クリエーター。フィリピンで就業、カナダで語学留学を経験しニュージーランドで大学を卒業。 TECH::CAMPの二十九期生としてRuby / Ruby on Railsを勉強しました。記事の執筆・広告は「お問い合わせ」からお願いします。