マルチメディア・プログラミング実習 後期 第6回

Javaのシステムと java.lang

java.lnagパッケージを活用して Javaのシステムへのアクセス、スレッドの操作、 クラスの情報の取得などを練習をします。
準備:

ディレクトリ www の下の java2 に移動しなさい。


基本課題1:

「Frameの終了処理」

  1. Frameのクラスを拡張して、ウィンドウメニューできちんとシステムを 終了できるようにします。
    ソース・プログラム ExitableFrame.java を作成してください。

  2. javac コマンドでコンパイルをしなさい。

  3. このプログラムを実行するためには、次のようにして javaインタープリタ (仮想マシン)を起動し、引数にプログラムのクラス名を指定します。

    
       java  ExitableFrame
    
    
  4. ウィンドウをアイコン化したり、元に戻したりしてみなさい。 最後にウィンドウメニューで終了してみなさい。

基本課題2:

「複数のスレッドによる処理」

  1. 複数のスレッドが同時に同一のデータにアクセスすると、どんなことになるか 調べるためのプログラムです。
    ソース・プログラム MultiAccess.java を作成してください。

  2. javac コマンドでコンパイルをしなさい。 このサンプルでは3つのバイトコードが生成されるはずです。

  3. このプログラムを実行するためには、次のようにして javaインタープリタ (仮想マシン)を起動し、 引数に main()メソッドを持つクラスのクラス名を指定します。 どんな出力得られるか調べてみなさい。 また、どうしてそうなるのか考えてみなさい。

    
       java  MultiAccess
    
    
  4. synchronized のブロックのコメントアウトをはずして、 再コンパイルし、再度実行してみなさい。 今度はどんな出力が得られましたか?

基本課題3:

「クラスの情報を調べる」

  1. 与えられたクラス名のクラスのメソッドの情報を取り出すプログラムです。 java.langのClassクラスと java.lang.reflectの Methodクラスを利用します。
    ソース・プログラム MethodInfo.java を作成してください。

  2. javac コマンドでコンパイルをしなさい。

  3. このプログラムを実行するためには、次のようにして javaインタープリタ (仮想マシン)を起動し、最初の引数にプログラムのクラス名、 その後に調べたいクラスのクラス名を指定します。

    
       java  MethodInfo  ExitableFrame
       java  MethodInfo  java.awt.Button
    
    

応用課題1:

基本課題1:のクラスは、 これからのアプリケーションでも利用しますが、 デバッグ用のメッセージは以後不要になります。 System.out.println()の行をすべてコメントアウトして 再コンパイルしておきなさい。

応用課題2:

「10進数と16進数の変換」

  1. 10進数と16進数の変換を行うクラスです。 java.awtのコンポーネントを利用し、ウィンドウのインターフェイスを提供します。 また、後で再利用することも考えて設計してみましょう。
    ソース・プログラム Converter.java を作成してください。

  2. javac コマンドでコンパイルをしなさい。

  3. java コマンドで実行しなさい。

応用課題3:

「与えられた RGBの値の色を表示するツール」

  1. 上のプログラムのクラスを再利用して、 実用的なアプリケーションを作った例を紹介します。 ソース・プログラム RGB.java を作成してください。

  2. javac コマンドでコンパイルをしなさい。

  3. java コマンドで実行しなさい。

応用課題4:

基本課題3:のプログラムを参考にして、 クラスのコンストラクタの情報を取り出すクラス ConstructorInfo を 作りなさい。(ヒント:java.lang.reflect の Constructorクラスを 利用します。)


実習の目次  今週の講義の内容