メソッドとはーメソッドを利用するメリット (1) • プログラムが大きくなっても全体を把握しやすくなる • 機能単位に記述するため、修正範囲を限定できる • 同じ処理を1つのメソッドにまとめることで、作業効率が あがる プログラミングC 第3回 メソッド 1 メソッドとはーメソッドを利用するメリット (2) 2 メソッドとはーメソッドの定義 • メソッドの定義:メソッドで何をするか記述する • メソッドの呼び出し:main(など)からメソッドを実行する • 一番シンプルなメソッドの定義 • メソッド名:hello • 「こんにちは」と出力するだけのメソッド 仕事をしろと言うのが メソッドの呼び出し この人がどんな仕事を するか記述するのが メソッドの定義 3 4 メソッドとはーメソッドの呼び出し (1) • メソッドとはーメソッドの呼び出し (2) helloメソッドの呼び出し • • mainメソッド内で「Hello();」と書けば、helloメ ソッドが呼びされて実行される mainメソッドからメソッドを呼び出すと、呼び出したメ ソッドを実行し、戻ってきてから次の行を実行する 5 メソッドとはーメソッドの呼び出し (3) • 6 引数の利用ー引数とは mainメソッド以外(自分で作ったメソッド)からでもメソッ ドを呼び出せる 7 • メソッドを呼び出すときに値を渡すことができる • その時に渡す値のことを引数(ひきすう)と言う 8 引数の利用ー1つの引数を渡す例 (1) 引数の利用ー1つの引数を渡す例 (2) 9 引数の利用ー複数の引数を渡す例 (1) 10 引数の利用ー複数の引数を渡す例 (2) 11 12 メソッドの定義と呼び出し(まとめ) 引数の利用ー仮引数と実引数 • 仮引数(かりひきすう):メソッドの定義で入ってくる値を 格納する変数 (呼び出されないと値は決まっていない) • 実引数(じつひきすう):メソッドを呼び出すときに実際に 用いる値 class SampleClass{ public static void main(String[] args){ hello(); helloWithName("湊"); add(3, 5); } public static void hello(){ // 引数なし ... } public static void helloWithName(String name){ // 引数1つ ... } public static void add(int x, int y){ // 引数2つ ... } } 13 戻り値の利用ー戻り値とは (1) 引数の利用ー変数のスコープとローカル変数 • 14 メソッド内で定義されている変数はそれぞれ独立してい る (別のもの) • 15 メソッドで行った処理の結果を呼び出した側に返すこと ができる 16 戻り値の利用ー戻り値とは (2) • 戻り値の利用ー戻り値とは (3) メソッドから値を返すにはreturnを使う メソッドの定義では、returnする変数の型を書く • • 何も返さないメソッドではvoidと書く • 引数は複数渡せるが、複数の戻り値を返すことはできない class SampleClass{ public static void main(String[] args){ ... } public static void someMethod(...){ ... // 何も値を返さない=returnで終わらない } public static int main(String[] args){ int result; ... // resultを計算 return result; // int型の値を返す } } 17 戻り値の利用ー戻り値を受け取る • 18 戻り値の利用ー戻り値をそのまま使う メソッドから戻った値を変数に代入して利用する • 19 変数に代入しなくても、戻り値をそのまま使うことがで きる 20 オーバーロードの利用 (1) 戻り値の利用ーreturn文の注意点 • return文は値を戻すだけでなく、メソッドを終了させる • 引数の型や個数が違えば、同じ名前のメソッドを複数定 義できる (メソッドのオーバーロードと呼ぶ) (191ページ) • この授業の後で出てきますが、オーバーライドとの違 いに注意すること • 引数の型と個数が同じだと、戻り値が違っても定義で きない (メソッドを呼び出すときに、どのメソッドを 呼び出せばよいのか決められないため) • 参考:メソッドのシグネチャ (194ページ参照) 21 オーバーロードの利用 (2) 22 引数や戻り値に配列を用いる • 23 メソッドの引数に配列を利用できる 24 引数や戻り値に配列を用いるー値渡しと参照渡し (1) • メソッドを呼び出すときには値はコピーされる (値渡し) • • 呼び出されたメソッドの中で書き換えても、それはコ ピーされた変数を書き換えているだけ class SampleClass{ public static void main(String[] args){ int x = 2; hello(x); System.out.println("x=" + x); // 「x=2」と出力される } public static void hello(int x){ x = 3; } } 25 配列をメソッドの引数として渡すときには、参照が渡さ れる (参照渡し) • 呼び出されたメソッドの中で配列を書き換えると、呼 び出した側の配列も書き換わる class SampleClass{ public static void main(String[] args){ int[] x = new int[1]; x[0] = 2; hello(x); System.out.println("x=" + x[0]); // 「x=3」と出力される } public static void hello(int[] x){ x[0] = 3; } } 26 コマンドライン引数 (1) 引数や戻り値に配列を用いるー配列を戻り値に使う • 引数や戻り値に配列を用いるー値渡しと参照渡し (2) 配列を戻り値とすることもできる 27 • mainメソッドに引数を渡すことができる(コマンドライン 引数) • CPad for JavaでHello.javaを書いて、ボタンを押すと起 こること • javac Hello.java (コンパイル) • java Hello (実行) 28 コマンドライン引数 (2) • 課題 (1) 実行するときに引数を与えることができる • java Hello arg1 arg2 • このときargs[0]="arg1"、args[1]="args2"となる。 • CPad for Javaだと、メニューの「実行」→「実行時パ ラメータ」に「arg1 arg2」と入れる。 29 課題 (2) • ArtistData.javaおよびKaraokePad.javaを授業のホーム ページ(http://cdr6275.jp)からダウンロードしてくださ い。 • ArtistData.javaは書き換えません。 • KaraokePad.javaに書かれた指示にしたがって、完成さ せてください。 31 • Tepco.javaおよびRefactoredTepco.javaを授業のホーム ページ(http://cdr6275.jp)からダウンロードしてくださ い。 • Tepco.javaを実行してください。このプログラムは3パ ターンの電気料金を計算します。Tepco.javaは書き換え ません。 • RefactoredTepco.javaを書き換えて、Tepco.javaを実行 したのと同じ動作をするようにしてください。 30
© Copyright 2024 ExpyDoc