Javaによるプログラミング演習
2000/04〜2000/09

末広ページへ このコーナーの目次へ
最新情報へ

岐阜大学工学部応用情報学科3年の授業の内容です。

 


講師:

斎藤末広(岐阜大学非常勤)

目標:

 Java言語を利用して,プログラムの作成に慣れる。Java言語を得意な言語にする。

授業の進め方

 教科書に従って、講義、実習を行う。

 最終課題として、各自ホームページを立ち上げ、夏休み中に自作のJavaアプレット(400行以上)を動作させる。ソース公開(卒業まで、著作権チェックのため)すること。完成に至っていなくても努力の成果があれば合格とする。

 テーマは,共通課題テーマかもしくは自由課題とする。共通課題は,時計とする。

 なお,自由テーマは、他の人と同一テーマはいけない。テーマは早い者勝ち。テーマをメールで申請すること。mailto:spage@yscon.co.jp

 なお、作成したプログラムは公開をすること、外部からリンクでたどれないところにあるものは認めない。締め切りは、夏休み終了時。

 期末テストもあり。

教科書

 『Javaプログラミング 1001 Tips』 Mark C.Chan 他著,舟木将彦訳、5000円,オーム社,H9.11.10

参考

 ジャバ辞典(当ウェブ内)
 言語仕様(英語) ジェームズ ゴスリング他 著
 言語仕様(日本語)マルチメディア/ハイパメディア調査研究委員会

 98年度の授業99年度の授業

 


1回目(4/12) 講義の説明

 授業の目的:プログラムの量に慣れる。その中で,オブジェクト指向の理論がどの程度役立つか実感する。

 参考:プログラムを作成するこつ

 


2回目(4/19) Javaの概要

Java言語で開発できるプログラムの適用分野

 アプリケーション
 アプレット
 Beens
 サブレット
 組み込み用

無料で実験ができる分野

 Javaのツール類は無料で公開されているものが多いので,研究にはありがたい。

 オブジェクト指向プログラミング
 オブジェクト指向データベース
 分散処理(分散オブジェクト)
 並列処理(マルチスレッド)

Javaの実行と開発環境

ファイル名,ツール名

拡張子

備考

ソース

.java

 

コンパイルする
(ソースからクラスファイルを生成)

 

JDK内のjavac

クラスファイル(バイトコード)

.class

Javaで定義されてたオブジェクトコード,一種の中間コード

インタプリタで実行
(クラスファイルを解釈実行)

 

JDK内のjava,あるいは,IEに含まれるJavaバーチャルマシン

 

補足

 Java初心者は,作成するとき,できるだけ,初期のバージョンの規則で作る方がよい。分かりやすくできるし,動作環境も増える。

本日の課題

 サンプル62 Javaアプリケーションの例
 サンプル58 Javaアプレットの例

をコンパイル,実行する。

 サンプル986 時計のサンプル をコンパイル実行させる。このプログラムをバージョンアップして,300 行以上にしてもよい。


3回目(4/26) Java基本プログラム

C言語に類似

 項目81 Javaの予約語

オブジェクト指向

 縦の関係としての継承
 横の関係としてのインスタンス生成

コツ1 オブジェクト指向は,「オブジェクト」禁句。クラスとインスタンスを使用すること。

 オブジェクト指向関係を勉強するときは,「オブジェクト」という用語は使用しないこと,そのつど,インスタンス,クラスかを明確にするのがコツである。javaでは,たいてい,インスタンスをオブジェクトと言っている。

コツ2 インスタンス生成,昔は,変数宣言

 インスタンス生成は,変数宣言の発達したものであると捉える。

本日の課題

 項目986をバージョンアップする。

  1 10秒単位で,色を変える。

  2 1分単位で,字の形を変える。

リスト


5回目(5/24) 時計プログラムバージョンアップ

 リストのエラーを修正して,動作させる。

 タイマー機能 指定した秒数後に時計を点滅

 アラーム機能 指定した時刻に時計を点滅

 点滅停止機能 点滅した時計を正常に戻す

を組み込む。

6回目(5/31) 時計プログラムバージョンアップ

 リスト(玉置君提供)を各自読み取り,拡張する。

 点滅を一工夫,数値を指定できるようにする,時計らしくするなど

7回目(6/7) 時計プログラムバージョンアップ

 自分の時計プログラムのバージョンアップをする。

バージョンアップのヒント

 世界時計化,サマータイム対応

 小さくしてホームページの済みにおけるようにする。

 15分に「今何をしているの?」とか,合図をする機能]

解説

 アプレットの動作

 ロード
  ↓     init
 初期化
  ↓     start
 実行/停止(stop, start) run, update, paint, repaint
  ↓     destroy
 終了

基本メソッド

 

init メモリーにロードされるときに実行するもの

