オブジェクト指向 プログラミング 第四回 知能情報学部 新田直也.

Slides:



Advertisements
Similar presentations
オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
Advertisements

知能情報工学演習 I 第 12 回( C 言語第6 回) 課題の回答 岩村雅一
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也. 講義計画(あくまで予定) 第 1 回 プログラミング言語の種類と歴史 第 2 回 eclipse の基本操作 第 3 回 eclipse のデバッグ機能 第 4 回 構造化プログラミングの復習 第 5 回 演習 第 6 回 構造化指向からオブジェクト指向へ.
ソフトウェア工学 知能情報学部 新田直也. オブジェクト指向パラダイムと は  オブジェクト指向言語の発展に伴って形成され てきたソフトウェア開発上の概念.オブジェク ト指向分析,オブジェクト指向設計など,プロ グラミング以外の工程でも用いられる.  ソフトウェアを処理や関数ではなくオブジェク.
オブジェクト指向 言語 論 知能情報学部 新田直也. 講義概要  私の研究室: 13 号館 2 階 (13-206)  講義資料について :  参考図書 : 河西朝雄 : 「原理がわかる プログラムの法則」,
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
プログラミングパラダイム さまざまな計算のモデルにもとづく、 プログラミングの方法論 手続き型 関数型 オブジェクト指向 代数 幾何.
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向言語論 知能情報学部 新田直也.
プログラミング言語論 理工学部 情報システム工学科 新田直也.
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
繰り返し プログラミング 第4回 繰り返し プログラミング第4回.
第2章 Eclipseと簡単なオブジェクト 指向プログラミング
オブジェクト指向 プログラミング 第一回 知能情報学部 新田直也.
C#とC++とオブジェクト指向 上甲 健史.
データ構造と アルゴリズム 第四回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
知能情報工学演習I 第12回(後半第6回) 課題の回答
オブジェクト指向 プログラミング 第七回 知能情報学部 新田直也.
10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例
プログラミング言語論 第五回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
プログラミング言語論 第四回 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
オブジェクト指向プログラミングと開発環境
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
オブジェクト プログラミング 第2回 プログラムの基本.
オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
計算機プログラミングI 第4回 2002年10月31日(木) 問題解決とアルゴリズム クラスメソッドと手続きの抽象化 最大公約数
Chapter 5 5.5 thisキーワード 5.6 インスタンス変数とインスタンスメソッド 結城 隆
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
知能情報工学演習I 第12回( C言語第6回) 課題の回答
オブジェクト指向言語論 第一回 知能情報学部 新田直也.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
プログラミング演習I 2003年6月11日(第9回) 木村巌.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
データ構造と アルゴリズム 第四回 知能情報学部 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
ねらい 数値積分を例題に、擬似コードのアルゴリズムをプログラムにする。
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
岩村雅一 知能情報工学演習I 第13回(後半第7回) 岩村雅一
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング 2 静的変数.
Presentation transcript:

オブジェクト指向 プログラミング 第四回 知能情報学部 新田直也

関数の合成 合成関数をデバッグ実行してみよう. 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); 呼び出し 呼び出し 呼び出し

再利用の前提 関数名が適切であること. 関数という部品の性質. 入力と出力の関係によって定義される. 内部の処理をブラックボックス化できる.(情報隠蔽) fact x x! a

内部処理の隠蔽 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; 呼び出し側は 一行も変えていない 呼び出し側は 内部の処理を 知らなくてよい 内部の処理を 書き換え

情報隠蔽の効用 再利用が容易になる. 作業を分担できる.(分業化) 何度も同じようなコードを書かなくて済む.(効率化) 何度もテスト&デバッグしなくて済む.(高信頼化) 作業を分担できる.(分業化) 変更が必要となったときに修正箇所を局所化できる. (変更の局所化,可変性の向上)