レベルエンター山本大のブログ

面白いプログラミング教育を若い人たちに

Javaオブジェクト指向以降の練習問題

研修やってるので覚書

 

課題1 配列

 パッケージ ex_arrayを作成。

 クラス UserSide を作成し、public static void main メソッドで以下を作成

 String配列を作成 String member = new String[3];

 member[0] = "山田花子";

 member[1] = "10";

 member[2] = "90";

「社員番号10番山田花子スコア90点」と表示。

 

課題2 インスタンス

 パッケージex_instanceを作成

 クラス Memberを作成

 フィールド String name;

 フィールド int member_no;

 フィールド int score;

を持たせる。

 

クラス UserSide を作成し、public static void main メソッドで以下を作成

Member型の変数memberを作成して、インスタンスを代入。

member.name = "山田花子";

member.member_no = 10;

member.score = 90;

 

各フィールドからデータを取得して

「社員番号10番山田花子スコア90点」

と表示。

 

 課題3 複数のインスタンス

パッケージex_instance

(課題2のクラスMemberを利用する)

 

クラス UserSide を作成し、public static void main メソッドで以下を作成

Member型の変数member1を作成して、インスタンスを代入。

member1.name = "山田花子";

member1.member_no = 10;

member1.score = 90;

 

Member型の変数member2を作成して、インスタンスを代入。

member2.name = "鈴木一郎";

member2.member_no = 9;

member2.score = 100;

 

Member型の変数member3を作成して、インスタンスを代入。

member3.name = "田中三郎";

member3.member_no = 15;

member3.score = 10;

 

各フィールドからデータを取得して

「社員番号10番山田花子スコア90点」

「社員番号9番鈴木一郎スコア100点」

「社員番号15番田中三郎スコア10点」

と表示。

 

課題4 メソッド

パッケージex_instance

(課題2のクラスMemberを利用する)

 フィールド String name;

 フィールド int member_no;

 フィールド int score;

を持たせる。

 

メソッド showNameAndScore()を作成

「社員番号 + member_no + 番 + name + スコア + score + 点」

と表示するように作成

 

クラス UserSide を作成し、public static void main メソッドで以下を作成

Member型の変数member1を作成して、インスタンスを代入。

member1.name = "山田花子";

member1.member_no = 10;

member1.score = 90;

member1.showNameAndScore()を呼び出し

 

課題5 メソッド パターン1(引数なし・戻り値なし)

パッケージex_method

クラス Light

メソッド lightOn を作成。(引数なし、戻り値なし)

 このメソッドでは「ライトをつけました。」と表示する。

メソッド lightOff を作成。(引数なし、戻り値なし)

 このメソッドでは「ライトを消しました。」と表示する。

 

クラス UserSide を作成し、public static void main メソッドで以下を作成

Light型の変数lightを作成して、インスタンスを代入。

lightOnメソッドを呼び出し

lightOffメソッドを呼び出し

 

課題6 メソッド パターン2(引数あり・戻り値なし)

パッケージex_method

課題5のクラス Lightを利用

 Lightにフィールド boolean 型のisLightOn を持つ

 

 Lightにboolean型の引数 isTurnOn を渡すメソッド、戻り値のないメソッドとして、lightSwitchを作成。

 trueを渡して呼び出すと「ライトをつけました。」と表示。

   フィールド isLightOn をtrueにする。

 falseを渡して呼び出すと「ライトを消しました」と表示する。

   フィールド isLightOn をfalseにする。

 

クラス UserSide を作成し、public static void main メソッドで以下を作成

 Light型の変数lightを作成して、インスタンスを代入。

 lightのlightSwitchメソッドにtrueを渡して呼び出す

 lightのlightSwitchメソッドにfalseを渡して呼び出す

 

課題7 メソッド パターン3(引数なし・戻り値あり)

パッケージex_method 

課題6のクラスを利用

 Lightにメソッド reportLightStatus を作成。引数なし、戻り値Stringとする。

 このメソッドを呼び出すと、

 isLightOnのフィールドがtrueなら「現在のライトの状況はONです」と返し

 isLightOnのフィールドがfalseなら「現在のライトの状況はOFFです」と返す。

 

クラス UserSide を作成し、public static void main メソッドで以下を作成

 Light型の変数lightを作成して、インスタンスを代入

 lightのlightSwitchメソッドにtrueを渡して呼び出す

 lightのreportLightStatusメソッドを呼び出す

 lightのlightSwitchメソッドにfalseを渡して呼び出す

 lightのreportLightStatusメソッドを呼び出す

 

