【UML用户指南】-10-对高级结构建模-高级类

news2024/11/17 15:35:43

目录

1、类目

2、高级类

3、可见性

4、实例范围和静态范围

5、抽象元素、叶子元素和多态性元素

6、多重性

7、属性

8、操作

9、模板类

10、标准元素


1、类目

类目 (classifier)是描述结构特征和行为特征的机制。类目包括类、关联、接口、数据类型、信号、构件、结点、用况和子系统

2、高级类

在类的属性和操作基础上,允许按任何所希望的详细程度对类进行可视化、详述、构造和文档化,甚至足以支持模型和代码的正向工程和逆向工程。


3、可见性

对类目的属性和操作进行详述的设计细节之一是它的可见性。特征的可见性描述了它能否为

其他类目使用。在UML中,可以描述四级可见性中的任一级。

(1)公用的(public)【+】。任何对给定的类目可见的外部类目都可以使用这个特征

【一个类目可以看到在同一个范围内并且具有显式或隐式关系的其他类目】

(2)受保护的(protected)【#】。类目的任何子孙都可以使用这个特征

(3)私有的(private)【-】。只有类目本身能够使用这个特征

(4)包(package)【~】。只有在同一包中声明的类目能够使用这一特征

下图显示了一个类Toolbar的公用的、受保护的和私有的特征。

当指定类目特征的可见性时,一般要隐藏它的所有实现细节,只显露对于实现该抽象的职责

必要的特征。这正是信息隐藏的基础,对于建造坚固而有弹性的系统是很重要的。如果没有

显式地用可见性符号修饰一个特征,通常就假设这个特征是公用的。
 

4、实例范围和静态范围

对类目的属性和操作进行详述的另一个重要的细节是范围。特征的范围指出是否类目的每一

个实例都具有自己独特的特征值,还是类目的所有实例都共同拥有单独一个特征值。在UML

中,可以说明两种范围。

(1)实例(instance)。对于一个特征,类目的每个实例均有它自己的值。这是默认的,

不需要附加的符号。

(2)静态的(static)。对于类目的所有实例,特征的值是唯一的。也把它称为类范围

(class scope),通过对特性串加下划线来表示它。

静态范围的特征大多用于私有属性,它们必须为一个类的所有实例所共有,例如,为一个类的新实例生成的唯一ID。

5、抽象元素、叶子元素和多态性元素

泛化关系用于对类的网格结构建模,其中有位于顶层的较为一般的抽象和位于底层的较为特

殊的抽象。在这些层次中,经常要指明一些类是抽象的,这意味着这些类没有任何直接的实

例。在 UML 中,通过把一个类的名称写为斜体来指明这个类是抽象的。如图所示,Icon

、Rectangular和ArbitraryIcon都是抽象类。相反地,具体类(如类Button和类OKButton)是可以有直接实例的类。

当运行中要发送消息时,在这个层次中调用的操作就被多态地选择,即在运行时按照对象的类型决定匹配的操作。

例如,display和isInside是两个多态操作。

操作Icon::display()是抽象的,这意味着它是不完全的,要求子类提供这个操作的实现。在UML中,如同指明抽象类一样,通过把操作的名称写为斜体来指明这个操作是抽象的。

Icon::getID()是叶子操作,因此被指派了特性leaf,这意味着该操作不是多态的,不可以被覆写(这类似于java中的final操作)。

6、多重性

当使用类时,假设一个类具有任意数目的实例是合理的(当然,除非它是一个抽象类,因而

没有直接的实例,但它的具体的子类可以有任意数目的实例)。然而,有时可能要限制类所

具有的实例数目。

最常见的是指定以下几种情况:

没有实例(在这样的情况下,这个类是一个只暴露静态范围的属性和操作的实用程序的类)、

有一个实例(单体类)、有一定数目的实例或有多个实例(默认情况)。

多重性也应用于属性。可以通过在属性名后面的方括号内写一个合适的表达式来指定属性的

多重性。例如,图中,在类NetworkController的实例中有两个或多个consolePort实例。

