オブジェクト指向 プログラミング 第四回 知能情報学部 新田直也 関数の合成 合成関数をデバッグ実行してみよう. public static void main(String[] args) { int x, y, z; x = 2; y = 3; z = 4; ブレーク z = mult(x, mult(y, z)); ポイント System.out.println("2 * (3 * 4) = " + z); } public static int mult(int a, int b) { int c; c = a * b; return c; } 再帰関数 階乗を求める再帰関数をデバッグ実行してみよう. public static void main(String[] args) { int x, y; x = 4; ブレーク y = fact(x); ポイント System.out.println("4! = " + y); } public static int fact(int a) { if (a == 1) { return 1; } return a * fact(a - 1); } インデントについて 行の 先頭 を揃 える Javaの標準のインデントに従おう. public static void main(String[] args) { int x, y; x = 4; y = fact(x); System.out.println("4! = " + y); } public static int fact(int a) { if (a == 1) { return 1; } return a * fact(a - 1); } 中括弧開くは 行の末尾に 関数の再利用 一度定義した関数は,何度でも何処からでも呼び出 して再利用できる. public static void main(String[] args) { int x, y; y = fact(4); System.out.println("4! = " + y); y = fact(5); System.out.println("5! = " + y); y = fact(6); System.out.println("6! = " + y); } public static int fact(int a) { if (a == 1) { return 1; } return a * fact(a - 1); } 呼び出し 呼び出し 呼び出し 再利用の前提 関数名が適切であること. 関数という部品の性質. 入力と出力の関係によって定義される. 内部の処理をブラックボックス化できる.(情報隠蔽) x a fact x! 内部処理の隠蔽 factの内部の処理を変えてみる. public static void main(String[] args) { int x, y; y = fact(4); System.out.println("4! = " + y); y = fact(5); System.out.println("5! = " + y); y = fact(6); System.out.println("6! = " + y); } public static int fact(int a) { int x, b = 1; for (x = 1; x <= a; x++) { b = b * x; } return b; } 呼び出し側は 一行も変えて いない 呼び出し側は 内部の処理を 知らなくてよい 内部の処理を 書き換え 情報隠蔽の効用 再利用が容易になる. 何度も同じようなコードを書かなくて済む.(効率化) 何度もテスト&デバッグしなくて済む.(高信頼化) 作業を分担できる.(分業化) 変更が必要となったときに修正箇所を局所化できる. (変更の局所化,可変性の向上)
© Copyright 2024 ExpyDoc