UML常见类图关系及对应的plantUML语法

UML常见类图关系及对应的plantUML语法

1.类图(Class Diagram)

类图(Class Diagram): 类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础。类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。
类图的3个基本组件:类名、属性、方法。

  • eg:简单的类实现:
class Call
{
public:
    Session();
    ~Session();
protected:
    bool isAudioCall();
    bool isVideoCall();
private:
    bool _hasAudio;
    bool _hasVideo;
}
  • 对应的plantUML写法:

@startuml

class Call {
__ public __

+ Session()
+ ~Session()

__ protected __

# isAudioCall()
# isVideoCall()

__ private __

- _hasAudio
- _hasVideo
}

@enduml
  • plantUML生成的图片:
    这里写图片描述

2.常见的类图关系

类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。其中关联又分为一般关联关系和聚合关系(Aggregation),合成关系(Composition)。

1.泛化 (Generalization)

泛化 (Generalization):表示is-a的关系,是对象之间耦合度最大的一种关系,子类继承父类的所有细节。直接使用语言中的继承表达。在类图中使用带三角箭头的实线表示,箭头从子类指向父类。

  • UML表示:
    这里写图片描述

  • plantUML表示:<|--

@startuml

Call <|-- AudioCall : generalization
Call <|-- VideoCall : generalization

@enduml

2.实现(Realization)

实现(Realization):在类图中就是接口和实现的关系。在类图中使用带三角箭头的虚线表示,箭头从实现类指向接口。

  • UML表示:
    这里写图片描述
  • plantUML表示:<|..
@startuml

Call <|.. CallImpl : Realization

@enduml

3.依赖 (Dependency)

依赖 (Dependency):对象之间最弱的一种关联方式,是临时性的关联。代码中一般指由局部变量、函数参数、返回值建立的对于其他对象的调用关系。一个类调用被依赖类中的某些方法而得以完成这个类的一些职责。在类图使用带箭头的虚线表示,箭头从使用类指向被依赖的类。

  • UML表示:
    这里写图片描述
  • plantUML表示:<..
@startuml

Call <|.. CallImpl : Realization

@enduml

4.关联 (Association)

关联 (Association) : 对象之间一种引用关系。这种关系通常使用类的属性表达。关联又分为一般关联、聚合关联与组合关联。后两种在后面分析。在类图使用带箭头的实线表示,箭头从使用类指向被关联的类。可以是单向和双向。

关联(Association)关系是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间有联系,如汽车和轮胎、师傅和徒弟、班级和学生等等。在UML类图中,用实线连接有关联关系的对象所对应的类,在使用Java、C#和C++等编程语言实现关联关系时,通常将一个类的对象作为另一个类的成员变量。在使用类图表示关联关系时可以在关联线上标注角色名,一般使用一个表示两者之间关系的动词或者名词表示角色名(有时该名词为实例对象名),关系的两端代表两种不同的角色,因此在一个关联关系中可以包含两个角色名,角色名不是必须的,可以根据需要增加,其目的是使类之间的关系更加明确。

  1. 双向关联
    默认情况下,关联是双向的。例如:顾客(Customer)购买商品(Product)并拥有商品,反之,卖出的商品总有某个顾客与之相关联。因此,Customer类和Product类之间具有双向关联关系。

    • UML表示:
      这里写图片描述
    • plantUML表示:-- or "N"<-->"N"
@startuml

Customer -- Product : Association

@enduml
  1. 单向关联
    类的关联关系也可以是单向的,单向关联用带箭头的实线表示。例如:顾客(Customer)拥有地址(Address),则Customer类与Address类具有单向关联关系。

    • UML表示:
      这里写图片描述
    • plantUML表示:-->"N" or "1"-->"N"
@startuml

Customer "1"-->"1" Address : has

@enduml
  1. 自关联
    在系统中可能会存在一些类的属性对象类型为该类本身,这种特殊的关联关系称为自关联。例如:一个节点类(Node)的成员又是节点Node类型的对象。

    • UML表示:
      这里写图片描述
    • plantUML表示:-->"N" or "1"-->"N"
@startuml

Node "1"-->"1" Node : contains

@enduml

5.聚合 (Aggregation)

聚合 (Aggregation) : 表示has-a的关系,是一种不稳定的包含关系。较强于一般关联,有整体与局部的关系,并且没有了整体,局部也可单独存在。如公司和员工的关系,公司包含员工,但如果公司倒闭,员工依然可以换公司。在类图使用空心的菱形表示,菱形从局部指向整体。

  • UML表示:
    这里写图片描述
  • plantUML表示:o--
@startuml

Company o-- Employee : Aggregation

@enduml

6.组合 (Composition)

组合 (Composition) : 表示contains-a的关系,是一种强烈的包含关系。组合类负责被组合类的生命周期。是一种更强的聚合关系。部分不能脱离整体存在。如公司和部门的关系,没有了公司,部门也不能存在了;调查问卷中问题和选项的关系;订单和订单选项的关系。在类图使用实心的菱形表示,菱形从局部指向整体。

  • UML表示:
    这里写图片描述
  • plantUML表示:*--
@startuml