7、属性

在大多数抽象层次上,当对类的结构特征(即属性)建模时,只需简单地写下每个属性的名

称。这些信息通常足以使一般读者理解模型的意图。如前面部分所述,也可以详述各个属性

的可见性、范围和多重性。更多地,还可以详述各属性的类型、初始值和可变性。

在UML中,属性的完整语法形式为:

[可见性] 属性名 [ ' : ' 类型] [ ' [ ' 多重性 ' ] ' ] [ ' = ' 初始值] [特性串{ ',' 特性串}]

origin        只有属性名

+ origin       可见性和属性名

origin : Point    属性名和类型

name : String[0..1]  属性名、类型和多重性

origin : Point = (0,0)  属性名、类型和初始值

id : Integer { readonly } 属性名、类型和特性

除非另行指定,否则属性总是可变化的(changeable)。可以用readonly特性指明在对象

初始化后不能改变属性的值。

在对常量建模或对创建实例时初始化后不能变化的属性建模时,主要使用readonly属性。

8、操作

在大多数抽象层次上,当对类的行为特征(即类的操作和类的信号)建模时,只需简单地写

下每个操作的名称。这些信息通常足以使一般读者理解模型的意图。然而,如前所述,也可

以详述各操作的可见性和范围。更多地,还可以详述各操作的参数、返回类型、并发语义和

其他特性。总体上,操作的名称加上它的参数(如果有的话,也包括返回类型)被称为操作

的特征标记。

类的每一个非抽象操作必须有一个方法,这个方法的主体是可执行

在UML中,操作的完整语法形式为:

[可见性] 操作名 [ '( ' 参数表 ' ) ' ] [ ' : ' 返回类型] [特性串 { ' ,' 特性串}]

例如,下列操作声明都是合法的。

display         操作名

+ display         可见性和操作名

set (n : Name,s : String)操作名和参数

getID ( ) : Integer    操作名和返回类型

restart ( ) {gaurded}   操作名和特性

在操作的特征标记中,可以不提供参数,也可以提供多个参数,其语法形式如下:

[方向] 参数名 : 类型 [=默认值]

方向可以取下述值之一。

in            输入参数,不能对它进行修改。

out           输出参数,为了向调用者传送信息可以对它进行修改。

inout          输入参数,为了向调用者传送信息可以对它进行修改。

9、模板类

模板是一个被参数化的元素。在诸如 C++和 Ada 这样的语言中,可以写模板类,每一个模板

类都定义一个类的家族(也可以写模板函数,每一个模板函数都定义一个函数的家族)。模

板可以包括类、对象和值的插槽,这些插槽起到模板参数的作用。不能直接使用模板,必须

首先对它进行实例化。实例化是要把这些形式模板参数绑定成实际参数。对一个模板类来说

,绑定后的结果就是一个具体类,能够像普通类一样使用

template<class Item,class VType,int Buckets>

class Map {

public:

virtual map(const Item&,const VType&);

virtual Boolean isMappen(const Item&) const;

...

};

然后可以对这个模板进行实例化,以便把对象Customer映射到对象Order。

m : Map<Customer,Order,3>;

在UML中也能对模板类建模。如上图所示,模板类的画法与普通类一样,只是在类图标的右

上角带有一个附加的虚框,虚框中列出模板参数。

如上图所示,可以用两种方法对模板类的实例化进行建模。

第一种方法是隐式的,即声明一个在其名称中提供了绑定的类。

第二种方法是显示的,即用一个被衍型化为bind的依赖,表明源端用实际参数对目标模板进行实例化。
 

10、标准元素

对类可以使用UML的所有扩展机制。最常见的情况是,

用标记值来扩展类的特性(如描述类的版本),

用衍型来描述新类型的构件(如特定模型的构件)。

UML定义了以下4种用于类的标准衍型。

(1)元类(metaclass)。说明一个类目,其对象全是类。

(2)幂类型(powertype)。说明一个类目,其对象是给定父类的子类。

