2012-01-02 48 views
0
class Employee { 
    private String name; 
    void setName(String n) { name = n; } 
    String getName() { return name; } 
} 
interface Mungeable { 
    void doMunging(); 
} 
public class MyApp implements Mungeable { 
    public void doMunging() { ; } 
    public static void main(String[] args) { 
     Employee e = new Employee(); 
     e.setName("bob"); 
     System.out.print(e.getName()); 
    } 
} 

和可能的答案:待办事项类都必须是在同一个继承树让他们有一个拥有-A的关系

Which are true? (Choose all that apply.) 
A. MyApp is-a Employee. 
B. MyApp is-a Mungeable. 
C. MyApp has-a Employee. 
D. MyApp has-a Mungeable. 
E. The code is loosely coupled. 
F. The Employee class is well encapsulated. 

在回答上述问题,我选择的选项BCEF

显然唯一正确的答案是B,EF。对于MyApp与EmployeeHas-A关系,它们都必须位于同一继承树层次结构中。它是否正确?我认为,如果一个班级将该对象作为成员,它就会自动产生Has-A关系。

+1

这是功课吗?如果是,请标记为这样。 – tobiasbayer 2012-01-02 16:45:59

+0

不,它不是作业 – ziggy 2012-01-02 16:46:37

+0

好吧。谢谢大家的回复。 – ziggy 2012-01-02 16:56:27

回答

1

对于MyApp的有有-A与雇员之间的关系都必须在同一个继承树层次 。它是否正确?

这是不正确的。

我认为如果一个类有对象作为成员它会自动 有一个Has-A关系。

你说得对。要点是,MyApp作为成员没有Employee

+0

main()中的员工呢?还是局部变量不归类为成员? – ziggy 2012-01-02 16:48:21

+0

局部变量不是成员。 – alf 2012-01-02 16:50:38

4

MyApp没有Employee,没有定义成员。 MyApp有主要方法,就是这样。根据以下代码,MyApp has-a Employee

public class MyApp implements Mungeable { 
    public void doMunging() { ; } 
    private Employee; 
    public static void main(String[] args) { 
     Employee e = new Employee(); 
     e.setName("bob"); 
     System.out.print(e.getName()); 
    } 
} 
1

待办事项类都必须是在同一个继承树让他们有一个拥有-A的关系

没有,如:

class Person{ 
    // Person has-a name, 
    // where Person is not a String, 
    // neither reverse 
    private String name; 
} 
1

对于MyApp有关系到EmployeeEmployee e应该是一个成员变量,不仅仅是在静态方法中本地实例化。

0
E. The code is loosely coupled. 

这是不正确的。它与雇员类紧密结合,因为它是松散耦合的,它必须在接口或抽象类上工作。为了使它松散耦合,代码如下。

interface IEmployee{ 
... 
... 
} 

class Employee implements IEmployee { 
... 
... 
} 

public class MyApp implements Mungeable { 
    public void doMunging() { ; } 
    //declare interface type 
    private IEmployee emp; 
    //use DI to inject an implementation of IEmployee type in MyApp 
    public MyApp(IEmployee object){ 
    emp = object; 
    } 
    public static void main(String[] args) { 
     emp.setName("bob"); 
     System.out.print(emp.getName()); 
    } 
} 
相关问题