Company *-- Department : Composition

@enduml

3.参考文档

Class Diagram

UML类图与类的关系详解
深入浅出UML类图


ZhaiPillar
2017-09-15 写于上海
### 回答1: PlantUML是一种基于文本的工具,它可以通过简单的文本描述生成各种类型的图形。它的语法非常简洁易懂,易于学习和使用。 首先,要用PlantUML生成图形,需要在文本文件的开头加上`@startuml`标记,用`@enduml`标记结束。 PlantUML支持以下几种基本的图形类型: - 顺序图(Sequence Diagram):描述对象之间消息的流动。 - 用例图(Use Case Diagram):描述系统与外部参与者之间的关系。 - 类图(Class Diagram):描述类与类之间的静态结构。 - 状态机图(State Diagram):描述对象的状态转换。 - 组合结构图(Composite Structure Diagram):描述对象之间的组合结构。 - 活动图(Activity Diagram):描述业务流程或系统行为。 - 组件图(Component Diagram):描述系统的组件及其关系。 在PlantUML中,可以使用一些关键字和符号来描述图形: - `actor`:用于定义参与者(Actor)。 - `object`:用于定义对象。 - `class`:用于定义类及其属性和方法。 - `interface`:用于定义接口。 - `state`:用于定义状态。 - `->`:表示消息的发送。 - `--`:表示对象之间的关联关系。 - `..>`:表示继承或实现关系。 除了基本的图形描述之外,PlantUML还支持许多其他功能,如注释、颜色、箭头样式、创建别名等。同时,还可以使用插件来扩展其功能。 总的来说,PlantUML提供了一种简单而强大的文本描述图形的方式,使得我们可以快速地生成各种类型的图形。无论是软件开发、系统设计还是业务分析,都可以通过使用PlantUML来更好地可视化和沟通。 ### 回答2: PlantUML是一种用于绘制UML图表的工具,它采用文本描述的方式来生成图形。PlantUML支持多种类型的UML图,如类图、时序图、用例图等。 PlantUML语法相对简洁,主要基于ASCII字符,使得编写代码更加方便快捷。下面是一些常用的PlantUML语法规则: 1. 类图类图用于描述类与类之间的关系,可以使用关键字`class`定义类或抽象类。通过使用`->`来表示关联关系,使用`--`来表示依赖关系。可以使用`<>`表示实现接口。例如: ```plantuml class A class B A --> B ``` 2. 时序图: 时序图用于描述对象之间消息传递的顺序,可以使用关键字`participant`定义参与者。使用`->`表示消息发送,`-->`表示消息回复。可以使用`activate`和`deactivate`来表示参与者的生命周期。例如: ```plantuml participant A participant B A -> B: Message B --> A: Reply ``` 3. 用例图: 用例图用于描述系统功能和角色之间的关系。可以使用关键字`actor`定义角色,使用关键字`usecase`定义功能。使用`-->`表示关联关系。例如: ```plantuml actor User usecase "Login" as login User --> login ``` 4. 流程图: PlantUML还支持绘制流程图,可以使用关键字`start`定义起始点,使用关键字`end`定义结束点。使用关键字`->`表示流程传递。例如: ```plantuml start :Process 1; if (Condition) then (yes) :Process 2; else (no) :Process 3; endif end ``` 总之,PlantUML提供了一种简洁、高效的绘图方式,可以帮助开发人员更好地理解和沟通UML图表。熟悉PlantUML语法规则能够让我们更快速地创建出清晰的UML图。 ### 回答3: PlantUML 是一种使用文本描述的工具,可以通过图形化的方式绘制各种图表,包括流程图、时序图、类图等。它的语法相对简单,以下是一些常用的语法规则: 1. 定义元素:可以通过使用关键字和特殊字符来定义各种元素,例如使用 `actor` 关键字定义一个参与者(演员),使用 `usecase` 关键字定义一个用例。 2. 连接元素:可以使用连线符号 `-` 或 `--` 来连接元素,表示它们之间的关系。例如 `A - B` 表示 A 与 B 相连,`A -- B` 表示 A 与 B 相关联。 3. 分组元素:可以使用花括号 `{}` 来分组元素,表示它们之间的关系。例如 `{ A, B }` 表示 A 和 B 属于同一组。 4. 注释:可以使用 `//` 符号来给图表添加注释,用于说明图表的含义或解释图表中的某些元素。 5. 控制线条样式:可以使用特殊字符 `--<` 和 `>--` 来控制线条的样式。例如 `A --> B --< C` 表示从 A 到 B 有一条实线,从 B 到 C 有一条虚线。 6. 约束条件:可以使用关键字和特殊字符 `if`、`else`、`endif` 来表示条件约束。例如 `if (条件) then(操作)else(操作)endif`。 7. 循环:可以使用关键字和特殊字符 `repeat`、`while`、`endwhile` 来表示循环。例如 `repeat while (条件)(操作)endwhile`。 PlantUML 提供了丰富的语法规则,可以根据具体需要绘制各种类型的图表。在实际使用时,可以参考官方文档或在线资源,学习更多的语法规则和示例,以实现更复杂和精美的图表绘制。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值