オブジェクト指向アプローチ論 (環境情報学科3年次配当 月曜日3限 203号室)


このページは,2007年前期まで実施されていた科目の補助教材ページです。既に履修し終わった方々
の参考のために公開を継続しています。したがって,内容が古いままのものが残っておりますので注意
して下さい。


※2007年度より実施されている2年生選択科目「オブジェクト指向プログラミングa」のページはここ
 ではありません。「オブジェクト指向プログラミングa」のページはこちらです。

第2回 2. Javaによる開発の基礎知識(「Javaを学ぶ第1回」後半に相当)

【1】最も簡単なJavaプログラム

下記の最も簡単なJavaプログラムHello.javaを例にして,Javaプログラムの作成・コンパイル・実行の仕方を学習する

List 1 "Hello.java"
public class Hello {
  public static void main( String args[] ) {
    System.out.println( "hello!" );
  }
}
※プログラムはできるだけコピー&ペーストではなく,自分で書くこと
※大文字小文字の区別があるので注意せよ

▼List 1の作成・コンパイル・実行の仕方(Linux)
Linux編
% cd                   ← ホームディレクトリへ移動
% mkdir oopa           ← この授業のためのディレクトリを作成(今後,このディレクトリを使う)
% cd oopa              ← 授業用ディレクトリへ移動
% emacs Hello.java &   ← emacsでList 1のHello.javaを編集し,保存する
% javac Hello.java     ← Javaコンパイラjavacでコンパイル。成功するとHello.classというクラスファイルができる
% java Hello           ← Java仮想マシンjavaで,クラスファイルHello.classを実行
hello!                 ← 実行結果
※コンパイル時にエラーが出たら,エラーメッセージをよく見て間違いを直していくこと。特にスペルミスや(と{の取り違いに注意


●次のように,WindowsでもHello.classを実行してみよ。また,Windows上で再度コンパイルし,Windows上とLinux上でHello.classを実行せよ。

▼Linux で作成したJavaプログラムHello.classを,Windows上のJava仮想マシンで実行してみる
Windows2000編:「スタート」→「コマンドプロンプト」で表示されるコマンドプロンプトウィンドウで以下の操作を行う
Z:\> cd              ← 念のためホームディレクトリ(Z:\)へ移動
Z:\> cd oopa         ← 授業用ディレクトリへ移動
Z:\oopa> dir         ← ファイルの一覧を表示して,Hello.classが有ることを確認しておくこと
Z:\oopa> java Hello  ← Linux上で作成したクラスファイルHello.classをWindows上の仮想マシンで実行してみる
hello!               ← 実行結果 
※同じクラスファイルが,LinuxでもWindowsでも同じように実行されていることに注意

▼今度はHello.classをWindows上で作成し直して(Hello.javaをWindows上のJavaコンパイラでコンパイルしなおす),実行してみる
Windows編:「スタート」→「コマンドプロンプト」で表示されるコマンドプロンプトウィンドウで以下の操作を行う
Z:\> cd                    ← 念のためホームディレクトリ(Z:\)へ移動
Z:\> cd oopa               ← 授業用ディレクトリへ移動
Z:\> del Hello.class       ← Linux上でコンパイルして作成したHello.classを,消去しておく
Z:\oopa> dir               ← ファイルの一覧を表示して,Hello.classが無いことを確認しておくこと
Z:\oopa> javac Hello.java  ← Windows用のJavaコンパイラjavacでコンパイルしなおす
Z:\oopa> dir               ← ファイルの一覧を表示して,Hello.classが有ることを確認しておくこと
Z:\oopa> java Hello        ← Windows上で作成しなおしたクラスファイルHello.classをWindows上の仮想マシンで実行してみる
hello!                     ← 実行結果 
※Windows上で作成されたクラスファイルも,Linux上で作成されたクラスファイルと同じように実行されていることに注意
※Linux上でもWindows上でも,コンパイルにはjavacコマンド,クラスファイルの実行にはjavaコマンドを使用することに注意

▼更に,Windows で作成したJavaプログラムHello.classを,Linux上のJava仮想マシンで実行してみる
Linux編
% cd                   ← ホームディレクトリへ移動
% cd oopa              ← 授業用ディレクトリへ移動
% ls -al               ← ファイルの一覧を表示して,Windowsで作成したHello.classが有ることを確認しておくこと
% java Hello           ← Java仮想マシンjavaで,クラスファイルHello.classを実行
hello!                 ← 実行結果
※Windows上で作成されたクラスファイルも,Linux上で同じように実行できる

【2】ウィンドウを表示するプログラム

次のプログラムを,
  ・Linuxでコンパイル,実行。更にWindows上でクラスファイルを実行せよ。
  ・余裕が有れば,逆にWindows上でコンパイル,実行。更にLinux上でクラスファイルを実行せよ。

List 2 "HelloButton.java"
import javax.swing.*;
import java.awt.*;

public class HelloButton extends JPanel{
  public static void main( String[] args ) {
    JFrame fr = new JFrame();
    fr.setSize( 200, 150 );
    HelloButton hb = new HelloButton();
    JButton b = new JButton( "hello!" );
    hb.add( b );
    fr.getContentPane().add( hb, BorderLayout.CENTER );
    fr.getRootPane().setDefaultButton( b );
    fr.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    fr.setVisible( true );
  }
}

▼List 2の作成・コンパイル・実行の仕方
Linux編
% cd ~/oopa                  ← 授業用ディレクトリへ移動
% emacs HelloButton.java &   ← emacsでList 2のHelloButton.javaを編集し,保存する
% javac HelloButton.java     ← Javaコンパイラjavacでコンパイル。成功するとHelloButton.class
                            というクラスファイルができる
% java HelloButton &         ← Java仮想マシンjavaで,クラスファイルHelloButton.classを実行
Windows編:HelloButton.javaをZ:\oopaディレクトリ内に作成した後,「スタート」→「コマンドプロンプト」で表示
      されるコマンドプロンプトウィンドウで以下の操作を行う
Z:\> cd                    ← 念のためホームディレクトリ(Z:\)へ移動
Z:\> cd oopa               ← 授業用ディレクトリへ移動
Z:\oopa> dir               ← ファイルの一覧を表示して,HelloButton.javaが有ることを確認せよ
Z:\oopa> javac HelloButton.java ← Javaコンパイラjavacでコンパイル。成功するとHelloButton.class
                 というクラスファイルができる
Z:\oopa> java HelloButton  ← クラスファイルHelloButton.classをWindows上の仮想マシンで実行する

▼実行結果例

WindowsXpでの実行結果
Linuxでの実行結果
MacOS Xでの実行結果 (参考)


【3】お絵かきを行うアップレット

 アップレット(applet)とは,Webブラウザが実行するJavaで書かれたプログラムである。ここでは,実際にお絵かきのできる
アップレットを作ってみる。次のプログラムをコンパイルして出来上がるクラスファイル群と下のhtmlファイルを,自分のホーム
ディレクトリに置き,htmlファイルをブラウザで見てみよ。

List 3 "ArtBoard.java"
import java.applet.Applet;
import java.awt.event.*;
import java.awt.*;

public class ArtBoard extends Applet implements ItemListener {
  CheckboxGroup cgrp = new CheckboxGroup();
  Checkbox cp = new Checkbox( "Pen", cgrp, true );
  Checkbox ce = new Checkbox( "Eraser", cgrp, false );
  Graphics g = null;
  Button b = new Button( "Clear" );
  Color c = Color.red;
  int x = 0, y = 0;

  public void init() {
    g = getGraphics();
    Panel p = new Panel();
    p.add( cp ); p.add( ce ); p.add( b );
    setLayout( new BorderLayout() );
    add( "North", p );
    cp.addItemListener( this ); ce.addItemListener( this );

    addMouseListener(
      new MouseAdapter() {
        public void mousePressed( MouseEvent e ) { x = e.getX(); y = e.getY(); }
      }
    );

    addMouseMotionListener(
      new MouseMotionAdapter() {
        public void mouseDragged( MouseEvent e ) {
          g.setColor( c );
          g.drawLine( x, y, e.getX(), e.getY() );
          x = e.getX(); y = e.getY();
        }
      }
    );

    b.addActionListener(
      new ActionListener() {
        public void actionPerformed( ActionEvent e ){ repaint(); }
      }
    );
  }

  public void itemStateChanged( ItemEvent e ) {
    if( cp.getState() ) { c = Color.red; }
    if( ce.getState() ) { c = Color.white; }
  }
}

List 4 "sampleapplet.html"
<html lang="ja">

<head>
  <meta http-equiv="content-type" content="text/html;charset=EUC-jp">
  <title>ArtBoard Java Applet</title>
</head>

<body bgcolor="#ccd4eb">
  <div align="center">
  <applet code="ArtBoard.class" width="512" height="512"></applet></div>
</body>

</html>
▼Linux での作業過程
Linux編
% cd ~/oopa                  ← カレントディレクトリを,授業用のディレクトリ~/oopaへ移動
% emacs ArtBoard.java &      ← emacsでList 3のArtBoard.javaを編集し,保存する

% javac ArtBoard.java        コンパイル。成功するとArtBoard.class,ArtBoard$1.class,ArtBoard$2.class,
                                ArtBoard$3.classの4つのクラスファイルができる
% cp ArtBoard* ~/public_html         ← 今できた4つのクラスファイルを,まとめて自分のホームページのディレクトリにコピーする
% chmod 644 ~/public_html/ArtBoard*  ← コピーしたクラスファイルを,まとめて公開モード(644)に直す
% emacs sampleapplet.html &          ← emacsでList 4のsampleapplet.htmlを編集し,保存する
% cp sampleapplet.html ~/public_html ← 保存したsampleapplet.htmlを,自分のホームページのディレクトリにコピーする
% chmod 644 ~/public_html/sampleapplet.htm  ← コピーしたsampleapplet.htmlを,公開モード(644)に直す


ここまで出来たら,http://www.edu.tuis.ac.jp/~e01000ab/sampleapplet.html をWebブラウザで見る(e01000abは自分のID)。
※Windowsのブラウザからも見てみること
※アップレット用に作成されたクラスファイルは,javaコマンドでは直接実行することは出来ないので注意すること

実際の例はココをクリックしてみること→ サンプル
(しぃペインターという有名なお絵かきAppletで描かれたモナリザの絵の描画再生
▼実行例 (OSは違っても,同じように実行されている点に注意)

▼WindowsXp+InternetExplorerでの実行例
▼Linux+Netscapeでの実行結果
▼MacOS X+InternetExplorerでの実行例 (参考)


【課題】以下の課題を次回までにやってくること

1. このページに書いてあることでやりのこしたものをやっておくこと

2. 特に,今回やったお絵かきアップレットを自分のホームページにおくこと。その際のURLは
  http://www.edu.tuis.ac.jp/~e02000ab/sampleapplet.html
とすること(e02000abは各自のID)。次回の授業後にチェックします。

3. List 1を10回手書きで書いて,次回の授業開始時に提出。

4. 今回配った「Javaを学ぶ第3〜4回」を次回までに読んでおくこと。ほとんどC言語と同じ内容なので安心して読み始めてみて下さい。