x05. Javaでオブジェクト指向(2/4)
準備:
・eclipse の javadoc ビューの文字化けを直す
eclipse の ウインドウ メニュー → 設定 → 一般 → ワークスペース → テキスト・ファイル・エンコード
を その他 を選択して、 UTF-8 に設定する。
※エディターの文字のサイズが小さくて見えにくい人は、設定を変えて文字サイズを大きくすると良い。
・Javadoc の進め http://qiita.com/sudahiroshi/items/f12837648304bbf00a24
・出席はWebClassに登録
・今日の演習課題は、後日に他の回の課題と一緒にまとめて提出
※2016年度受講生へ:
今年度はブラウザで動作するJavaAppletは使用しません。サンプルプログラムや課題の実行確認には、eclipseからAppletエミュレーターを使用してください。
Javaプロジェクトの実行環境をAppletに設定すると、Appletのウィンドウが表示されてプロジェクトを実行できます。
※※ 今年度の講義は Java8 を使用します。 次期バージョンの Java9 では、Appletのサポートが打ち切られます。
本演習では JavaAppletを教材として提示しています。
JavaAppletはブラウザ内で動作するFlashの様なプラグインアプリです。実行にはプラグインソフトのインストールとブラウザとOSの設定変更が必要です。
※2015年度受講者へ Google Chrome は Javaのプラグインのサポートを停止しました。インターネットエクスプローラーで教材の JavaApplet を実行してください。
旧資料:
JavaApplet の実行に必要な3つの条件をしまします。
・最新のJavaプラグインを使用する。古い場合はアップデートが必要。 アップデートにはOSの管理者権限が必要です。
Javaの更新は、OSのコントロールパネル→ プログラム→ Java(32bit) から 更新 を利用します。実習室のPCでは学生利用者がアップデートするには権限が不足です。
皆さんの利用しているPCの番号を出席リストで調べて、次回までに更新しておきます。
・ブラウザのセキュリティの解除 JavaAppletを含むWebページを表示した際に 実行に関する警告 が表示されます。表示内容を確認して、Appletの実行を許可してください。
・実習室のWindows の場合、 OSのコントロールパネル→ プログラム→ Java(32bit)
から、セキュリティのタブを表示し、JavaAppletの掲載されているサイトの URLを登録する必要があります。
本演習では、
http://202.236.100.31/
http://kaz.cyteen.nagoya-bunri.ac.jp/
の2つを追加しておいてください。
自宅やノートPCからも上記同様の手順で設定します。
Java(2/4) 基本文法
Java予約語 制御構造 について
旧科目 応用プログラミング1 の資料を参照
※第9回のJava拡張文法について補足
上のリンク先で用意した拡張文法の資料は、Java5 の頃のものです。
Java6 Java7 Java8 とJavaの文法は拡張されてきています。
Java5以降の拡張文法としては、 ラムダ式(lambda) 、インターフェースのデフォルト実装、2進数リテラル、数値区切り用記号 _ 、switch文で文字列、例外のマルチキャッチ、例外処理のリソース自動クローズ などがあります。
こちらの記事が見やすくてわかりやすいです。
参考記事 今更人に聞けないJava5からの新機能(J2SE 5.0)
今更人に聞けないJava5からの新機能(Java SE 7)
Javaの文法学習について
基礎文法編:
C言語を元に、プログラムの表記文法が出来ています。
Cに加えて、オブジェクト指向に対応した文法、 総称プログラミング(ジェネリクス)、拡張 for ループ、λ(ラムダ)式 などの文法拡張も有ります。
「java 最速マスター」 で検索すると、文法をコンパクトにまとめた記事がみつかるので、ざっと目を通しておくとよいでしょう。
例えば基礎文法(C言語的な)は、 こちら に。
オブジェクト指向編:
クラス定義、メソッド定義、クラス継承、インターフェース、総称プログラミング(ジェネリック)などの機能を利用する為の文法が用意されています。
オブジェクト指向の部分は、ドットインストールの後半の記事が参考になりそうです。
Javaのマイナーな、マニアックな文法が 変態文法 として記事になっています。
確認:
ブーリアン型(boolean) Javaの変数の型のキーワードは boolean
Wikipediaの記事 C言語の if 文の条件節の扱いと、 bool 値 について調べ、 Javaとの差について確認する。
double d = 1.0/0.0; の値はどうなるか? また、 d != d の値はどうなるか?
例) for 文の C言語的表記 と Java的な表記
演習: eclipse で動作を確認しておく。 プロジェクト名 Project2 クラス名 Test01
int[] fields = new int[] { 1, 2, 3 };
for ( int i = 0; i < 3; ++i ) {
System.out.println(fields[i]);
}
for ( int i = 0; i < fields.length ; ++i ) {
System.out.println(fields[i]);
}
for ( int field: fields ) {
System.out.println(field);
}
プログラムを修正して、配列の要素数を増やすとどうなるか確かめる。
以下の課題に取り組む。
作成するプログラムのタイプは全て、JavaApplet
プロジェクト名は Project2 とし、課題プログラムのクラス名は Kadai01 の形式とする。
基本課題:
課題1 Kadai01
画像を表示するプログラムの作成
eclipse に画像をドラッグ&ドロップで登録。ファイル名と座標とサイズを指定して、表示。
画像の形式は jpeg gif png bmp などに対応している。
画像をコピーする先は、 プロジェクトフォルダ内の、デフォルトバッケージの場所。フォルダにファイルエクスプローラーからコピーするのではなく、eclipseのプロジェクトウィンドウにドラグアンドドロップしてコピーを選ぶこと。
参照 アプレットで画像表示
↑
このページのリンク切れ対応
課題1Kadai01a
課題1のプログラムを修正。3枚の画像を並べて表示。
課題2 Kadai02
3枚の画像の中から、ランダムに1枚画像を選んで表示するプログラムの作成。
画像のファイル名を、 String[] の配列として登録して利用する。
参照 ランダムな値の利用
参照 配列の利用
↑
このページのリンク切れの対応
課題3 Kadai03
13枚の画像の中から、ランダムに3枚画像を選んで表示するプログラムの作成。
表示する画像は、全て異なる画像である事。
応用課題:
課題4 Kadai04
13枚の画像の中から、ランダムにカードを選びグループにまとめる。
グループ A 4枚選択
グループ B 4枚選択
グループ C 4枚選択
AとB BとC CとA で必ず1つの画像だけ同じものを選択するようにする。
どの画像が同じになるかはランダムに決定する。
各グループを円で囲って 画像を表示。
ループ処理は、拡張 for 文を利用すること。 参照 拡張文法
チャレンジ編:
課題5 Kadai05
13枚の画像の中から、ランダムにカードを選びグループにまとめる。
グループ A 4枚選択
グループ B 4枚選択
グループ C 4枚選択
AとB BとC CとA で必ず1つの画像だけ同じものを選択するようにする。
どの画像が同じになるかはランダムに決定する。
かつ、画像の構成が全く同じグループにならないようにグループを作成する。
各グループを円で囲って 画像を表示。
課題6 Kadai06
13枚の画像から、4個画像を選びグループとする。
そのようなグループを 13グループ作成する(全パターン)。
条件:
・どのグループ間でも、必ず1だけ同じ画像が存在する。
・どのグループも異なる画像で構成されている。
・13枚の画像は、どの画像も同じ回数使用されていること。
研究: Kadai07
ドブルの作成:
n枚の画像で構成されたカードのドブルを作るには、
n*(n-1)+1 枚のカードと n*(n-1)+1 枚の画像 が必要になる。
例)
4枚の画像がカードに描かれているなら、
必要な画像の個数は、 4*3+1= 13枚。 カードも13枚作成出来る。
n*(n-1)+1 枚の画像から、 n*(n-1)+1 枚のドブル用カードを作成するプログラムを作成する。