UML建模(五)类图

本文详细介绍了UML类图的概念和主要元素,包括类、接口、协作和关系,如属性、操作、泛化、依赖、关联、聚集等,并通过实例展示了它们的表示方法和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 概述

类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。是定义其他图的基础,在类图的基础上可以使用状态图、协作图、组件图和配置图等进一步描述系统其他方面的特性。

类图包含的主要元素有类、接口、协作和关系。其中关系有依赖关系、泛化关系、关联关系和实现关系,类图也可以包含注释和约束,还可以包含包或子系统。


图1 类图模型

2. 类

2.1 类的表示

类是类图的主要组件,由3部分组成,即类名、属性及操作(或称为方法)。在UML中,类用矩形来表示,顶端部分存放类的名称,中间部分存放累的属性、属性的类型及值,底部部分存放类的操作、操作的参数和返回类型。


图2 User类图

User类具有两个属性,即username和password,数据类型都是String类型,User类还包含一个方法Login(),返回类型为Boolean。在UML中可以根据实际情况来选择隐藏属性部分或者操作部分,或者两者都隐藏。

2.2 类名

类名的首字母需要大写,如果类名由多个单词组成,则将这些单词合并,并且每个单词首字母大写。

2.3 属性

类的属性用于描述对象的特征,是类的一个组成部分。类可以有任意数目的属性,也可以没有属性。属性可以具有不同的可见性,即public、protected、默认、private。

2.4 操作

操作用于操纵属性或者执行其他的动作。通常把操作称为函数,但操作是位于一个类的内部,并且只适用于该类的对象。操作由操作名称、返回类型和参数组成。其中返回类型、名称和参数一起被称为操作签名。操作签名描述使用操作时所必须的所有信息。类的操作也有可见性和范围。

3. 接口

3.1 接口的表示

接口是在没有给出对象的实现和状态的情况下对对象行为的描述。接口包含操作不包含属性,没有对外界可见的关联。一个类可以实现一个或多个接口,并且所有的类都可以实现接口中的操作。

3.2 实现接口

3 实现接口

上图定义了Callback接口,Client类实现了Callback接口,TestFace类调用了Callback接口中的方法。

4. 关系

4.1 泛化关系

泛化的定义是一种存在于一般类别和特殊类别之间的分类关系。特殊类别的每一个实例也是一般类别的一个实例。因此特殊类别间接的具备了一般类别的各种特征。在编程语言中,通过从一般类(父类)到特殊类(子类)的继承类实现泛化。例如,男人类继承人类。

4.2 高级泛化关系

4.2.1 泛化组

UML提供了一个用于组织父类和子类之间各种不同关系的特征,即泛化组。泛化组是父类的划分规则,使建模人员可以从一个公共父类继承几组不同的子类。父类可以有一个或多个泛化组,用来表达子类可以有多种不同方式继承父类。

                                                                                               

                      图4 泛化方式一                                                                                                                                                         图5 泛化方式二

4.3 依赖关系

依赖关系表示一个模型元素(客户方)需要另一个模型元素(供应方)来达到某种目的,供应方的修改会影响客户方的执行结果。依赖关系表明一个客户方如果没有供应方的支持是不完整的。


图6 依赖关系

4.4 关联关系

4.4.1 表示

关联关系是一种结构关系,指明一个事物的对象与另一个事物的对象之间的联系。关联关系反映了对象之间相互依赖、相互作用的关系。


图7 关联关系


图8 关联关系中的角色


图9 多个类与一个类相关联


图10 为关联添加约束

有时两个类之间关联后有一个规则,可以通过关联线附近加注一个约束来说明。例如,医生给病人看病,但看病的顺序要按照病人挂号的顺序进行。所以再病人的附近用花括号加一个“ordered”来指明这个规则,即约束。


图11 多重性

一个医生可以给多名病人看病,就是关联的多重性。可以在关联线下方注明多重性的数值。

表示法说明表示法说明
0表示0个对象1..n表示1~n个对象
0..1表示0~1个对象n表示n个对象
0..n表示0~n个对象*表示许多对象
1表示一个对象  

4.4.2 聚集

聚集是一种特殊的关联。表示一个类是由几部分组成的。部分类和由它们组成的类之间是一种整体与部分的关系。


图12 聚集关系

上图表明,人只有一个脑袋。菱形连线从部分指向整体。

4.4.3 三重关联

两个以上的类相互关联称为三重关联。

### 如何配置支持域名解析的DNS服务器 #### 1. DNS基础概念 DNS(Domain Name System,域名系统)是一个分布式数据库,负责将人类可读的域名转换为计算机使用的IP地址。这种映射关系使得用户可以通过简单的域名访问复杂的网络资源[^4]。 #### 2. Windows环境下的DNS配置方法 在Windows操作系统中,如果遇到无法通过域名访问网站的情况,可能是因为DNS未正确解析目标域名。解决此问题的一种方式是手动编辑`hosts`文件以实现静态域名解析。具体操作如下: - 打开路径 `C:\Windows\System32\drivers\etc` 下的 `hosts` 文件。 - 添加一条记录,例如: ```plaintext 192.168.56.128 www.vwm.com ``` - 使用命令刷新DNS缓存: ```bash ipconfig /flushdns ``` 这种方法适用于小型局域网或临时测试场景,但对于大规模生产环境并不推荐[^1]。 #### 3. Linux环境下DNS配置流程 对于Linux服务器而言,通常需要修改 `/etc/resolv.conf` 文件来指定DNS服务器地址。以下是具体的配置步骤: - 编辑 `/etc/resolv.conf` 文件并添加以下内容: ```plaintext nameserver 8.8.8.8 # Google公共DNS nameserver 114.114.114.114 # 阿里云公共DNS ``` - 如果希望永久生效,则需根据发行版的不同调整相应配置文件,比如Debian/Ubuntu系列中的 `/etc/network/interfaces` 或者 `/etc/systemd/resolved.conf`[^2]。 #### 4. 自建DNS服务器方案 为了完全掌控内部网络中的域名解析行为,可以考虑自建DNS服务器。常见的开源软件有BIND、PowerDNS等。下面以BIND为例说明其基本安装与配置过程: ##### 安装BIND服务 在基于RedHat/CentOS系统的服务器上运行以下命令安装BIND: ```bash yum install bind bind-utils -y ``` 在基于Debian/Ubuntu系统的服务器上运行以下命令安装BIND: ```bash apt update && apt install bind9 dnsutils -y ``` ##### 修改主配置文件 默认情况下,BIND的主要配置位于 `/etc/named.conf` (CentOS/RHEL)或者 `/etc/bind/named.conf.local` (Debian/Ubuntu)。在此处定义区域数据及其存储位置。例如新增一个正向查找区: ```plaintext zone "example.com" IN { type master; file "/var/named/example.com.zone"; }; ``` ##### 创建区域文件 创建上述提到的 `.zone` 文件,并填充必要的SOA记录、NS记录以及其他类型的条目。样例内容如下所示: ```plaintext $TTL 86400 @ IN SOA ns1.example.com. admin.example.com. ( 2023101001 ; Serial number 3600 ; Refresh period 1800 ; Retry interval 604800 ; Expire time 86400 ) ; Minimum TTL NS ns1.example.com. ns1 A 192.168.1.10 www A 192.168.1.20 mail CNAME www.example.com. ``` 最后重启服务使更改生效: ```bash systemctl restart named ``` 以上即完成了初步的DNS服务器搭建工作[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值