23种设计模式(UML类图)

UML类图

1.介绍

统一建模语言,是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果

2.使用工具

虽然IDEA有自动生成UML类图,但不能画类图

image-20200619170939340

	这里我使用的是**plantUML **,他不仅可以画类图,还有其他的UML图他也可以画

下载:在idea中setting中找到 plugins 搜索PlantUML下载安装,重启idea即可

image-20200622110311383

使用:右键新建一个plantUML文件

语法:语法比较简单,这里引用一下别人的博客:https://www.cnblogs.com/liruilong/p/11506280.html

image-20200622110442482

3.UML图的分类

  • 用例图

  • 静态结构图:类图,对象图,包图,组件图,部署图

  • 动态行为图:交互图(时序图与协作图),状态图,活动图

    主要分析类图

    UML类图

    ​ 1) 用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系

    ​ 2) 类之间的关系:依赖,泛化(继承),实现,关联,聚合与组合

4.类图关系设置

1)Dependency 依赖关系(A使用B)

image-20200622092029171

只要是类中用到了对方,他们之间就存在依赖关系,如果没有对方,编译都通不过。

什么情况为依赖关系
1) 类中用到了对方
2) 类的成员属性
3) 方法的返回类型
4) 方法接收的参数类型
5) 方法中使用的对象
@startuml
class IDCard{
}
class Person{}
class PersonDao{

}
class PersonServiceBean{
   - personDao : PersonDao
   + save(person:Person)
   + getIDCard(personId:Integer):IDCard
   + modify(): void
}

PersonServiceBean ..> IDCard
PersonServiceBean ..> Person
PersonServiceBean ..> PersonDao

@enduml

image-20200622112239771

2)Association 关联关系(一对一,一对多)

image-20200622092341383

关联关系是类与类之间的联系,他是依赖关系的特例

关联具有导航性:即双向关系或单项关系

关系具有多重性:
单项的一对一关系:A中有B的成员变量
双向的一对一关系:A中有B的成员变量,B中有A的成员变量

@startuml
note top of Person : 单项的一对一关系
class Person{
    - card : IDCard
}
class IDCard{

}
Person -- IDCard

note top of Person2: 双向项的一对一关系
class Person2{
    - card : IDCard
}
class IDCard2{
    - person2 : Person2
}
Person2 -- IDCard2

@enduml

image-20200622115755683

3)Generalization 泛化关系 (继承)

image-20200622092559844

泛化关系是依赖关系的特例

@startuml
abstract DaoSupport{
    + save(entity:Object):void
    + delete(id:Object):void
}
note top of PersonServiceBean: PersonServiceBean 继承了 DaoSupport
class PersonServiceBean{}

PersonServiceBean --|> DaoSupport
@enduml

image-20200622113757986

4)Realization 表示实现(接口实现等)

image-20200622092916761

接口的实现,抽象类的实现

@startuml
abstract DaoSupport{
    + save(entity:Object):void
    + delete(id:Object):void
}
note top of PersonServiceBean: PersonServiceBean 继承了 DaoSupport
class PersonServiceBean{}

PersonServiceBean --|> DaoSupport
@enduml

image-20200622115834736

5)Aggregation 聚合(B类通过set方法实现对A类的引用)

image-20200622093127982

聚合关系表示整体和部分的关系,整体与部分可以分开,聚合关系是关联关系的特例,所以他具有关联关系的导航性(A引用B,或B引用A)和多重性(A聚合多个B)

这里的聚合需要与组合区分开来:整体与部分可以分开为聚合,整体与部分不能分开为组合

@startuml
class Computer{
    - mouse:Mouse
    - monitor : Monitor
    + setMouse(mouse:Monitor):void
    + setMonitor(monitor:Monitor):void
}
class Monitor{}
class Mouse{}
 Monitor --o Computer
Mouse --o Computer
@enduml

image-20200622121153792

6)Composite 组合(B类中a成员变量通过newA类实现)

image-20200622093453111

以上一个聚合关系的例子接着探讨组合关系

组合也是整体与部分的关系,但是整体与部分不可分开

@startuml
note bottom of Computer: Mouse 和 Monitor 类都在Computer类中实现了,所以不可分离为组合关系
class Computer{
    - mouse:Mouse = new Mouse()
    - monitor : Monitor = new Monitor()
}
class Monitor{}
class Mouse{}
 Monitor --* Computer
Mouse --* Computer
@enduml

image-20200622140624311

如果程序中A实体中定义了B进行联级删除[有关联的数据],即删除A时联同B一起删除,那么A和B就是组合了

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值