復習ーII (General Review II)

Slides:



Advertisements
Similar presentations
アルゴリズムとプログラミン グ (Algorithms and Programming) 第6回:クラスとインスタンス クラスの宣言 アクセス修飾子 インスタンスの生成 (new キーワード) this キーワード フィールドとメソッドの実際の定義と使い 方 クラスの宣言 アクセス修飾子 インスタンスの生成.
Advertisements

独習JAVA Chapter 6 6.6 クラスの修飾子 6.7 変数の修飾子 結城 隆. 6.6 クラスの修飾 abstract インスタンス化できないクラス。1つまたは複数のサブクラスで 実装してはじめてインスタンス化できる。 final 継承されたくないことを明示する。これ以上機能拡張 / 変更でき.
復習ー I (General Review I) クラスとオブジェクトの概念 Concepts of class and object クラスの宣言とオブジェクトの生成 Definition of a class and creation of an object コンストラクタとメソッドのオーバーロー.
山元進.  for 文  while 文  do ~ while 文  文のネスト  break 文  continue 文.
プログラミング実習 1 ・ 2 ク ラス 第 2 週目 担当教員 : 渡邊 直樹. 課題 2 ● 2 × 2型行列の固有値, 固有ベクトルを求め る EigMatrix.java というプログラムを作成せ よ。 ● 行列の各要素はコマンド・プロンプトから入力 ● 計算した結果もコマンド・プロンプトに表示.
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
ゴールデンウィークの課題 (提出日:2009/05/12) 2009/05/12に小テストがあります!
社会人学習講座 「Javaプログラミング概論」
マルチスレッド処理 (II) Multithreading
GridLayout オブジェクト(省略)
プログラミング基礎I(再) 山元進.
IO - 入出力 小西 亨.
Applet 岡部 祐典 鈴木 敬幸.
~手続き指向からオブジェクト指向へ(Ⅰ)~
Ex7. Search for Vacuum Problem
第4回 iPhoneアプリ開発勉強会 Objective-C 基礎講座 -クラス- 鷲見政明.
プログラミング基礎I(再) 山元進.
Ex8. Search for Vacuum Problem(2)
Iアプリプログラミング その1  鳥居秀徳.
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング基礎I(再) 山元進.
プログラミング基礎I(再) 山元進.
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
String - 文字列 2009年10月9日 7ADD2116 佐藤洋輔.
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
繰り返し プログラミング 第4回 繰り返し プログラミング第4回.
第2章 Eclipseと簡単なオブジェクト 指向プログラミング
例外処理 Exception Handling
第20章 Flyweight ~同じものを共有して無駄をなくす~
インタフェース プログラミング 第14回 インタフェース プログラミング第14回.
Bridge Pattern
オブジェクト指向入門.
アプレット プログラミング 第10回 アプレット プログラミング第10回.
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
11.6 ランダムアクセスファイル 11.7 StreamTokenizerクラス
8.1 例外処理 8.2 catchブロックの検索 8.3 throwステートメント 8.4 例外とエラークラス 8.6 独自の例外
プログラミング言語入門 手続き型言語としてのJava
JAVA入門.
JAVA入門後期⑩ 情報処理試験例題解説.
アルゴリズムとプログラミング (Algorithms and Programming)
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
第3回 2007年4月27日 応用Java (Java/XML).
第11週:super/subクラス、継承性、メソッド再定義
アルゴリズムとプログラミング (Algorithms and Programming)
暗号技術 ~JAVAプログラム①~ (5週目)
10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例
7.4 intanceof 演算子 7.5~7.9パッケージ 2003/11/28 紺野憲一
Ex7. Search for Vacuum Problem
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
JAVA入門後期④ イベント、AWT、の基本構造、スレッド
C言語ファミリー C# 高級言語(抽象的) Java オブジェクト指向 C++ C 機械語(原始的)
アルゴリズムとプログラミング (Algorithms and Programming)
第6回レポート解説 条件1 条件2 条件3 月の入力 月、日、曜日の表示 日の入力 曜日の入力
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
C#プログラミング実習 第3回.
計算機プログラミングI 第3回 プリミティブ値 クラスメソッド クラス変数 式と演算 変数の利用
アルゴリズムとプログラミング (Algorithms and Programming)
計算機プログラミングI 第4回 2002年10月31日(木) 問題解決とアルゴリズム クラスメソッドと手続きの抽象化 最大公約数
Chapter 5 5.5 thisキーワード 5.6 インスタンス変数とインスタンスメソッド 結城 隆
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

復習ーII (General Review II) プログラムの構造 Java program structure 変数の範囲 Variable scope: global and local Javaアプレット対Javaアプリケーション 条件制御文: if, if/else, switch 繰返し文: while, for 配列 Array 文字列 String class: constructors and methods

