UML类图的概述

news2024/9/28 19:26:37

新书速览|《UML 2.5基础、建模与设计实践》新书速览|《UML 2.5基础、建模与设计实践

类是对一组具有相同属性、操作、关系和语义的对象的抽象,主要包括名称(Name)部分、属性(Attribute)部分和操作(Operation)部分。在UML中,类图用一个矩形框表示,它包含3个区域,最上面是类名,中间是类的属性,最下面是类的方法,如图5.1所示。一个具体的类图如图5.2所示。

            

图5.1  类图                                图5.2  类说明

1)名称

每个类都必须有一个能和其他类进行区分的名称,类的名称部分是不能省略的,其他组成部分可以省略。类的名称是一个字符串,要求是由字符、数字、下画线组成的唯一字符串。表示方法有两种:

(1)简单名:如图5.2中的Account,它只是一个单独的名称。

(2)全名:也称为路径名,就是在类名前面加上包的名称,例如图5.2中的Business::Account。[f1] 

2)属性

属性描述了类在软件系统中代表的事物(即对象)所具备的特性。类可以有任意数目的属性,也可以没有属性。类如果有属性,则每一个属性都必须有一个名字,例如图5.2中的Account类中的banlance属性。另外,属性还可以有其他的描述信息,如可见性、数据类型、默认值等。

在UML中,类属性的语法为:

[可见性] 属性名 [:类型] [=初始值] [{属性字符串}]

说明如下:

  1. 可见性:类中属性的可见性主要包括公有(Public)、私有(Private)和受保护(Protected)。在UML中,用“+”表达公有类型,用“-”表达私有类型,用“#”表达受保护类型。UML的类中不存在默认的可见性,如果没有显示任何一种符号,就表示没有定义该属性的可见性。
  2. 属性名:每个属性都必须有一个名字用以区别于类中的其他属性,这是类的一个特性。属性名由描述所属类的特性的名词或名词短语组成。按照UML的约定,单字属性名小写。如果属性名包含多个单词,那么这些单词要合并,并且除了第一个单词之外其余单词的首字母要大写。例如,在图5.2中balance是属性名,是私有属性。
  3. 类型:说明属性的数据类型。在类的图标里,可以指定每个属性值的类型。可能的类型包括字符串(string)、浮点型(float)、整型(int)和布尔型(boolean)(以及其他的枚举类型)。指明类型时,需要在属性值后面加上类型名,中间用冒号隔开。还可以为属性指定一个默认值。
  4. 初始值:为了保护系统的完整性,防止漏掉取值或被非法的值破坏系统的完整性,可以设定属性的初始值。图5.2中的balance属性的数据类型是double,且初始值等于1。
  5. 属性字符串:属性字符串用来指定关于属性的其他信息,例如某个属性应该是永久的。任何希望添加在属性定义字符串里又没有合适地方可以加入的规则,都可以放在属性字符串里。

3)操作

操作是对类的对象所能做的事务的一个抽象。一个类可以有任意数量的操作或者根本没有操作。类如果有操作,则每一个操作也都有一个名字。其他可选的信息包括可见性、参数的名字、参数类型、参数默认值和操作的返回值的类型等。

在UML中,类操作的语法为:

[可见性] 操作名 [(参数表)] [:返回类型] [{属性字符串}]

说明如下:

  1. 可见性:类中操作的可见性主要包括公有(Public)、私有(Private)、受保护(Protected)和包内公有(Package)。在UML中,公有类型用“+”表示,私有类型用“-”表示,受保护类型用“#”表示,包内公有类型用“~”表示。
  2. 操作名:用来描述所属类的行为的动词或动词短语。
  3. 参数表:一些按顺序排列的属性定义了操作的输入。该项是可选的,即操作不是必须有参数。参数的定义方式为“名称:类型”。若存在多个参数,则各个参数用逗号隔开。参数可以具有默认值。
  4. 返回类型:是可选的,即操作不是必须有返回类型。绝大部分编程语言只支持一个返回值。具体的编程语言一般要加一个关键字void来表示无返回值。
  5. 属性字符串:在操作的定义中加入一些除了预订义元素之外的信息。

像前面给类的属性指定附加信息一样,也可以给操作指定附加信息。在操作名后面的括号中可以说明操作所需要的参数和参数的类型。有一种操作叫作函数(Function),它在完成操作后要返回一个返回值,可以指明函数的返回值及返回值的类型。