start ページが表示されるときに実行するもの、そのページが再び表示されるときに実行

stop そのページから出たとき、隠れたときに実行

destroy メモリーからアンロードするときに事項

run スレッド実行させる

update 表示する内容を作る 必要に応じて自動実行

paint 表示する直前の設定 必要に応じて自動実行

repain 強制的にpaint,updateを呼び出す

疑問

 教科書、862 ページのpaintメソッドの記述のなか なぜ、updateを強制実行させているか?

8回目(6/14)〜 課題あるいは時計プログラムバージョンアップ

 相談がある人は,来て下さい。

 


 

以下は,昨年度の授業内容(なお,昨年度の授業は,教科書は違うが,夏の宿題は同じ)



4回目(5/11) Javaプログラムの基本要素と参照型

 


5回目(5/18) クラス定義

 


6回目(5/25) 継承

 


7回目(6/8) 抽象クラスと多相性

 教科書第8章

重要用語

 抽象クラス、多相性、抽象メソッド、キャスト(型変換)

教科書にあるが触れない項目

 動的束縛、オブジェクト配列,これらは重要な事項であるが,時間の関係で触れない。各自勉強してほしい。

 List8.6の例題も触れない。

本日の課題

 教科書132ページの練習問題1とそれをテストするプログラムを List8.5 ColoredFigureApplet.java を利用して作成する。

 先ず,練習問題1は、図8.1から図8.2を作成する作業である。現在、図8.2のColoredFigureColoredCircleがあるので、あとColoredDiamondを作成すればよい。

 ColoredDiamondは,図8.1のDiamondとColoreDiamondのプログラムソースを利用して作成する。

 


8回目(6/15) インターフェースと多重継承

 教科書第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に挑戦するとよい。

 


9回目(6/22) イベントドリブン

 教科書第10章

重要用語

 イベント、イベントソース、イベントリスナー、低レベルイベント、意味的イベント,JDK1.0とのイベント取り扱いの違い

教科書にあるが触れない項目

 Canvasクラス

本日の内容

 List10.2の動作とプログラム

本日の課題

 教科書163ページの練習問題1を行う。

なお、キーボードのrキーを押したら赤色に設定するコードは以下のようにするとできる。

if (e.getKeyCode() == KeyEvent.VK_R){myColor = 0;}

また、アプレットを動作させるときは、表示された図をまずクリックして下さい。

 


10回目(6/29) 課題検討

 参考になるサイトを調べる

 課題(時計,CASL,自由課題)のうちから,どれに挑戦するか,決める。

本日の課題

 挑戦する課題名を,メールで,suehiroweb@yscon.co.jp まで提出。

メールの件名は,Java-学籍番号 とする事。その課題のを仮プログラムで,50ステップほどで動作させること。7月6日締め切り。

 


11回目(7/6) 課題作成

 課題を作成し,仮のプログラムを動作させる。URL をメールで知らせること。

前回,仮のプログラムは50ステップ以上としたが,ステップは問わない。URL で公開の準備ができていないひとは,出来次第,URLをメールで知らせること。

動作できるようになったら,その都度公開し,バージョンアップをすること。

なお,メールの件名は,Java-学籍番号 とする事。

 メールの提出期限は,7月9日まで延長します。

 


夏の補講

12回目(9/7) 課題作成

以下の課題を評価の対象とします。以下の注意事項を守って下さい。

リンク先は,
 課題名は商品名のように付けること(悪い例 時計,いい例 末広時計)
 宣伝コメント(例 アナログ時計の決定判,これで遅刻は激減)
 課題のページを指すこと,
 ソースを公開すること,
 参考文献を表示すること。

締め切りは,9月30日します。

なお,以下の課題は,メールにて報告を受けたものです。追加受付は,減点の対象ですが,受付をします。メールでお送り下さい。

CASL 野田 晃寛

ミニゲーム 山本 優作

CASLシミュレータ 渡辺 茂

時計 URATA Tatsuyoshi

World Clock(世界時計) 月山 佳大

時計 滝大輔

アナログ時計 武田豊

潜れー潜れーさあ潜れー TAG

オープニングデモ〜紅葉〜 鈴木智晴

時計 鈴木 貴士

時計 杉山 達彦

時計 杉浦 史晃

 SHIHO Hideki

時計 劉 強

時計 大美 英一

時計 OOMAE Takumi

時計 OOHASHI Ryou

 野田 晃寛

時計 西本

時計 西田勝彦

時計 近藤玲啓

オセロ 川合 孝治

時計 平塚茂幸

時計 GOTOU Tsutomu

時計 浅野 正也

時計 浅井

(以上正式受付)

 


13回目(9/14) 課題作成

前回の続き

 


 

 


spage@yscon.co.jp

末広ページへ このコーナーの目次へ