岐阜大学工学部応用情報学科3年の授業の内容です。
斎藤末広(岐阜大学非常勤)
Java言語を利用して,プログラムの作成に慣れる。Java言語を得意な言語にする。
教科書に従って、講義、実習を行う。
最終課題として、各自ホームページを立ち上げ、夏休み中に自作のJavaアプレット(400行以上)を動作させる。ソース公開(卒業まで、著作権チェックのため)すること。完成に至っていなくても努力の成果があれば合格とする。
テーマは,共通課題テーマかもしくは自由課題とする。共通課題は,時計とする。
なお,自由テーマは、他の人と同一テーマはいけない。テーマは早い者勝ち。テーマをメールで申請すること。mailto:spage@yscon.co.jp
なお、作成したプログラムは公開をすること、外部からリンクでたどれないところにあるものは認めない。締め切りは、夏休み終了時。
期末テストもあり。
『Javaプログラミング 1001 Tips』 Mark C.Chan 他著,舟木将彦訳、5000円,オーム社,H9.11.10
ジャバ辞典(当ウェブ内)
言語仕様(英語) ジェームズ
ゴスリング他 著
言語仕様(日本語)マルチメディア/ハイパメディア調査研究委員会
授業の目的:プログラムの量に慣れる。その中で,オブジェクト指向の理論がどの程度役立つか実感する。
参考:プログラムを作成するこつ
Java言語で開発できるプログラムの適用分野
アプリケーション
アプレット
Beens
サブレット
組み込み用
無料で実験ができる分野
Javaのツール類は無料で公開されているものが多いので,研究にはありがたい。
オブジェクト指向プログラミング
オブジェクト指向データベース
分散処理(分散オブジェクト)
並列処理(マルチスレッド)
Javaの実行と開発環境
|
ファイル名,ツール名 |
拡張子 |
備考 |
|
ソース |
.java |
|
|
コンパイルする |
|
JDK内のjavac |
|
クラスファイル(バイトコード) |
.class |
Javaで定義されてたオブジェクトコード,一種の中間コード |
|
インタプリタで実行 |
|
JDK内のjava,あるいは,IEに含まれるJavaバーチャルマシン |
補足
Java初心者は,作成するとき,できるだけ,初期のバージョンの規則で作る方がよい。分かりやすくできるし,動作環境も増える。
サンプル62 Javaアプリケーションの例
サンプル58 Javaアプレットの例
をコンパイル,実行する。
サンプル986 時計のサンプル をコンパイル実行させる。このプログラムをバージョンアップして,300 行以上にしてもよい。
C言語に類似
項目81 Javaの予約語
オブジェクト指向
縦の関係としての継承
横の関係としてのインスタンス生成
オブジェクト指向関係を勉強するときは,「オブジェクト」という用語は使用しないこと,そのつど,インスタンス,クラスかを明確にするのがコツである。javaでは,たいてい,インスタンスをオブジェクトと言っている。
インスタンス生成は,変数宣言の発達したものであると捉える。
項目986をバージョンアップする。
1 10秒単位で,色を変える。
2 1分単位で,字の形を変える。
リストのエラーを修正して,動作させる。
タイマー機能 指定した秒数後に時計を点滅
アラーム機能 指定した時刻に時計を点滅
点滅停止機能 点滅した時計を正常に戻す
を組み込む。
リスト(玉置君提供)を各自読み取り,拡張する。
点滅を一工夫,数値を指定できるようにする,時計らしくするなど
自分の時計プログラムのバージョンアップをする。
バージョンアップのヒント
世界時計化,サマータイム対応
小さくしてホームページの済みにおけるようにする。
15分に「今何をしているの?」とか,合図をする機能]
アプレットの動作
ロード
↓ init
初期化
↓ start
実行/停止(stop,
start) run, update, paint, repaint
↓ destroy
終了
基本メソッド
init メモリーにロードされるときに実行するもの
start ページが表示されるときに実行するもの、そのページが再び表示されるときに実行
stop そのページから出たとき、隠れたときに実行
destroy メモリーからアンロードするときに事項
run スレッド実行させる
update 表示する内容を作る 必要に応じて自動実行
paint 表示する直前の設定 必要に応じて自動実行
repain 強制的にpaint,updateを呼び出す
疑問
教科書、862 ページのpaintメソッドの記述のなか なぜ、updateを強制実行させているか?
相談がある人は,来て下さい。
以下は,昨年度の授業内容(なお,昨年度の授業は,教科書は違うが,夏の宿題は同じ)
教科書第8章
抽象クラス、多相性、抽象メソッド、キャスト(型変換)
動的束縛、オブジェクト配列,これらは重要な事項であるが,時間の関係で触れない。各自勉強してほしい。
List8.6の例題も触れない。
教科書132ページの練習問題1とそれをテストするプログラムを List8.5 ColoredFigureApplet.java を利用して作成する。
先ず,練習問題1は、図8.1から図8.2を作成する作業である。現在、図8.2のColoredFigureとColoredCircleがあるので、あとColoredDiamondを作成すればよい。
ColoredDiamondは,図8.1のDiamondとColoreDiamondのプログラムソースを利用して作成する。
教科書第9章
多重継承、インターフェース、定義(definition)、実装(implementation)
多重継承の問題点。これらは重要な事項であるが,時間の関係で触れない。各自勉強してほしい。
図8.1から,図8.2において,「色が付く図形」クラスを抽象クラスとして定義。これによって,図形が持つ共通のメソッドが標準化できる。「図を描く」「色を付ける」というメソッド名の名称自体は,「色が付く図形」クラスで定義され,それの具体的な実装は,子クラスで記述される。
図8.2において,色つき文字クラスが追加されると想定すると,
この場合,無関係に,ColoredCharacterを設定するのは,よくない。「色付き」だけを共通化するにはどうしたらいいか? → 親子関係を前提としないメソッド名の共通化,「インターフェース」の登場
図8.2 と 図9.7を比較する。図9.7 に p148 の DiamondFigure,ColoredDiamond を追加する。
教科書140ページのList9.2は、一つのファイルの中に2つのインターフェース、3つのクラスが記述してある。このようなことが可能である。
これを入力して動作させる。
余裕があれば、140ページの練習1,2に挑戦するとよい。
教科書第10章
イベント、イベントソース、イベントリスナー、低レベルイベント、意味的イベント,JDK1.0とのイベント取り扱いの違い
Canvasクラス
List10.2の動作とプログラム
教科書163ページの練習問題1を行う。
なお、キーボードのrキーを押したら赤色に設定するコードは以下のようにするとできる。
if (e.getKeyCode() == KeyEvent.VK_R){myColor = 0;}
また、アプレットを動作させるときは、表示された図をまずクリックして下さい。
参考になるサイトを調べる
課題(時計,CASL,自由課題)のうちから,どれに挑戦するか,決める。
挑戦する課題名を,メールで,suehiroweb@yscon.co.jp まで提出。
メールの件名は,Java-学籍番号 とする事。その課題のを仮プログラムで,50ステップほどで動作させること。7月6日締め切り。
課題を作成し,仮のプログラムを動作させる。URL をメールで知らせること。
前回,仮のプログラムは50ステップ以上としたが,ステップは問わない。URL で公開の準備ができていないひとは,出来次第,URLをメールで知らせること。
動作できるようになったら,その都度公開し,バージョンアップをすること。
なお,メールの件名は,Java-学籍番号 とする事。
メールの提出期限は,7月9日まで延長します。
以下の課題を評価の対象とします。以下の注意事項を守って下さい。
リンク先は,
課題名は商品名のように付けること(悪い例 時計,いい例 末広時計)
宣伝コメント(例 アナログ時計の決定判,これで遅刻は激減)
課題のページを指すこと,
ソースを公開すること,
参考文献を表示すること。
締め切りは,9月30日します。
なお,以下の課題は,メールにて報告を受けたものです。追加受付は,減点の対象ですが,受付をします。メールでお送り下さい。
CASL 野田 晃寛
ミニゲーム 山本 優作
CASLシミュレータ 渡辺 茂
時計 URATA Tatsuyoshi
World Clock(世界時計) 月山 佳大
時計 滝大輔
アナログ時計 武田豊
潜れー潜れーさあ潜れー TAG
オープニングデモ〜紅葉〜 鈴木智晴
時計 鈴木 貴士
時計 杉山 達彦
時計 杉浦 史晃
? SHIHO Hideki
時計 劉 強
時計 大美 英一
時計 OOMAE Takumi
時計 OOHASHI Ryou
? 野田 晃寛
時計 西本
時計 西田勝彦
時計 近藤玲啓
オセロ 川合 孝治
時計 平塚茂幸
時計 GOTOU Tsutomu
時計 浅野 正也
時計 浅井
(以上正式受付)
前回の続き