課題8 メソッド パターン4(引数あり・戻り値あり)

パッケージex_method

 課題7のクラス Lightを利用

 Lightにフィールド int型の lightness を作成5で初期化

 Lightにメソッド lightnessUpTo を作成

 引数 int型 upを引き渡す。

 引き渡されたupをlightness変数に+した数字でlightnessを更新

 戻り値 更新後のlightnessの数字

 

クラス UserSide を作成し、public static void main メソッドで以下を作成

 Light型の変数lightを作成して、インスタンスを代入

 lightnessUpToメソッドに、3を渡す。

 戻り値を変数 currentLightness に受け取る

 「明るさをあげました。現在の明るさは + currentLightness + です」と表示

 

課題9 コンストラクタ

パッケージex_constructor

 パッケージ「ex_instance」のクラスMemberをコピーする

 

コンストラクタ

 Member(String n, int no, int s)

 を作成。

 name = n

 member_no = no

 score = s

 を処理

 

クラス UserSide を作成し、public static void main メソッドで以下を作成

Member型の変数memberを作成して、コンストラクタによりインスタンス生成。

Member( "山田花子", 10, 90)

「社員番号10番山田花子スコア90点」

と表示。

 

課題10 総合

パッケージ ex_move

クラス MiniRobot

 フィールド String sprite = "A" <-文字はなんでもいいです。

 メソッド

  display():引数なし/戻り値なし

   System.out.print()メソッドを使ってspriteを表示する

クラス Start

 public static void main メソッドで以下を作成

 MiniRobot型の変数roboを作成して、インスタンスを代入。

 roboのdisplay()メソッドを呼び出す

 

課題11総合

課題10のMiniRobotとStartを利用

MiniRobotに以下を追加

 フィールド int x 初期値10;

 フィールド int y 初期値0;

メソッド

 display()を改造

  spriteを表示している行の前に

  x個分のスペースをSystem.out.print()メソッドを使って表示

  

 

課題12総合

課題11のMiniRobotとStartを利用

MiniRobotに以下を追加

 フィールド int windowHight 初期値100;

 フィールド int windowWidth 初期値100;

メソッド

  display()を改造

  x個分のスペースをSystem.out.print()メソッドを使って表示したコードの前に

  windowHeight ぶんの改行コードを出力するコードを追記

 (改行コードの出力はSystem.out.println()を引数なしで呼び出す)

 

課題13総合

課題12のMiniRobotとStartを利用

MiniRobotに以下を追加

メソッド

 moveRight() :戻り値なし/引数なし

   処理:xを+1して、xを上書きする

 inputMoveString(String input):戻り値なし/ 引数 String型のinput

   処理:

   input が"d"だったら、this.moveRight()を呼び出す

 

クラス Start

インポート文 import java.util.Scanner; を追加

 

mainメソッドの処理を以下にする。

 

import java.util.Scanner;

public class Start {
  public static void main(String args) throws Exception{
    Scanner sc = new Scanner(System.in);
    Man m = new Man();
    while(true){
      m.display();
      m.inputMoveString(sc.next());
    }
  }
}

 

 *コンパイルして実行 d + Enter で移動します

 *ストップ  Ctrl + c

 

課題14総合

課題13のMiniRobotとStartを利用

MiniRobotに以下を追加

メソッド

 moveLeft() :戻り値なし/引数なし

   処理:xを-1して、xを上書きする

 

 inputMoveString(String input):戻り値なし/ 引数 String型のinput を修正

   処理:

   input が"d"だったら、this.moveRight()を呼び出す

   input が"a"だったら、this.moveLeft()を呼び出す

 

課題15総合

課題14のMiniRobotとStartを利用

MiniRobotに以下を追加

メソッド

 moveUp() :戻り値なし/引数なし

   処理:yを+1して、yを上書きする

 moveDown() :戻り値なし/引数なし

   処理:yを-1して、yを上書きする 

 

 display()メソッドを改造

  spriteを表示しているコードの後に、

  y個分の改行コードを出力するコードを追記

 (改行コードの出力はSystem.out.println()を引数なしで呼び出す)

 

 inputMoveString(String input):戻り値なし/ 引数 String型のinput を修正

   処理:

   input が"d"だったら、this.moveRight()を呼び出す

   input が"a"だったら、this.moveLeft()を呼び出す

   input が"w"だったら、this.moveUp()を呼び出す

   input が"s"だったら、this.moveDown()を呼び出す