プログラムの構造(structure)と変数の範囲(scope) import Java-APIs; class className extends superClass implements interfaces { variable1; variable2; . . . . . . className(parameters) { //constructor //initialize variable1, variable2, …, and variables in superClass } method1(arguments1) { method1_variables; action_statements; method2(arguments2) { method2_variables; クラスとインスタンス変数 – global variables クラスの中でどこでも使える。 メソッド1の中のインスタンス変数 – local variables メソッド1の中で使える。 メソッド2の中のインスタンス変数 – local variables メソッド2の中で使える。

Javaアプレット(applet)対Javaアプリケーション(application) import java.applet.Applet; import otherJava-APIs;    class className extends Applet implements Interface{   variables; //データとインスタンス変数の宣言 className(parameters){…} //constructors yourOwnMethod(arguments){…}   public void init() { // init()メソッド    変数の初期化とGUIコンポーネットの設定     } public void paint( Graphics g ) {    画面に書き込む   public void actionPerformed ( ActionEvent e){ データを入力し、処理する    repaint(); //画面の更新 } < 必ず必要なパッケージ import Java-APIs;  //Java パッケージのインポート class className extends SuperClass            implements Interface{   //SuperClassはAppletではない。   variables; //データとインスタンス変数の宣言 className(parameters){…} //constructors yourOwnMethod(arguments){…}   public static void main ( String args[] ) {   local_variables; // ローカル変数の宣言と初期化 action statements; // 一連のアクション    //宣言したメソッドの呼び出し call yourOwnMethod;    System.out.println(…); //画面に書き込む    System.in.read(); //データを入力し、処理する } 必ず必要なメソット Javaアプレットを実行するために、 HTML ファイルを作成します。 <html> <Applet code=”className.class” width=300 height=200> </applet> </html> JavaアプリケーションはMS-DOSとShellウィンッドと他のアプリケーションから、実行されることができます。HTMLファイル作成のは必要がない。

Javaアプレット対Javaアプリケーションの例 import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class Multiply extends Applet              implements ActionListener { Label prompt; TextField input; int number, x;  public void init() {  x = 1; String s = "Enter integer and press Enter:" ; prompt = new Label(s); add( prompt ); input = new TextField( 10 );  add( input ); input.addActionListener( this );  }  public void paint( Graphics g ) { g.drawString( Integer.toString( x), 50, 50 ); } public void actionPerformed( ActionEvent e ) { number = Integer.parseInt( e.getActionCommand() ); x = x * number;  input.setText( "" ); repaint(); } } import java.io.*; public class Analysis { public static void main( String args[] )         throws IOException { int passes = 0, failures = 0, student = 1, result; while ( student <= 10 ) { System.out.print( "Enter result (1=pass,2=fail): " ); result = System.in.read(); if ( result == '1' ) passes = passes + 1; else failures = failures + 1; student = student + 1; System.in.skip( 2 ); } System.out.println( "Passed " + passes ); System.out.println( "Failed " + failures ); if ( passes > 8 ) System.out.println( "Raise tuition " ); }

while (conditional expression){ If (conditional expression){ 条件制御 (condition control) start 問題:10人の試験結果を入力し,合格者と不合格者を数えてプリントする.    合格者数が8以上なら,ほめ言葉をプリントする.1: 合格, 0: 不合格 passes = 0 failures = 0 Flowchart (流れ図) Java Application Code (if-else,while) student=1 while (conditional expression){ action statements counter+1} import java.io.*; public class Analysis { public static void main(String args[]) throws IOExecption { int passes = 0, failures = 0, result, student; student = 1; while ( student <= 10 ) { System.out.print( "Enter result (1=pass,2=fail): " ); result = System.in.read(); System.in.skip( 2 ); if ( result == ‘1’ ) passes = passes + 1; else failures = failures + 1; student = student + 1; } System.out.println( "Passed " + passes ); System.out.println( "Failed " + failures ); if ( passes > 8 ) System.out.println( “Well done" ); no student <= 10? yes passesとfailuresを出力 resultを入力 if (conditional expression){ action statements } else {action statements} no yes no passes > 8? result == ‘1’? yes passes + 1 failures + 1 “Well done”を出力 Student + 1 If (conditional expression){ action statements } End If (conditional expression){ action statement }

while (conditional expression){ while文対for文 while Loop for Loop import java.io.*; public class Analysis { public static void (String args[]) throws IOExecption { int passes = 0, failures = 0, result, student; student = 1; while ( student <= 10 ) { System.out.print( "Enter result (1=pass,2=fail): "); result = System.in.read(); System.in.skip( 2 ); if ( result == '1' ) passes = passes + 1; else failures = failures + 1; student = student + 1; } System.out.println( "Passed " + passes ); System.out.println( "Failed " + failures ); if ( passes > 8 ) System.out.println( “Well done" ); import java.io.*; public class AnalysisFor { public static void (String args[]) throws IOExecption { int passes = 0, failures = 0, result, student; for (student = 1; student <= 10; student++ ) { System.out.print( "Enter result (1=pass,2=fail): "); result = System.in.read(); System.in.skip( 2 ); if ( result == '1' ) passes = passes + 1; else failures = failures + 1; } System.out.println( "Passed " + passes ); System.out.println( "Failed " + failures ); if ( passes > 8 ) System.out.println( “Well done" ); 初期化 終了条件 初期化 終了条件 増分 増分 while (conditional expression){ action statements counter+1} for ( expression1; expression2, expression3 ) { action statements }

if 文対 switch文 switch ( result ) { case ‘1’: passes = passes +1; break; failures+1 input 1 or 0 break case `0`? default no yes switch (result) switch ( result ) {  case ‘1’: passes = passes +1; break;  case ‘0’: failures = failures + 1; break;    default: System.out.println( “Input 1 or 0 again”); } resultを入力 switch (control variable){ case label 1: action statements; break; …… default: action statements; if (conditional expression 1){ action statements } else if (conditional expression2 ){ else action statements yes no result == ‘1’? passes + 1 no result == ‘0’? input 1 or 0 if (result == ‘1’) passes = passes + 1; else if (result == ‘0’) failures = failures + 1; else System.out.println( “Input 1 or 0 again”); yes failures + 1

配列 (Array) i n t a [ ] 1 2 3 4 5 7 9 b 参照 r e f c p o アドレス が入る 整数値 宣言 宣言時に初期化 要素の確保   double b[];   b = new double[8];   for (int i = 0; i < b.length; i++) b[i] = 3.5 * i;  int c[][] = { {1, 2, 3}, {4, 5, 6} };  for (int i = 0; i < c.length; i++)   for (int j = 0; j < c[i].length; j++) c[i][j] = i * j; 配列の長さ 値を与える 初期化と 値を与える 配列のメモリー上の表現 int a[] = {3, 5, 7, 9, 11, 13}; int b = 10; i n t a [ ] 1 2 3 4 5 7 9 array b 参照 r e f c p o アドレス が入る 整数値 配列名(の箱)には配列への参照が入る。

配列をメソッドに渡す方法 call-by-reference: one array two references/names 仮引数 public void modifyArray( int b[] ) { // b = a (bはaの配列を指す(参照する)) for (j =0; j < b.length-1; j++) b[j] *= 2; // a[j]の値が変更される } 引数が配列名であるときは、配列への参照が渡される(call-by-reference)。 int a[ ] = {0, 2, 4, 6, 8} …… modifyArray( a ); //call-by-reference modifyElement( a[3] ); //call-by-value a[0]の場所=b[0]の場所 。。。。。。 a[4]の場所=b[4]の場所 public void modifyArray( int e) { // e = a[3] (eにa[3]の値6が入る e *= 2; // eの値が変更される //a[3]の値は変わらない } 引数がintやdoubleの変数や値であるときは、その値渡される(call-by-value)。 i n t a [ ] array i n t b [ ] i n t a [ ] array i n t e a a [ ] 0 -> 0 b [ ] a a [ ] 6 ->12 a [ 1 ] 2 -> 4 b [ 1 ] a [ 1 ] 2 a [ 2 ] 4 ->8 b [ 2 ] a [ 2 ] 4 a [ 3 ] 6 ->12 b [ 3 ] After call modifyArray(a[3]) a[3] has no change a [ 3 ] 6 a [ 4 ] 8 ->16 b [ 4 ] a [ 4 ] 8 After call modifyArray(a) call-by-reference: one array two references/names call-by-value: two values (6) two variable names

文字列 String constructors methods String() String(byte[]) offset String() String(byte[]) String(byte[], int, int) String(char[]) String(char[], int, int) String(String) String(StringBuffer) …… String s1 = new String(“hello”); String s2 = new String(“Hello there”); s1.length() s1.charAt(0) String.valueOf(s1.charAt(0)) s1.equals(“hello”) s1.equalsIgnoreCase(“Hello”) s2.regionMatches(0, s1 , 0, 5) s2.regionMatches( true, 0, s1 , 0, 5) s2.startsWith(“the”, 6) s2.endsWith(“ere”) s2.indexOf((int) ‘e’) s2.indexOf(“there”,4) s2.lastIndexOf(“Hello”, 6) s2.lastIndexOf((int) ‘e’) length 5 h char -> String true true false true 文字列の比較 comparison true true 1 6 文字列の検索 searching 10

S1の先頭または末尾にある全ての空白文字を削除する 文字列 Continue …… methods String s1 = new String(“ hello ”); String s2 = new String(“Hello there”); s1.concat(s2) g.drawString(“s1” + s1.toString(), 25, 25) s2.substring(0, 5) s1.replace(‘h’, ‘H’) s1.toUpCase() s2.toLowerCase() s1.trim() char charArray[] = s1.toCharArray() 文字列の連結 concatenation hello Hello there 文字列の抽出 extraction Hello Hello HELLO hello there 文字列の置き換え replace S1の先頭または末尾にある全ての空白文字を削除する String -> char 配列

課題 (Exercise) 1.左のJAVAアプレットのスケルトンプログラムを完成させなさい。このアプレットは配列を用いて10個の整数を格納する。また、minimum()メソッド、maximum()メソッドとsorting()メソッドを持つ。ここでsorting()メソッドは整数を昇順(最小値から最大値へ)で並び替える。このメソッドは引数として配列を使用する(reference参照)。アプレットを実行するためのHTMLファイルも書くこと。 2.上のアプレットプログラムをアプリケーションプログラムに書き換えよ。   3. 先週の課題である (optional) RectangleCreationApplicationのアプリケーションプログラムをJAVAアプレットに書き換えよ。全てのRectangleオブジェクトのデータと生成したRectangleのオブジェクト個数が示されるようにせよ。最後にアプレットをスタートさせるHTMLを記述せよ。 ??? //import necessary packages public class ArraySorting extends Applet { public void paint( Graphics g ){ ??? //define an array a[ ] and initialize it ??? //print the array a[ ] ??? //print the minimum value by call the minimum method ??? //print the maximum value by call the maximum method ???//call the sorting method and print the array a[] after sorting } public static int minimum(int b[]) { ??? //to find the minimum value in an array public static int maximum(int b[]) { ??? //to find the maximum value in an array public static void sorting(int c[]) { ??? // the detail of sorting method

課題 (Exercise) 1. 次のクラスの宣言を完成しなさい。 2. 次のサブクラスの宣言を完成しなさい。 2. 次のサブクラスの宣言を完成しなさい。 class Rectangle{ private int width; private int height; private int number; static int counter=0; Rectangle(){ ??? } Rectangle(int w, int h){ void setSize(int w, int h){ int getWidth() { ??? } int getHeight() {??? } int getArea() { ??? } public String toString(){ ??? // number,width, height, area } } class NamedRectangle extends Rectangle{ String name; NamedRectangle(){ ??? // no name } NamedRectangle(String s, int w, int h){ ??? void scaleSize(int s){ ??? //拡大又は縮小 s 倍 public String toString(){    ??? //name, number, width, height, area を出力  } 3. RectangleとNamedRectangleのいくつかのオブジェクトの生成と生成したオブジェクトの出力のJava application プログラムを作成しなさい。 public class RectangleCreationApplication { ??? // main メソッド ??? // Rectangle() コンストラクタ 使って、 Rectangleのオブジェクトを生成します ??? // Rectangle(int w, int h) コンストラクタ 使って、 Rectangleのオブジェクトを生成します ??? // NameRectangle() コンストラクタ 使って、 NamedRectangleのオブジェクトを生成します ??? // NamedRectangle オブジェクトを二倍で拡大します ??? // NamedRectangle(String s, int w, int h)コンストラクタ 使って、 Rectangleのオブジェクトを生成します ??? // 生成したオブジェクトを出力しなさい ??? // static変数counterを使って、生成したオブジェクトの数を出力しなさい }

課題 (Exercise) 1. Complete the left skeleton program of a Java applet that uses an array to store 10 integers, and have a minimum method, a maximum method and a sorting method to sort the integers in ascending order (from the minimum to the maximum). The methods use an array as its parameter (call-by-reference). Write a HTML file to run the applet. 2. Change the above applet program into an application program. 3. Change the application program of RectangleCreationApplication (an exercise in the last week) into a Java applet that will show the data of the all rectangle objects and the total number of the created rectangles. Finally, write a HTML file to start the applet. //import necessary packages ??? public class ArraySorting extends Applet { public void paint( Graphics g ){ ??? //define an array a[ ] and initialize it ??? //print the array a[ ] ??? //print the minimum value by call the minimum method ??? //print the maximum value by call the maximum method ???//call the sorting method and print the array a[] after sorting } ??? //define a minimum method ??? //define a maximum method public void sorting(int b[]) { // sorting method is defined here