教育サーバーのページ
オンラインテキスト目次
情報リテラシー演習
ソフトウエア入門演習

クラスとオブジェクトの操作

参考:クラスとオブジェクトの操作 についての詳細はJava教科書 p99からp113までを参照のこと

演習1

以下のプログラムをコンパイルして、実行せよ。

┏━━━━━━━━━ Point.java ━━━━━━

/*
Point.java
 */
public class Point {
   /** 座標x, y */
   int x, y;
   /** 座標を表示する*/   
   void print(){
     System.out.println(x + "," + y);
   }

   /** 座標を設定する*/
   void set(int ptx, int pty){
     x = ptx;
     y = pty;
   }

   /** 指定の点との距離を求めるメソッド1*/
   double distance(int ptx, int pty){
     double d;
     int dx = ptx - x; // x座標の差
     int dy = pty - y; // y座標の差
     d = Math.sqrt(dx * dx + dy * dy); //距離を求める
     return d;
   }

   /** 指定の点との距離を求めるメソッド2*/
   double distance(Point pt){
     double d;
     int dx = pt.x - x; // x座標の差
     int dy = pt.y - y; // y座標の差
     d = Math.sqrt(dx * dx + dy * dy); //距離を求める
     return d;
   }

   public static void main(String argv[]) {
    Point pt = new Point();
    pt.set(10, 20);
      // distance()メソッド1のテスト
    double dist =pt.distance(0,0); //原点からの距離を求める
    System.out.println("Dist (0,0) - (10,20):" + dist);
   }
}
┗━━━━━━━━━━━━━━━━━━━━━━━━

演習2

演習1のプログラムをコンストラクタを使って記述せよ。 記述したプログラムをコンパイルし、実行せよ。

演習3

演習2で定義したコンストラクタPoint(int x, int y)を 以下のset()メソッドを使って書き直せ。

 
    void set(int ptx, int pty) {
       x = ptx;
       y = pty;
    }
また、書き直したプログラムをコンパイルし、実行せよ

演習4

次に示すソースコードをコンパイルし、実行せよ。 実行時の出力結果を示せ。

┏━━━━━━━━━ Point3DOverloadMethods.java ━━━━━━

/*
Point3D.java
 */
class Point3D {
  double x;
  double y;
  double z;

  Point3D(double x) {
    this(x, 0, 0);
  }

  Point3D(double x, double y) {
    this(x, y, 0);
  }

  Point3D(double x, double y, double z) {
    this.x = x;
    this.y = y;
    this.z = z;
  }

  void move(double x) {
    this.x = x;
  }

  void move(double x, double y) {
    this.x = x;
    this.y = y;
  }

  void move(double x, double y, double z) {
    this.x = x;
    this.y = y;
    this.z = z;
  }
}

class Point3DOverloadMethods {
  public static void main(String args[]) {
    Point3D p = new Point3D(1.1, 3.4, -2.8);
    p.move(5);
    System.out.println("p.x = " + p.x);
    System.out.println("p.y = " + p.y);
    System.out.println("p.z = " + p.z);
    p.move(6,6);
    System.out.println("p.x = " + p.x);
    System.out.println("p.y = " + p.y);
    System.out.println("p.z = " + p.z);
    p.move(7,7,7);
    System.out.println("p.x = " + p.x);
    System.out.println("p.y = " + p.y);
    System.out.println("p.z = " + p.z);
  }
}
┗━━━━━━━━━━━━━━━━━━━━━━━━

また、上記のPoint3DOverloadMethods.java を1つのクラス(Point3D)からなるプログラム Point3D.javaに書き直し、コンパイルせよ。

演習5

次に示すソースコードをコンパイルし、実行せよ。 実行時の出力結果を示せ。

┏━━━━━━━━━ Class1.java ━━━━━━

/*
VariableHidingDemo.java
 */
class Class1 {
  int i = 1000;

  void f() {
    System.out.println(i);
    for (int i = 0; i < 5; i++) {
      System.out.println(i + " ");
    }
    System.out.println(" ");
    System.out.println(i);
  }
}

class VariableHidingDemo {
  public static void main(String args[]) {
    Class1 class1 = new Class1();
    Class1.f();
  }
}
┗━━━━━━━━━━━━━━━━━━━━━━━━

また、上記のVariableHidingDemo.javaから、 クラスClass1からなるプログラムClass1.javaと クラスVariableHidingDemoからなるプログラム VariableHidingDemo.javaに書き直し、それぞれ をコンパイルせよ。さらに、プログラム実行の ために、以下のコマンドを実行せよ。

     java VariableHidingDemo ↓

演習6

次に示すソースコードをコンパイルし、実行せよ。 実行時の出力結果を示せ。

┏━━━━━━━━━ MainClass.java ━━━━━━

/*
MainClass.java
 */
public class MainClass {
  public static void main(String args[]) {
    Calc calc1 = new Calc(100);
    Calc calc1 = new Calc(200);
    System.out.println("calc = " + calc1.calc() + 
                           "calc2 = " + calc2.calc());
  }
}
┗━━━━━━━━━━━━━━━━━━━━━━━━

┏━━━━━━━━━ Calc.java ━━━━━━━━━

class Calc {
  static int num1 = 0;
  int num2 = 0;
  int num3 = 0;

  Calc(int num) {
    num2 = num;
  }

  int calc(){
    int num3 = num1 + num2;
    num1 = num3;
    return num3;
  }
}
┗━━━━━━━━━━━━━━━━━━━━━━━━

上記の2つのクラスからなるプログラムを1つのクラス (MainClass)からなるプログラムMainClass.javaに書き直し、 実行せよ。


ソフトウエア入門演習
情報リテラシー演習
オンラインテキスト目次
教育サーバーのページ

永井 保夫 nagai@rsch.tuis.ac.jp