2012年5月29日 星期二

物件導向設計:97年期末考古

[學院]:資電學院
[系所]:資訊工程學系
[年級]:二
[學程]:
[課名]:物件導向設計
[老師]:張貴忠老師
[學期]:97-1
[類型]:期末考

Totally 100 points

1. (Basic Concepts - 20 pts) Just a brief explanation
   (a) Event-driven programming事件驅動程式設計
   (b) Polymorphism多型
   (c) Base class / Derived class
   (d) Abstract class 抽象類別

2. (Polymorphism - 10 pts) Please describe what is late binding, and what is early binding? Which one of above techniques is used for java to achieve Polymorphism?

3. (Inheritance - 10 pts) What are the differences between overloading and overriding?

4. (Inner Class - 10 pts) What is inner class? What are the advantages of using inner class?

5. (Polymorphism - 15 pts) What are the outputs of the following codes?

public class A
{
      String msg;

      public A()
{
          this("I'm class A");
      }

      public A(String msg)
{
          this.msg = msg;
      }

      public void sayHello()
{
          System.out.println("A:" + msg);
      }
}

public class B extends A
{
      public B()
{
          super("I'm class B");
      }

      public void sayHello()
{
          System.out.println("B:" + msg);
      }
}

public class C
{
      public static void main(String[] args)
      {
          A obj1 = new A();
          B obj2 = new B();
          C mainObj = new C();

          mainObj.showMessage(obj1);
          mainObj.showMessage(obj2);
      }

      public void showMessage(A member)
{
member.sayHello();
}
}


6. (The final Modeifier - 15 pts) What are the meaning of final class, final variable, final method respectively?

7. (Access Modifiers - 20 pts) Given the following codes, and some compile-time errors exist in this program. Please precisely indicate the the line numbers of error statements in the program.
(Remember to briefly explain why the indicated statement is error.)


1     package mypackage;
2     public class A {
3          public     int v1;
4          protected  int v2;
5                     int v3;
6          private    int v4;
7     }
8     package mypackage;
9     public class B {
10         public B() {
11              A obj1 = new A();
12              obj1.v1 = 10;
13              obj1.v2 = 10;
14              obj1.v3 = 10;
15              obj1.v4 = 10;
16         }
17    }
18    package mypackage;
19    public class C extends A {
20         public C() {
21              v1 = 10;
22              v2 = 10;
23              v3 = 10;
24              v4 = 10;
25         }
26    }
27    import mypackage.A;
28    public class D extends A {
29         public D() {
30              v1 = 10;
31              v2 = 10;
32              v3 = 10;
33              v4 = 10;
34         }
35    }
36    public class E {
37         public E() {
38              A obj1 = new A();
39              obj1.v1 = 10;
40              obj1.v2 = 10;
41              obj1.v3 = 10;
42              obj1.v4 = 10;
43         }
44    }

沒有留言:

張貼留言