UML类图

类图(Class Diagram): 类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础。类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。
类图的3个基本组件:类名、属性、方法。
类的几种关系:泛化(继承关系)、实现关系、依赖、关联(一般关联、聚合关系、组合关系)
类图中几种符号:+:public、-:private、#:protected
类的属性的完整表示:可见性  名称 :类型[ = 缺省值](中括号中为可选)。

类的方法完整表示:可见性 名称(参数列表)[ =  :返回类型]
了解类图关键是理清类和类之间的关系是重点,下边详细介绍下类和类之间的关系。

1、继承关系:在UML类图中用带空心三角形箭头的直线表示,箭头由子类指向父类,表示is-a的关系,是对象之间耦合度最大的一种关系,子类继承父类的所有细节。

 

2、实现关系:在UML类图中用带空心三角形的虚线表示,箭头指向接口。在接口中通常没有属性,而且所有的操作都是抽象的,只有操作的声明没有操作的实现。接口实现让一个类可以实现多个接口,也可以让一个接口被多个类实现

[cc lang="javascript"]

public interface interface_A
{

public void add()

}
public class class_A implements  interface_A
{
public void add(){

}
}

[/cc]

3、依赖关系:对象之间最弱的一种关联方式,是临时性的关联。代码中一般指由局部变量、函数参数、返回值建立的对于其他对象的调用关系。一个类调用被依赖类中的某些方法而得以完成这个类的一些职责。在类图使用带箭头的虚线表示,箭头从使用类指向被依赖的类。是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.

public class Driver
{
public void drive(Car car)
{
car.move();
}

}
public class Car
{
public void move()
{

        }

}

Driver的drive方法只有传入了一个Car对象才能发挥作用,因此我们说Driver类依赖于Car类

4、一般关联(单向关联、双向关联、自关联)
(1)单向关联:

public class Customer {
private Address address;
}

public class Address {
}

 

在UML类图中单向关联用一个带箭头的直线表示。上图表示每个顾客都有一个地址,这通过让Customer类持有一个类型为Address的成员变量类实现。

(2)双向关联:

 

public class Customer
{
private Product[] products;

}
public class Product
{
private Customer customer;

}

 

双向关联就是双方各自持有对方类型的成员变量。在UML类图中,双向关联用一个不带箭头的直线表示。上图中在Customer类中维护一个Product[]数组,表示一个顾客购买了那些产品;在Product类中维护一个Customer类型的成员变量表示这个产品被哪个顾客所购买。

(3)自关联:

public class Node {
private Node subNode;
}

自关联在UML类图中用一个带有箭头且指向自身的直线表示。上图的意思就是Node类包含类型为Node的成员变量,也就是“自己包含自己”。

5、聚合关系:

 

public class Car
{
private Engine engine;
public Car(Engine engine)
{
this.engine = engine;
}

public void setEngine(Engine engine)
{
this.engine = engine;
}

}
public class Engine
{

}

UML中聚合关系用带空心菱形和箭头的直线表示。聚合关系强调是“整体”包含“部分”,但是“部分”可以脱离“整体”而单独存在。比如上图中汽车包含了发动机,而发动机脱离了汽车也能单独存在。

6、组合关系:

public class Head
{
private Mouth mouth;
public Head()
{
mouth = new Mouth();
}

}

public class Mouth
{

}

 

组合关系与聚合关系见得最大不同在于:这里的“部分”脱离了“整体”便不复存在。显然,嘴是头的一部分且不能脱离了头而单独存在。在UML类图中,组合关系用一个带实心菱形和箭头的直线表示。

### UML绘制方法及学习资料 UML是一种静态结构,用于描述系统中的、接口以及它们之间的关系。以下是关于UML的绘制方法、示例和学习资料的相关信息。 #### 一、UML的基本构成 UML、接口、关联关系等元素组成。每个通常以矩形框表示,分为三个部分:名、属性和操作(方法)。的核心在于展示之间的关系,如继承、实现、关联、聚合和组合等[^1]。 ```plaintext +------------------+ | 名 | +------------------+ | 属性1: 型 | | 属性2: 型 | +------------------+ | + 方法1(参数): 返回值型 | | + 方法2(参数): 返回值型 | +------------------+ ``` #### 二、UML的绘制规则 1. **的表示方式** 用矩形框表示,其中包含名、属性和方法。名位于顶部,属性位于中间,方法位于底部。例如: ```plaintext +------------------+ | Person | +------------------+ | - name: String | | - age: int | +------------------+ | + setName(String) | | + getName(): String | +------------------+ ``` 2. **关系的表示方式** - **继承**:使用空心箭头指向父,表示子继承父。 - **实现**:使用空心箭头指向接口,表示实现了该接口。 - **关联**:使用直线连接两个,表示两者之间存在某种关系。 - **聚合**:使用空心菱形连接,表示整体与部分的关系,但部分可以独立存在。 - **组合**:使用实心菱形连接,表示整体与部分的关系,且部分不能独立存在[^3]。 #### 三、UML绘制工具 绘制UML可以使用多种工具,以下是一些常用的在线和离线工具: - **在线工具**:ProcessOn、Lucidchart、Draw.io 等。这些工具支持实时协作,适合团队合作。 - **离线工具**:Visual Paradigm、StarUML、Enterprise Architect 等。这些工具功能强大,适合专业开发人员使用。 #### 四、UML示例 以下是一个简单的UML示例,展示了 `Person` 和 `Student` 之间的继承关系: ```plaintext +------------------+ +------------------+ | Student | | Person | +------------------+ +------------------+ | - studentId: int | | - name: String | +------------------+ | - age: int | | + getStudentId() |<|--|> | + setName(String) | | + setStudentId(int) | | + getName(): String | +------------------+ +------------------+ ``` #### 五、学习资料推荐 1. **书籍**:《UML精粹》(Martin Fowler 著),这是一本经典的UML入门书籍,内容详尽且易于理解。 2. **在线教程**:可以在 ProcessOn 的官方文档中找到详细的绘制指南。 3. **视频课程**:B站或 YouTube 上有许多关于 UML 的免费教程,适合初学者快速上手[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值