目录
UML类图及类与类关系
本文使用的IDEA中的uml类图使用的是plantUml,安装教程及地址:https://blog.csdn.net/weixin_35836574/article/details/112155103
plantUml类图的绘制教程:https://www.codercto.com/a/43669.html
一、类图-依赖关系(Dependence)
概念
只要是在类中使用到了对方,那么他们之间就存在依赖关系,如果对象不存在,那么变异都会失败。
举例
/**
* 1. 类当中使用到了对方。
* 2. 作为类中的成员属性。
* 3. 作为类中的放回类型。
* 4. 作为类中方法接收的参数类型。
* 5. 方法中有使用到的类型(局部变量)。
*/
@startuml
class PersonServiceBean{
-personDao:PersonDao;
+save(person:Person):void;
+getIDCard(personId:Integer): IDCard;
+modify():void;
}
note "PersonServiceBean相当于聚合PersonDao,同时也依赖于PersonDao" as m1
PersonServiceBean ..> IDCard
PersonServiceBean ..> PersonDao
PersonServiceBean ..> Person
PersonServiceBean ..> Department
class PersonDao
class IDCard
class Person
class Department
@enduml
二、泛化关系(Generalization)
概念
泛化关系实际上就是集成关系,他是依赖关系的特例
举例
/**
* 1. 泛化关系其实就是继承关系。
* 2. 如果A类继承了B类,那么我们就说A和B存在泛化关系。
*/
@startuml
class DaoSupport{
+save(entity:Object):void
+delete(id:Object):void
}
class PersonServiceBean extends DaoSupport
@enduml
三、实现关系(Implementation)
概念
实现关系实际上就是A类实现了B接口。也是依赖关系的特例。
举例
@startuml
interface PersonService{
delete(id:Integer):void;
}
class PersonServiceBean implements PersonService
@enduml
四、关联关系(Association)
概念
关联关系实际上就是类与类之间的联系,他是依赖关系的特例。
举例
/**
* 1. 关联具有导航性;即双向关系和单向关系。
* 2. 关系具有多重性。
*/
@startuml
class Person{
-idCard:IDCard;
}
note "单向一对一关联" as n1
Person "1"---"1" IDCard
class IDCard
@enduml
@startuml
class Person{
-idCard:IDCard
}
class IDCard{
-person:Person
}
note "这是双向1对1关联(两个对象都有对方对象属性)" as n1
Person "1 -idCard"---"1 -person" IDCard
@enduml
五、聚合关系(Aggregation)
概念
聚合关系表示的是整体和部分的关系,整体和部分可以分开,聚合关系是关联关系的特例,所以他具有关联的导航性与多重性。
举例
/**
* 1. 聚合即类与其他类有关联的关系,可以整体存活,也可以部分分开。
*/
@startuml
class Computer{
-mouse:Mouse
-monitor:Monitor
}
Computer o-- Mouse
Computer o-- Monitor
@enduml
六、组合关系(Composition)
概念
也是整体与部分的关系,但是整体与部分不可以分开。
举例
/**
* 1. 类当中关联的类已经new出了一个对象。如果对象为空,那么该类就不能存活。
* 2. 整体与部分不能分开,一旦分开则不能完成功能。
*/
@startuml
class Person{
-Head head = new Head
-Leg leg = new Leg
}
Person *-- Head
Person *-- Leg
class Head
class Leg
@enduml