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のダウンロードサイト

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 8 新機能つまみぐい

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[] の配列として登録して利用する。

参照 ランダムな値の利用

参照 配列の利用

このページのリンク切れの対応

2次元配列を利用して、迷路を表示するプログラムの例)

課題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 枚のドブル用カードを作成するプログラムを作成する。