设计模式系列(七)UML类图

    科技2024-01-23  96

    设计模式系列(七)UML类图

    UML类图依赖泛化实现关联关系聚合关系组合关系

    UML类图

    用于描述系统中类(对象)本身的组成和类(对象)之间的各种静态关系类与类之间的关系:依赖、泛化(继承)、实现、关联、聚合与组合

    依赖

    只要在类中用到了对方,那么他们之间就存在依赖关系,如果没有对方,连编译都无法通过

    public class PersonServiceBean { private PersonDao personDao;//类 public void save(Person person){} public IDCard getIDCard(Integer personid){} public void modify(){ Department department = new Department(); } } public class PersonDao{} public class IDCard{} public class Person{} public class Department{}

    类中用到了对方可能是类的成员属性方法的返回类型方法接收的参数类型可能是方法中使用到

    泛化

    泛化实际上就是类的继承关系,是依赖关系的特例

    public abstract class DaoSupport{ public void save(Object entity){ } public void delete(Object id){ } } public class PersonServiceBean extends Daosupport{}

    泛化其实就是继承关系。如果A类继承了B类,我们就说A和B存在泛化的关系

    实现

    实现关系实际上就是 A类实现了B类的接口,它也是依赖的关系

    public interface PersonService { public void delete(Interger id); } public class PersonServiceBean implements PersonService { public void delete(Interger id){} }

    关联关系

    关联关系实际上就是 类与类之间的关系,它也是属于依赖关系的一种 关联具有 导航性 :即双向关系或单向关系 关联具有多重性:一对一 、一对多、多对多

    聚合关系

    聚合(Aggregation)关系表示的就是 整体和部分的关系,整体和部分可以分开存在。聚合关系是 关联关系的特例,所以聚合也有关联的 导航性与多重性

    例子:如一台电脑由键盘和鼠标 显示器等组成;组成电脑的各个配件是可以从电脑上分离出来的

    组合关系

    组合关系:与聚合关系一样,也是 整体与部分 的关系,但是 整体与部分不可分开,聚合关系中,整体与部分可分开存在。 例如:在程序实体类中 Person 类(人) 与 IDCard 类(身份证)、 Head 类(头)。其中 Person 与 Head 就是组合关系,人有头,但是头不能离开人,人不能缺少头; Person 与 IDCard 就是聚合关系,人有身份证,但是人和身份证两者之间可以分离

    public class Person{ private IDCard card; private Head head = new Head(); } public class IDCard{} public class Head{}

    如图:UML类图中实心菱形代表组合关系,空心菱形代表聚合关系

    注意:以上所说的只是例子,比如电脑和鼠标是聚合关系,但是也可能是聚合关系,如下代码

    public class Computer { // 作为 Computer 类的成员私有变量 private Mouse mouse = new Mouse(); //鼠标和computer 不能分离 private Moniter moniter = new Moniter();//显示器和Computer 不能分离 public void setMouse(Mouse mouse) { this.mouse = mouse; } public void setMoniter(Moniter moniter) { this.moniter = moniter; } } // 鼠标类 public class Mouse { } public class Moniter { }

    如上例子:当 Computer 类创建实例化的时候,Mouse 与 Moniter 类也都同时实例化,而当 Computer 类实力对象被销毁的时候,Mouse 与 Moniter 类也都同时被销毁了,因此,在这种情况下,电脑和鼠标之间的关系是组合关系

    Processed: 0.010, SQL: 8