几个UML模型的Java实现..(1)
图中所示的分别是关联、组合、聚合……
下面是Java代码:
[Component.java]
[Client.java]
Client类与Component的关系是实线箭头,表关联。
A类关联B类一般表现为在A类中有类型为B类的属性。
如果是虚线则表示依赖,一般表现为A类中的方法有B类的参数或B类的返回值(参数引用),或在A类的方法中存在局部变量类型为B(局部变量引用)。
[Leaf.java]
该类有一条实心箭头连向Component,表继承,即Leaf继承了Component类,这个比较好理解;
[Composite.java]
该类有两条线连向Component,
一条是实心箭头,表继承,即该类与Leaf类一样继承了Component类;
另一条则是空心菱形,表聚合,
聚合和组合都是关联的一种,因此都会在类中存在Component的属性,
但是聚合时,该属性不一定有具体对象,
而组合时该属性所指向的Component对象一定与该Composite对象生命周期相同,即同时new同时销毁。
这里是聚合关系,而且该关系中Component还有标记0..*,表明一个Composite对象可以拥有任意多个Component对象,
因此我们新建一个List用来存放Component。
-
import java.util.*;
-
-
-
private List<Component> componentList = new ArrayList<Component>();
-
-
@Override
-
// TODO Auto-generated method stub
-
super.Add(component);
-
}
-
-
@Override
-
// TODO Auto-generated method stub
-
return super.getChild(i);
-
}
-
-
@Override
-
// TODO Auto-generated method stub
-
}
-
-
@Override
-
// TODO Auto-generated method stub
-
super.Remove(component);
-
}
-
-
}