UML-类图

1.概念

       类图(Class Diagram)是类的模型,利用图示和文字注描述类以及类和类之间关系的方法。

1.1 组成

       类图是由类、类之间的关系和约束构成的,其表达式如下:

       类图 = 类 + 关系 + 约束

 

2.类图的表示方法

2.1 表示类

       在UML中,用矩形框来表示类。一般将矩形框分为三个部分,最上方为类的名字,中间为类的属性,下方为类的方法。类名是必不可少的,属性和方法可以不显示在矩形框里面。

 

2.2 类的属性   

1)可见性

    +:表示具有公共可见性,可以被所有的类访问和使用。

    #:表示受保护的可见性,可以被同一包找那个的其他类、不同包中该类的子类以及该类自身访问和引用。

    ~:表示包级可见性,只能被同一包中的其他类所访问和引用。

    -:表示私有可见性:只能被该类自身所访问。

2)多重性

   1:表示只有一个

   0..1:表示0或1个

   0..* 或 * :表示任意多个

   1..*:1个或多个

   3..4 或 6 :确切数目,如3、4或6个

 

2.3 类的关系

1)关联

       表示类与类之间的关系,表示一个对象拥有另一个对象。链(link)表示的是对象与对象之间的关系。一个关联可以有两个或多个关联端(association end),每个关联端连接到一个类。 关联可以是单向的uni-directional 或 双向的bi-directional 两个类之间的关联将在所生成的代码中体现出来,表现为类中有一个方法可以访问到另一个类

       关联名:用于明确表达关联的含义。客户?雇员?老板? 可有可无,动词短语,斜体。

       导航性(方向性):从一个类(对象)可以访问到另一个,反过来却不行,用带箭头的实线,表示单向关联,无箭头表示双向关联 被关联的对象不知道谁与自己关联,但关联对象知道自己与谁有关联

 

       聚合(aggregation):has-a关系  表达整体和部分的关系 整体和部分的关系,个体可以属于多个整体。(聚合是特殊的关联)

       组合(composition):contains-a关系 整体和部分的关系,个体唯一属于一个整体。 组合关系中的“整体”控制着“部分”的生存期。 组合是一种特殊的聚合关系,又称强聚合。但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。部分对象与整体对象之间具有共生死的关系。 

 

2)泛化

     泛化指父类与其一个或多个子类之间的继承关系。

 

3)依赖

      一个元素B的改变会影响另外一个元素A,则称A依赖于B,二者之间存在依赖关系。依赖表示的是两个或多个模型元素之间语义上的连接关系。

 

4)实现

      一个元素完成另外一个元素的操作功能,则二者之间构成实现关系。 如接口类及其实现;接口没有属性,只有声明的操作方法(对于方法没有实现部分),而由实现类具体定义实现部分。

 

 

 

 

 

 

 

在软件工程中,(Class Diagram)是一种静态结构,属于统一建模语言(UML)的一部分。它用于描述系统中的的属性和方法以及之间的关系[^1]。通过,可以简化对系统的理解,并为系统分析、设计、编码和测试提供重要依据。 ### 的基本元素 1. **(Class)**:是面向对象编程的核心概念,表示具有相同属性、方法和关系的对象集合。 2. **属性(Attributes)**:的特征或数据成员。 3. **方法(Operations)**:的行为或功能。 4. **关系(Relationships)**:包括继承、关联、聚合、组合等。 ### 的常见关系 - **继承(Generalization)**:一个(子)继承另一个(父)的属性和方法。 - **关联(Association)**:两个之间的连接,可以是单向或双向。 - **聚合(Aggregation)**:一种特殊的关联,表示“整体-部分”关系。 - **组合(Composition)**:比聚合更强的关系,部分不能独立于整体存在。 - **依赖(Dependency)**:一个的变化影响另一个。 ### 绘制工具推荐 1. **StarUML**:一款开源的UML建模工具,支持、用例等多种UML。 2. **Visual Paradigm**:功能强大的UML工具,支持在线协作和多种型。 3. **Lucidchart**:基于Web的绘工具,支持UML设计。 4. **Draw.io (diagrams.net)**:免费且易于使用的在线绘工具,支持UML。 ### 实践教程示例 以下是一个简单的示例代码,使用PlantUML语法: ```plantuml @startuml class Animal { +String name +void eat() +void sleep() } class Dog { +void bark() } class Cat { +void meow() } Animal <|-- Dog Animal <|-- Cat @enduml ``` 该代码定义了一个`Animal`,并通过继承创建了`Dog`和`Cat`。可以通过PlantUML插件将其渲染为UML。 ### 学习资源推荐 1. **书籍** -UML精粹:标准建模语言简明指南》(UML Distilled: A Brief Guide to the Standard Object Modeling Language) - 《面向对象分析与设计(UML)》(Object-Oriented Analysis and Design with UML) 2. **在线教程** - [UML Class Diagram Tutorial](https://www.visual-paradigm.com/guide/uml-unified-modeling-language/uml-class-diagram-tutorial/) - [PlantUML官方文档](https://plantuml.com/class-diagram) 3. **视频课程** - Coursera上的《Software Engineering Principles》课程 - Udemy上的《UML Class Diagrams for Software Engineers》 ### 常见应用场景 - **需求分析阶段**:帮助识别系统中的核心和关系。 - **系统设计阶段**:作为架构设计的重要组成部分。 - **开发阶段**:指导程序员如何实现和接口[^3]。 ### 注意事项 - 在设计时,应保持简洁,避免过度复杂化。 - 遵循命名规范,确保名、属性名和方法名清晰易懂。 - 使用适当的工具进行版本控制和团队协作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luckyliuqs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值