(3)衍型(stereotype)。说明一个类目是可用于其他元素的衍型。

(4)实用程序(utility)。说明一个类,其属性和操作都是静态范围的。
 

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

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

相关文章

6月26~28日,2024北京国际消防展即将开幕!

随着社会的快速发展&#xff0c;消防安全日益受到广大民众的高度关注。为了进一步推动消防科技的创新与发展&#xff0c;提升全民消防安全意识&#xff0c;2024年北京消防展将于6月26日在北京国家会议中心盛大开展。目前:观众预登记已全面启动&#xff0c;广大市民和业界人士可…

第九篇——冗余量:《史记》和《圣经》那个信息量大?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 通过信息量的对比&#xff0c;引出来冗余度的概念&#xff0c;又深入浅出…

[职场] 项目实施工程师的工作前景 #笔记#经验分享

项目实施工程师的工作前景 项目实施工程师是负责将软件产品或解决方案实施到客户现场并确保项目成功落地的工作岗位。他们要负责整个项目的规划、组织、执行和控制&#xff0c;确保项目按照预定的进度、质量和预算完成。 一&#xff0e;工作内容 1. 项目规划&#xff1a;确定…

计算机网络 期末复习(谢希仁版本)第3章

对于点对点的链路&#xff0c;目前使用得最广泛的数据链路层协议是点对点协议 PPP (Point-to-Point Protocol)。局域网的传输媒体&#xff0c;包括有线传输媒体和无线传输媒体两个大类&#xff0c;那么有线传输媒体有同轴电缆、双绞线和光纤&#xff1b;无线传输媒体有微波、红…

如何解决访问网站时IP被限制的问题?

在互联网上&#xff0c;用户可能会面临一个令人困扰的问题——当尝试访问某个特定的网站时&#xff0c;却发现自己的IP地址被该网站屏蔽。 IP地址被网站屏蔽是一个相对常见的现象&#xff0c;而导致这种情况的原因多种多样&#xff0c;包括恶意行为、违规访问等。本文将解释IP地…

Nginx03-动态资源和LNMP介绍与实验、自动索引模块、基础认证模块、状态模块

目录 写在前面Nginx03案例1 模拟视频下载网站自动索引autoindex基础认证auth_basic模块状态stub_status模块模块小结 案例2 动态网站&#xff08;部署php代码&#xff09;概述常见的动态网站的架构LNMP架构流程数据库Mariadb安装安全配置基本操作 PHP安装php修改配置文件 Nginx…

音视频开发15 FFmpeg FLV封装格式分析

FLV(Flash Video)简介 FLV(Flash Video)是Adobe公司推出的⼀种流媒体格式&#xff0c;由于其封装后的⾳视频⽂件体积⼩、封装简单等特点&#xff0c;⾮常适合于互联⽹上使⽤。⽬前主流的视频⽹站基本都⽀持FLV。采⽤ FLV格式封装的⽂件后缀为.flv。 FLV封装格式的组成 FLV封装…

Vxe UI vxe-table 实现自定义列拖拽,列拖拽排序功能

Vxe UI vue vxe-table 实现自定义列拖拽&#xff0c;列拖拽排序功能 开启自定义列 vxe-toolbar 工具栏&#xff0c;通过 custom 启用后就可以开启自定义列功能 <template><div><vxe-toolbar ref"toolbarRef" custom></vxe-toolbar><vx…

泛微开发修炼之旅--09Ecology作为所有异构系统的待办中心,实现与kafka对接源码及示例

文章链接&#xff1a;泛微开发修炼之旅--09Ecology作为所有异构系统的待办中心&#xff0c;实现与kafka对接源码及示例

攻防世界testre做法(考点:base58)

在做这道题目之前&#xff0c;我们先来简单了解一下base64加密和base58加密&#xff0c;先来说一些预备知识&#xff0c;bit为1个位&#xff0c;即一个0或1&#xff0c;八个位组成一个字节&#xff0c;即八个二进制数。 base64编码原理&#xff1a;1&#xff0c;在使用base64加…