例如,图5.2中共有两个操作,分别是Deposite(Amount:double):int和ComputeInterest(),其中Amount:double是参数列表,int是操作返回值的类型。

4)职责

职责位于操作部分下面的区域,可以用来说明类要做什么或说明另一个类的信息。类的职责可以是一个短语或一个句子。在UML中,把职责列在类图底部的分隔栏中。如图5.3所示,借阅者类的职责是借阅者可以从图书管理系统中借阅图书和归还图书。

5)约束

说明类的职责是消除二义性的一种非形式化的方法,形式化的方法是使用约束。约束指定了该类所要满足的一个或多个规则。在UML中,约束是用{}的格式写在类的边上,指定个别属性的取值范围。

花括号中的文本指定了该类所要满足的一个或者多个规则。例如,假设想指定借阅者类的类别只能是教师、学生或者行政管理人员(也就是说给借阅者类的 “类别”属性加上约束),可以在借阅者类图标的旁边写一个约束“{类别=教师 or 学生or 行政管理人员}”,如图5.3所示。

《UML 2.5基础、建模与设计实践》(李波,姚丽丽,朱慧)【摘要 书评 试读】- 京东图书 (jd.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1914016.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

碳化硅陶瓷膜的基本性能

碳化硅陶瓷膜作为一种由碳化硅(SiC)材料制成的高温陶瓷膜,以其独特的性能在多个领域得到了广泛的应用。以下是碳化硅陶瓷膜的基本性能,详细阐述如下: 一、电绝缘性 碳化硅陶瓷膜通常具有较好的电绝缘性,这一特性在高温环境中尤为重…

两年经验前端带你重学前端框架必会的ajax+node.js+webpack+git等技术 Day3

前端框架必会的(ajaxnode.jswebpackgit)个人学习心得作业及bug记录 Day3 你好,我是Qiuner. 为帮助别人少走弯路和记录自己编程学习过程而写博客 这是我的 github https://github.com/Qiuner ⭐️ ​ gitee https://gitee.com/Qiuner 🌹 如果本…

flask模块化、封装使用缓存cache(flask_caching)

1.安装flask_caching库 pip install flask_caching 2.创建utils Python 软件包以及cache_helper.py 2.1cache_helper.py代码 from flask_caching import Cachecache Cache()class CacheHelper:def __init__(self, app, config):cache.init_app(app, config)staticmethoddef…

Objective-C 中的 isa 不再是简单的结构体指针

了解 Objective-C 中的 isa 指针内存结构 在 Objective-C 中,isa 指针是对象和类之间的重要桥梁。它不仅帮助运行时系统识别对象的类型,还参与了一些内存和性能优化。本文将深入讲解 isa 指针的内存结构,包括其在早期和现代实现中的演变。 …

科普文:深入理解Mybatis

概叙 (1) JDBC JDBC(Java Data Base Connection,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。 优点…

openWrt入门(2) - ubus

ubus - 帮助输出 ubus list - 列表 要了解当前总线上正在运行哪些服务,只需使用以下 ubus list 命令即可。这将显示向 RPC 服务器注册的所有命名空间的完整列表: 列表显示如下: 指定服务路径来筛选列表 -v选项 要找出特定服务提供哪些过程/方法及其参…

PDManer使用教程及安装包

以下安装包版本比较低,用习惯了,需要高版本可以去官网下载 链接:https://pan.baidu.com/s/1Hj4zJ0UCcdk0YQTlteVCTQ?pwdv72v 提取码:v72v 使用教程 连接数据库 导入表信息 创建关系图 第一步 第二步 如果列显示不全 &#x…

windows10设置环境变量Path步骤

1、鼠标右键“我的电脑”,点击“属性”,打开控制面板窗口,如图: 2、点击“高级系统设置”,弹出设置窗口,如图: 3、点击底部的“环境变量”,弹出环境变量窗口,如图&#x…

着火智能监测识别摄像机

当今社会,环境安全日益受到重视,而着火作为火灾前兆的重要指示物,其监测和及时处理显得尤为重要。为了有效预防火灾并保障公共安全,研发出一种智能监测识别着火的摄像机成为技术创新的关键之一。 这种着火智能监测识别摄像机利用了…

二维码生成需知:名片二维码尺寸多少合适?电子名片二维码制作方法?

随着数字化时代的到来,二维码在各个领域的应用越来越广泛,名片作为商业交流的重要工具之一,也开始逐渐融入二维码的元素。通过在名片上添加二维码,我们可以轻松实现信息的快速传递和分享。然而,名片二维码的尺寸选择成…

深度学习论文: LLaMA: Open and Efficient Foundation Language Models

深度学习论文: LLaMA: Open and Efficient Foundation Language Models LLaMA: Open and Efficient Foundation Language Models PDF:https://arxiv.org/pdf/2302.13971.pdf PyTorch: https://github.com/shanglianlm0525/PyTorch-Networks 1 概述 本文介绍了LLaMA&#xff0…

身份证二要素API,实名认证领域的创新之选

身份证二要素API,是一种实名认证领域的创新解决方案。通过输入姓名和身份证号,该API可以通过官方权威渠道进行核查,实时校验二要素的一致性,并返回生日、性别、籍贯等详细信息。这篇博文将详细介绍身份证二要素API的使用方法&…

【fastadmin 开发实战】select 级联选择

先看实现的效果 1、表单页面实现级联选择 2、级联选项后台可以编辑添加 前端代码&#xff08;编辑窗口&#xff09;&#xff1a; <div class"form-group"><label class"control-label col-xs-12 col-sm-2">{:__(渠道归属)}:</label><…

swift与Internvl下的多模态大模型分布式微调指南(附代码和数据)

大模型相关目录 大模型&#xff0c;包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步&#xff0c;扬帆起航。 基于Dify的智能分类方案&#xff1a;大模型结合KNN算法&#xff08;附代码&#xff…

AD3518 SOP-8封装 单节锂电池保护芯片 可替代XB8608/XB8608A

AD3518 是一款内置 MOSFET 的单节锂电池保护芯片。该芯片具有非常低的功耗和非常低阻抗的内置 MOSFET。该芯片有充电过压&#xff0c;充电过流&#xff0c;放电过压&#xff0c;放电过流&#xff0c;过热&#xff0c;短路&#xff0c;电芯反接等各项保护等功能&#xff0c;确保…

MUNIK解读ISO26262:安全计划

前言 当我们进行功能安全开发时&#xff0c;由于整个项目周期和内容较多&#xff0c;因此需要在项目前期对一些问题提前进行规划&#xff1a;比如功能安全开发具体分为几个阶段&#xff0c;应该怎么去做&#xff1f;对于不同的环节&#xff0c;有哪些人员来执行&#xff1f;资…

@RequestBody注解的使用及源码解析

前言 RequestBody 注解是我们进行JavaEE开发&#xff0c;最常见的几个注解之一&#xff0c;这篇博文我们以案例和源码相结合&#xff0c;帮助大家更好的了解 RequestBody 注解 使用案例 1.自定义实体类 Data NoArgsConstructor AllArgsConstructor public class User {priv…

飞睿智能6公里WiFi图传接收模块,低延迟、抗干扰、高速稳定传输数据,无人机、农田远距离WiFi模块

在科技日新月异的今天&#xff0c;无线通信技术正以前所未有的速度发展&#xff0c;不仅改变了我们的生活方式&#xff0c;还为企业带来了前所未有的商业机遇。今天&#xff0c;我要向大家介绍一款飞睿智能的产品——6公里WiFi图传接收模块&#xff0c;它以其高性能、稳定的传输…

安防综合管理/视频汇聚平台EasyCVR视频监控存储技术:高效稳定的视频数据保障方案

随着科技的飞速发展&#xff0c;视频监控已成为现代社会不可或缺的一部分。无论是城市治安、交通管理&#xff0c;还是商业安保、家庭监控&#xff0c;视频监控都发挥着至关重要的作用。而在这背后&#xff0c;视频监控存储技术则是确保监控数据得以长期保存、高效检索和可靠利…

今天,纷享AI正式发布,开启智能CRM新纪元

纷享销客作为国产CRM中连续四年保持近40%增长的领先品牌&#xff0c;一直在探索AICRM领域的数字化变革。 7月10日&#xff0c;纷享AI产品正式上线。与通用大模型不同&#xff0c;纷享AI是在合规之下&#xff0c;开放性的接入各种大模型平台&#xff0c;并结合纷享销客在营销服…