UML类图

1:UML类图

25.1、什么是UML类图

描述类与类之间的关系

UML(Unified Modeling Language)类图是用于描述系统中的类、属性、方法和它们之间关系的一种图形化工具。类图是UML中最常用的图形化表示方法之一,用于表示软件系统的静态结构。下面是一些UML类图的常用元素:

  1. 类:类是描述系统中对象的属性和方法的模板。在UML类图中,类通常用矩形表示,类名位于矩形的顶部。
  2. 属性:属性是类的特征,描述了类实例的状态。在UML类图中,属性通常位于类名下方,并用一个名称和类型表示。
  3. 方法:方法是类的行为,描述了对象可以执行的操作。在UML类图中,方法通常位于类名下方,并用一个名称和参数列表表示。
  4. 关系(依赖):关系描述类之间的连接。在UML类图中,关系有多种类型,关系包括继承、实现、关联、聚合、组合、依赖。
    1. 继承关系(Inheritance):用于表示一个类继承自另一个类的属性和方法。继承关系用一个空心的箭头从子类指向父类。

    2. 实现关系(Realization):用于表示一个类实现了某个接口。实现关系用一个带虚线的箭头从实现类指向接口。

    3. 关联关系(Association):表示两个类之间存在某种联系。关联关系用一条线表示。就是一对多,多对一,1/n,是依赖关系的特例

    4. 聚合关系(Aggregation)(弱包含):用于表示“整体与部分”的关系,强调:整体和部分可以分开,例如一个车由引擎、轮胎和座椅组成。聚合关系用一条带空心菱形的线表示,菱形指向整体类。在java中就是类属性,用set方法赋值,是关联关系的特例

    5. 组合关系(Composition)(强包含):用于表示“严格的整体与部分”的关系,强调:整体和部分不可以分开。例如一个公司由员工、部门和经理组成,公司消失时,员工、部门和经理也不存在了。组合关系用一条带实心菱形的线表示,菱形指向整体类。在java中就是类属性直接用new赋值,

    6. 依赖关系(Dependency):在面向对象编程中,一个类可以使用另一个类的方法或属性,这个类就依赖于被使用的另一个类。不是那么绝对的,比如聚合也可以是依赖,以下就是依赖的范围。范围性很大包括了关联、组合、聚合

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R0TFMRDo-1681809891094)(img/image-20230418145100358.png)]

  5. 接口:接口是一种抽象的类,只描述了类应该实现的方法,而不描述它们的实现方式。在UML类图中,接口通常用带有<>标记的矩形表示。
  6. 抽象类:抽象类是一种不能被实例化的类,只能被其他类继承。在UML类图中,抽象类通常用带有斜杠的矩形表示。

UML类图是一种强大的工具,可以帮助开发人员理解系统的结构和设计,同时也可以用于与其他人员交流和沟通。

25.2、PlantUML语法

这是一个插件,在IDEA搜索并下载,创建后缀名为puml的文件就行

  • uml分类

在这里插入图片描述

  • 语法:

    +public)、-private)、#(protected)和 ~package-private)。
        
    箭头方向不要弄错,在默认情况下,类名位于箭头的左侧,属性/方法名称位于右侧。如
        	class A
    		class B
            A --> B
        	在这个示例中,箭头从“A”指向“B”,表示“A”知道“B”的存在,但“B”并不知道“A”的存在。
            还有一种情况就是A对象组合到B对象 B *-- A,有时需要根据语法来的     
                
    实现(implements):使用<|..来表示
        
    继承(Inheritance):使用 <|-- 符号表示
        
    聚合(Aggregation(包含中):可以使用 o-- 符号表示聚合关系,箭头从整体对象指向部分对象。
        
    组合(Composition(包含强):可以使用 *-- 符号表示组合关系,箭头同样从整体对象指向部分对象。
        
    关联(Association):可以使用 -- 符号表示关联关系。
        如:1对多:"1" -- "n"        
        
    依赖(Dependency(包含弱):依赖包括继承、实现、关联、聚合和组合:在 PlantUML 中,依赖关系可以用 -->/..>/<--> 符号来表示。在符号左侧的类或接口是依赖源(dependant),右侧的类或接口是依赖目标(dependency)。
    
    内部类(InnerClass): ”+..“ ,如:Demo01 +.. ReceiveMsg:ReceiveMsgDemo01的内部类
        
    简单注释:
        UserDao  <|..  UserDaoImpl:UserDaoImpl实现UserDao
    复杂注释:	
        note top of Demo01
    
     		* 依赖倒置原则:修改韩顺平视频中的java代码(发送信息)
     		* @author xxl
     		* @date 2023/4/17
     
    	end note   
    
1)uml类图案例1,看注解
三层架构做演示  dao-->service-->controller
@startuml


class UserDto{
    - String username
    - String password
    - int gender
    + UserDto(String username, String password, int gender)
}

interface UserDao {
    + findUserByName(String username)
    + UserDto login(String username, String password)
}

class UserDaoImpl   {
    + findUserByName(String username)
    + UserDto login(String username, String password)
}

interface UserService {
    + findUserByName(String username)
    + UserDto login(String username, String password)
}

class UserServiceImpl  {
    - UserDao userDao;
    + findUserByName(String username)
    + UserDto login(String username, String password)
    # setUser(UserDao usdao)
}
class UserController{
    - UserService service
    + findUserByName(String username)
    + UserDto login(String username, String password)
}
class UserVo:VO对象用于前端展示所用的{
    BaseVo v = new BaseVo
    + print(Print p)
}
class Print{
}
UserDao  <|..  UserDaoImpl:UserDaoImpl实现UserDao  UserDaoImpl实现UserDao
UserService <|.. UserServiceImpl UserServiceImpl实现UserService
UserVo --* BaseVo   UserVo组合BaseVo   
UserDao --o "返回实体类对象" UserDto    UserDao聚合UserDto
UserServiceImpl  --o    UserDao   UserServiceImpl聚合UserDao
UserController --o UserService UserController聚合UserService
UserController -- UserDaoImpl  UserDaoImpl关联UserController
UserController -->  UserDao  UserController依赖UserDao    
UserVo --|> UserDto   UserVo继承UserDto 
UserVo --> Print  UserVo依赖Print    
@enduml

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值