UML区别和分析总结
1.用例中的包含和扩展区别
?
从概念上讲
包含关系:通常是指一个大的用例包含了几个小的用例,几个小的用例组成一个大的用例;
扩展关系:两个独立的用例,完成一个后可以开启另一个,两个用例本身都是独立的。
从业务角度来讲
一个事件可以包含其他的事件,这取决于对事件粒度的划分;
一个事件也可以被扩展,这取决于现在是否需要实现这部分的功能。
举例
包含关系:比如在自动售货机里面,向柜里增加货品,那么必然包括打开柜门和关上柜门,??这就是包含关系,也就是说做基事件的时候,必然会做它所包含的事件。
扩展关系:是说做基事件之后,我可能做扩展事件,也可能不做。
?
2.聚合和组合的区别
(1).聚合关系也称"has-a"关系,组合关系也称"contains-a"关系
(2).聚合关系表示事物的整体/部分关系的较弱情况,组合关系表示事物的整体/部分关系的较强的情况.
(3).在聚合关系中,代表部分事物的可以属于多个聚合对象,可以为多个聚合对象共享,而且可以随时改变它所从属的聚合对象.代表部分事物的对象与代表聚合事物对象的生存期无关,一旦删除了它的一个聚合对象,不一定也就随即删除代表部分事物的对象.在组合关系中,代表整体事物的对象负责创建和删除代表部分事物的对象,代表部分事物只属于一个组合对象.一旦删除了组合对象,也就随即删除了相应的代表部分事物的对象.
注:上面同属于关联(其中组合是一种特殊的聚合)
?
?
3.关联和依赖的区别
关联的主要目的是要得知外部对象的属性和方法,而依赖的主要目的是将对象或类信息作为外部状态传进类中形成外蕴。
?
在java中关联关系是通过实例变量而实现的,同时关联可以是双向的,关联可以有一对多的关系。常用的关联关系就是我们常见的:一对一关联,多对一关联,多对多关联
?
依赖在java语言中体现为局部变量、方法参数,以及对静态的方法调用。依赖总是单向的
?
举例
关联(Association?? Relationship)的代码为:
Public class person{
???? Car car=new Car();
}
依赖(Dependency?? Relationship)的代码为:
Public class person{
???? Public void buy(Car car){
?
???? }
}
4.泛化(继承):体现的是类与类之间的纵向关系
5.实现:体现的是类与接口的纵向关系