Given:
1. public class Team extends java.util.LinkedList {
2. public void addPlayer(Player p) {
3. add(p);
4. }
5. public void compete(Team opponent) { /* more code here */ }
6. }
7. class Player { /* more code here */ }
Which two are true? (Choose two.)
A. This code will compile.
B. This code demonstrates proper design of an is-a relationship.
C. This code demonstrates proper design of a has-a relationship.
D. A Java programmer using the Team class could remove Player
objects from a Team object.

解决方案 »

  1.   

    A. This code will compile.//没问题,能通过编译
    B. This code demonstrates proper design of an is-a relationship. //is-a是继承关系 这里主要是说Team类和Player类的关系 而不是说Team类和LinkedList类的关系,所以我选C。
    C. This code demonstrates proper design of a has-a relationship.
    D. A Java programmer using the Team class could remove Player
    objects from a Team object. //显然不能不能把Player的对象从Team中移走,因为Team类只提供了addPlayer方法,而没有removePlayer方法。
    答案,我选A和C。
      

  2.   

    A OK 
    B 如果说Team类和LinkedList是is-a
    C Team与Player是uses–a而不是组合has-a
    D 是对的因为Team类继承LinkedList的所以可以remove
    所以这里考的是Team和Player的关系吧
    答案应该是A和D吧
      

  3.   

    A D 
    is-a 是继承  has-a是持有引用,这样的话是has-a: Player p ;public void addPlayer() {
     add(p);
     } 
      

  4.   

    是我的错 D答案是可以的但是,我的疑问就是说Team和Player是has-a完全没问题啊。
      

  5.   

    要我就首选 A,D
    B,C两个都没指定谁和谁什么关系D: Team  继承的 LinkedList ,肯定可以调用父类的 remove(index) 或者remove(Object) 方法,从team中remove掉player应该是没问题
      

  6.   

    C 更应该说 team 和play 是依赖关系吧,至于是聚合依赖还是别的依赖忘记了...
      

  7.   

    选A,D。
    Team会继承父类的remove(index)方法,而这个方法在删除的时候不管Team里面放的是什么类型都可以删除,因为它根据下表移除,和容器里面存放的什么没有关系,所以这个肯定是可以删除的
    编译可以通过,因为我试过了
      

  8.   

    如果Player类作为Team类的成员变量就是has-a
    uses-a比has-a耦合度更低
      

  9.   

    has-a是一对一,这应该属于聚合关系吧
      

  10.   

    AD
    似乎有关系,The Team has a series of Player[i]s, but it's not a [i]proper design. 如同当年的java.util.Stack (extends Vector),使用者完全可以add/remove之类的方法,来破坏Stack的pop/push/LIFO