練習問題

2.7 練習問題

本章で習った内容を元に練習問題を解いてください。

問1 次の設問①~⑤について○か×で答えなさい。

設問
① クラスは必ず「フィールド変数」と「メソッド」を定義しなければならない。
② クラスは型として使用できオブジェクト変数を定義できる。
③ オブジェクト変数にはnew演算子で生成された、オブジェクト自身のデータがそのまま代入される。
④ Javaプログラムのデータの型は、大きく分けると基本データ型と参照型の2種類が存在する。
⑤ thisキーワードでメンバにアクセスする場合、処理内容は変わらないので記述しない方がよい。

問2 以下のメンバをもつクラスPerson01.javaを定義しなさい。

フィールド変数
①文字列型 name //名前
②整数型 age //年齢

メソッド
①メソッド名:showPerson
 戻り値:無し 引数:無し
 処理内容:画面に「この人の名前はnameで、年齢はage歳です。」と表示する。
 ※nameとageはフィールド変数の値になります。

問3 以下の仕様を持つPractice0201.javaを作成し、実行結果になるようにmainメソッドの処理を作成しなさい。問2で作成したPerson01クラスをコピーしたPerson02クラスを作成し、Practice0201.java内に記述して下さい。

実行結果

作成仕様

① Person02クラスよりオブジェクトを2つ生成する。その際のオブジェクト変数名はperson1とperson2とする。
② ①で生成した個々のオブジェクトのフィールド変数に、実行結果になる値を設定します。
③ オブジェクト内のshowPersonメソッドにアクセスし、個々の結果を画面に表示する。

① ソース・フォルダー: myproj_basic/src
② パッケージ: jp.co.f1.basic.ch02exercise
③ 名前: Practice0201
④ 作成するメソッド・スタブの選択: public static void main(String[] args) にチェックを入れる

  package jp.co.f1.basic.ch02exercise;

  class Person02 {
    String name; // 名前
    int age; // 年齢

    // フィールド変数の値を画面にメッセージとして出力する
    public void showPerson() {
      System.out.println("この人の名前は" + this.name + "で、年齢は" + this.age + "歳です。");
    }
  }

  public class Practice0201 {
    public static void main(String[] args) {
      // Person02オブジェクトを2つ作成
      // ①の仕様を記述

      // 個々のオブジェクトのフィールド変数に値を設定
      // ②の仕様を記述

      // メソッドにアクセスし個々の結果を表示する
      // ③の使用を記述
    }
  }
  

問4 問2で作成したクラスPerson01.javaに、以下の仕様のメソッドを追加したPerson03.javaを作成しなさい。

メソッド

① メソッド名:setName
 戻り値:無し 引数:String name
 処理内容:引数nameの値をフィールド変数nameに格納する。

② メソッド名:setAge
 戻り値:無し 引数:int age
 処理内容:引数ageの値をフィールド変数ageに格納する。

③ メソッド名:getName
 戻り値:String 引数:無し
 処理内容:フィールド変数nameの値を返す。

④ メソッド名:getAge
 戻り値:int 引数:無し
 処理内容:フィールド変数ageの値を返す。

※thisキーワードを必ず使用してください。

① ソース・フォルダー: myproj_basic/src
② パッケージ: jp.co.f1.basic.ch02exercise
③ 名前: Person03

  package jp.co.f1.basic.ch02exercise;

  public class Person03 {
    String name; // 名前
    int age; // 年齢

    // フィールド変数の値を画面にメッセージとして出力する
    public void showPerson() {
      System.out.println("この人の名前は" + this.name + "で、年齢は" + this.age + "歳です。");
    }

    // メソッド①
    public void setName(String name) {
      // ここに処理を記述
    }

    // メソッド②
    public void setAge(int age) {
      // ここに処理を記述
    }

    // メソッド③
    public String getName() {
      // ここに処理を記述
    }

    // メソッド④
    public int getAge() {
      // ここに処理を記述
    }
  }
  

問5 以下のPractice0202.javaを実行すると、結果がどうなるか選択肢より選んで答えなさい。

選択肢
a. 「この人の名前は神田太郎で、年齢は30歳です。」が表示される。
b. 実行時エラーになりエラーメッセージが表示される。
c. 「null」が表示される。
d. コンパイルエラーになり実行できない。

① ソース・フォルダー: myproj_basic/src
② パッケージ: jp.co.f1.basic.ch02exercise
③ 名前: Practice0202
④ 作成するメソッド・スタブの選択: public static void main(String[] args) にチェックを入れる

  package jp.co.f1.basic.ch02exercise;

  class Person04 {
    String name; // 名前
    int age; // 年齢

    // フィールド変数の値を画面にメッセージとして出力する
    public void showPerson() {
      System.out.println("この人の名前は" + this.name + "で、年齢は" + this.age + "歳です。");
    }
  }

  public class Practice0202 {
    public static void main(String[] args) {
      // Person04オブジェクトを作成
      Person04 person = new Person04();

      // オブジェクトに値を設定
      person.name = "神田太郎";
      person.age = 30;

      // オブジェクト変数にnullを代入
      person = null;

      // メソッドにアクセスし個々の結果を表示する
      person.showPerson();
    }
  }
  

問6 以下のPractice0203.javaを実行すると、画面に結果がどのように表示されるか答えなさい。

① ソース・フォルダー: myproj_basic/src
② パッケージ: jp.co.f1.basic.ch02exercise
③ 名前: Practice0203
④ 作成するメソッド・スタブの選択: public static void main(String[] args) にチェックを入れる

  package jp.co.f1.basic.ch02exercise;

  class Person05 {
    String name; // 名前
    int age; // 年齢

    // フィールド変数の値を画面にメッセージとして出力する
    public void showPerson() {
      String name = "山田花子";
      int age = 25;
      System.out.println("この人の名前は" + name + "で、年齢は" + age + "歳です。");
    }
  }

  public class Practice0203 {
    public static void main(String[] args) {
      // Person05オブジェクトを作成
      Person05 person = new Person05();

      // オブジェクトに値を設定
      person.name = "神田太郎";
      person.age = 30;

      // メソッドにアクセスし個々の結果を表示する
      person.showPerson();
    }
  }
  

NEXT>> 2.8 練習問題 解答