オブジェクト指向言語・期末テスト(2026 年 07 月 30 日)解答例

学籍番号         氏名            

  1. (2 × 3)

    (1) (B), (D) (2) (A), (E)

  2. (1 + 8 × 2 + 1 + 2 × 3)

    (1) extends JPanel implements ActinListener
    (2)LocalDate.now()
    (3)today.toString()
    (4)date.getYear()
    (5)date.getMonthValue()
    (6)date.getDayOfMonth()
    (7)today.plusDays(period)
    (8)LocalDate.of(year, month, date)
    (9) newDate.toEpochDay() - today.toEpochDay()
    (10)extends JPanel
    (11) e -> {
    /* 元の 41 〜 43 行目と同じ */
    }
    (12) e -> {
    /* 元の 45 〜 50 行目と同じ */
    }
     

    中間言語の代替問題はここまで

  3. (2 × 4)

    (1) [1, 2, 1, 3, 1, 2, 1, 4, 1, 2]
    (2) [11, 34, 17, 52, 26, 13, 40, 20, 10, 5]
  4. (2 × 4)

    (1) (D) (2) (C)

  5. (3 + 7)

    (1) 5 行目の public を private に変える
    (2) Chruru Qyuu Piyo
    Chichi Qyuu Kokekokkooo
    Chichi Qyuu Kokekokkooo

  6. (3 × 3 + 5)

    (1) implements KeyListener, Runnable
    (2) thread != myThread
    (3) implements KeyListener, ActionListener
    (4) if (i < 10) {
    color = Color.RED; /* 元の 20 行目と同じ */
    x = 50 + 10 * i; y = 150; /* 元の 24 行目と同じ */
    } else if (i < 20) {
    color = Color.BLUE; /* 元の 29 行目と同じ */
    x = 150 - 10 * (i - 10); y = x; /* 元の 33 行目と同じ */
    } else {
    color = Color.GREEN; /* 元の 38 行目と同じ */
    x = 50; y = 50 + 10 * (i - 20); /* 元の 42 行目と同じ */
    }

授業・テストの感想

 
 
 
 

解説

  1. (2) は (F) の 「Java のカプセル化は、メソッドやフィールドの名前の慣習として表現され、コンパイル時には違反をチェックできない。」を選択する人が多かった。 これは Python に関する記述である。Java はカプセル化の違反はコンパイル時にチェックできる。

  2. (2) 〜 (9) は Java の文法の、“イロハのイ”である。 うち、(2) と (8) はクラスメソッド(静的メソッド)の呼出しである。

    (11), (12) で「元の 31 〜 59 行目と同じ」と書いている人が多かったが、ボタンごとにイベントリスナーを登録するので、 source = e.getSource() からの処理は不要である。

  3. (1) の正答率が低いが、この関数は、次のように定義された関数 hanoiOrig が標準出力に出力する代わりに、シーケンスを生成するだけである。

    if (n > 0) となっているので、 0 は絶対に入らない。

  4. (2) で (E) の COBOL を選択する人が多かったが、COBOL は Fortran のちょっと後に登場した、 最古のプログラミング言語の一つである。

  5. (1)「他のクラスからは直接アクセスできない」ようにしたい(サブクラスや同一パッケージのクラスに関して例外はない)ので protected ではなく private にするべきである。

    (2) で「...」が解答に入っている人がいるが、クラスの継承について重大な思い違いをしていると思われる。

  6. (3) で ActionListener をいれていない解答が多かったが、new Timer(50, this)this が使われているので implements ActionListener が必要である。

    (4) は SankakuThread.java の run メソッドの i が特定の値のときの x, y, color の値を切り出す必要がある。