覆盖路径规划经典算法 The Boustrophedon Cellular Decomposition 详解

2000年一篇论文 Coverage of Known Spaces: The Boustrophedon Cellular Decomposition 横空出世&#xff0c;解决了很多计算机和机器人领域的覆盖路径问题&#xff0c;今天我来详细解读这个算法。 The Boustrophedon Cellular Decomposition 算法详解 这篇论文标题为"C…

Spring AI 第二讲 之 Chat Model API 第八节Anthropic 3 Chat

Anthropic Claude 是一系列基础人工智能模型&#xff0c;可用于各种应用。对于开发人员和企业来说&#xff0c;您可以利用 API 访问&#xff0c;直接在 Anthropic 的人工智能基础架构之上进行构建。 Spring AI 支持用于同步和流式文本生成的 Anthropic 消息 API。 Anthropic …

【Python机器学习】将PCA用于cancer数据集并可视化

PCA最常见的应用之一就是将高维数据集可视化。一般对于有两个以上特征的数据&#xff0c;很难绘制散点图&#xff0c;。对于Iris&#xff08;鸢尾花&#xff09;数据集&#xff0c;我们可以创建散点矩阵图&#xff0c;通过展示特征所有可能的两两组合来展示数据的局部图像。 不…

[论文笔记]AIOS: LLM Agent Operating System

引言 这是一篇有意思的论文AIOS: LLM Agent Operating System&#xff0c;把LLM智能体(代理)看成是操作系统。 基于大语言模型(LLMs)的智能代理的集成和部署过程中存在着许多挑战&#xff0c;其中问题包括代理请求在LLM上的次优调度和资源分配&#xff0c;代理和LLM之间在交互…

【问题解决】adb remount 失败或刷机无法连接设备(KaiOS)

问题描述 1、设备无法adb remount成功&#xff0c; 2、通过fastboot无法识别设备&#xff0c;一直卡住 3、已经识别到9008端口&#xff0c;但是设备与刷机工具connect fail&#xff0c;甚至软件crash 解决方案 1、安装高通驱动工具&#xff1a;QDLoder HS-USB Driver QDLoade…

暴雨推出基于英特尔® 至强® 6 能效核处理服务器

随着人工智能技术的快速发展&#xff0c;大模型的应用越来越广泛。据预测&#xff0c;到2024年年底&#xff0c;我国将有5%-8%的企业大模型参数从千亿级跃升至万亿级&#xff0c;算力需求增速将达到320%&#xff0c;这进一步推动了数据中心的持续变革。 超凡性能&#xff0c;绿…

网络实用技术答案

&#xff08; C &#xff09;不属于计算机网络四要素。A. 计算机系统 B. 传输介质C. 用户 D. 网络协议计算机网络中广域网和局域网的分类是以&#xff08; D &#xff09;来划分的。A. 信息交换方式 B&#xff0e;传输控制方法C. 网络使用习惯 D&#xff0e;网络覆盖范围计算机…

苹果将推出“Apple Intelligence”AI系统,专注于隐私和广泛应用|TodayAI

据彭博社报道,苹果公司将在下周的 WWDC 2024 开发者大会上揭晓其全新的 AI 系统——“Apple Intelligence”,该系统将适用于 iPhone、iPad 和 Mac 设备。这一新系统将结合苹果自身技术和 OpenAI 的工具,为用户提供一系列新的 AI 功能,同时重点关注隐私保护和广泛应用。 与…

算法导论实战(三)(算法导论习题第二十四章)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;算法启示录 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 前言 第二十四章 24.1-3 24.1-4 2…

【C语言】05.数组

一、数组的概念 本文来介绍数组&#xff0c;首先我们需要了解数组是什么&#xff1f; 数组是⼀组相同类型元素的集合。 • 数组中存放的是1个或者多个数据&#xff0c;但是数组元素个数不能为0。 • 数组中存放的多个数据&#xff0c;类型是相同的。 数组分为⼀维数组和多维数组…