オブジェクト指向言語・中間試験コメント

  1. 正解: (B)
    2つ以上選択している解答は 0 点 (問題文に一つ選べ、と指定してある。)

  2. 正解: (C)
    (C) 以外にもう一つ選択している解答は -2 点

    グラフィックス・ネットワーク・スレッドなどのライブラリーを標準的に備え、 一つのプログラムを書けば、どのプラットフォームでも走る(Write Once, Run Anywhere)ことが Java の特長の一つである。

(ⅰ), (ⅱ) を通した正解率は約 87% だった。

  1. 正解:

      implements MouseListener

    正解率は約 77% だった。

  2. 正解:

      polygon.addPoint(10, 10);
      polygon.addPoint(10, 110);
      polygon.addPoint(110, 110);
      polygon.addPoint(40, 80);
    

    正解率は約 70% だった。Polygon.addPoint(10, 10) などの間違いが多い。

  3. 正解:

      polygon.contains(x, y)

    正解率は約 60% だった。e.contains(x, y) などの間違いが多い。

(ⅱ), (ⅲ) の低い正解率は深刻である。 (この問題に関しては部分点はほとんどなかったので、満点か零点かである。) この問題ができなければ、Java を学ぶ意味がまったくないと言っても過言でない。 “polygon” が含まれていない誤答が多いのもちょっと深刻である。

  1. 正解:

      xTf.addActionListener(this);
      yTf.addActionListener(this);
    

    xTF, yTF に対して addActionListener しなければいけないことを忘れて、単に

      /* 間違い */ 
      addActionListener(this);
    

    としている誤答が多かった。また、引数の this がなくて無引数の呼び出しになっている誤答:

      /* 間違い */
      xTf.addActionListener();
      yTf.addActionListener();
    

    もあった。

  2. 正解:

      extends JPanel

    このクラス自体に actionPerformed メソッドはないのだから、 implements ActionListener をつけてはいけない。

  3. 正解:

      new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            int dx = Integer.parseInt(xTF.getText());
            x += dx;
            xTF.setText("0");
            repaint();
         }
      }
    

    ちょっとした間違いとしては、repaint(); を忘れている解答が多かった (-1点)。

  4. 正解:

      e -> {
         int dy = Integer.parseInt(yTF.getText());
         y += dy;
         yTF.setText("0");
         repaint();
      }
    

(ⅰ)〜(ⅳ) を通した正解率は約 71% だった。 匿名クラスとラムダ式については、 問題用紙の末尾にこれらを使った例題プログラムを掲載しているのだから、 もっと高い正解率が欲しかった。


Koji Kagawa (kagawa@eng.〜)
(〜の部分は SPAM mail 予防のため省略します。)