依赖倒置
uml各种线
关联 聚合 组合 依赖
关联关系
其中,关联两边的"employee"和“employer”标示了两者之间的关系,而数字表示两者的关系的限制,是关联两者之间的多重性。通常有“”(表示所有,不限),“1”(表示有且仅有一个),“0…”(表示0个或者多个),“0,1”(表示0个或者一个),“n…m”(表示n到m个都可以),“m…”(表示至少m个)。
组合关系(强关联)
再说说组合,组合是一种强关联,大概意思是整体和部分不可分割,不能独立存在。同样从级联操作理解。
就拿学生和学生证来说,假如某个学生退学,不再属于这个学校,那么可以考虑
将该学生信息删除,删除的时候,学生对应的学生证信息也会被删除,在此处可加
级联删除。因为学生证属于某个学生专有的信息,学生不存在了,
学生证又不能让他人使用,因此是一种强关联,可以称为组合。
聚合关系(弱关联)
先说说聚合,它是一种弱关联,大概意思就是整体和部分可以独立存在。如果我们换个角度,可以看成是数据库的级联操作。
就拿小组和组员来说,删除某个小组的时候,把该组的组员也删除,这显然是不科学的,因为小组和组员是一种弱关联,小组可以拥有任意一个组员,一个组员也可以去任意一个小组,这个小组不存在了,可以去另一个小组,它们没有必然的关联,可以称为聚合。
因此,我们在设计数据库的时候,往往不会设置级联删除,也就是说,删除小组时不会删除组员。
依赖关系
最后要谈的是依赖关系。
假如A类的某个方法中,使用了B类,那么就说A类依赖于B类,它们是依赖关系。
A类的某个方法使用B类,可能是方法的参数是B类,也可能是在方法中获得了一个B类实例。但无论是哪种情况,B类在A类中都是以局部变量的形式存在的。
因此,A类中有B类型的局部变量,就说A类依赖于B类。
虚线箭头表示依赖,箭头指向被依赖的类。
综上,有一个简单的判断原则:某个类以成员变量的形式出现在另一个类中,二者是关联关系;某个类以局部变量的形式出现在另一个类中,二者是依赖关系。
类图 多对多 转化为 一对多
交互图
同步消息与异步消息
如果一个对象发送了—个同步消息,那么它要等待对方对消息的应答,收到应答后才能继续自己的操作。而发送异步消息的对象不需要等待对方的应答便可以继续自己的操作。