【UML用户指南】-05-对基本结构建模-类

目录

1、名称(name)

2、属性 (attribute)

3、操作(operation)

4、对属性和操作的组织

4.1、衍型

4.2、职责 (responsibility)

4.3、其他特征

4.4、对简单类型建模

5、结构良好的类



在UML中,所有的事物都被建模为类。类是对词汇表中一些事物的抽象。类不是个体对象,而是描述一些对象的一个完整集合。

强调抽象的最重要的部分:名称、属性和操作

类 (class)是对一组具有相同属性、操作、关系和语义的对象的描述。在图形上,把类画成一个矩形。

1、名称(name)

名称 (name)是一个文字串。单独的名称叫做简单名 (simple name),

用类所在的包的名称作为前缀的类名叫做限定名 (qualified name)。

要求类名的第一个字母通常要大写

2、属性 (attribute)

属性 (attribute)是已命名的类的特性,它描述了该特性的实例可以取值的范围。类可以有任意数目的属性,也可以没有属性。属性描述了正被建模的事物的一些特性,这些特性为类的所有对象所共有。

属性与聚合的语义有关

属性可以有默认值,可以只读、或者本类的所有对象共享

3、操作(operation)

操作 (operation)是一个服务的实现,该服务可以由任何类的对象来请求以影响其行为。

类可以有任意数目的操作,也可以没有操作。

特征标记包含所有参数的名称、类型和默认值,如果是函数,还要包括返回类型

可以把操作标记为多态的、不变的或描述它的可见性

4、对属性和操作的组织

4.1、衍型

为了更好地组织属性和操作的长列表,可以利用衍型在每一组属性和操作之前加一个描述其种类的前缀

衍型又称构造型或者版型,用<<>>表示,用于创建新的结构体

4.2、职责 (responsibility)

是类的合约或责任。当创建一个类时,就声明了这个类的所有对象具有相同种类的状态和相同种类的行为。在较高的抽象层次上,这些相应的属性和操作正是要完成类的职责的特征

职责是一个已定义的衍型的例子

对类建模的一个好的起点是详述词汇表中的事物的职责。

职责是自由形式的文本。

要把这些职责转换成能很好地完成这些职责的一组属性和操作。
 

职责是一个已定义的衍型的例子

4.3、其他特征

  • 单个属性和操作的可见性;
  • 与特定语言相关的操作特征,例如多态的或静态的;
  • 甚至类的对象可能产生或操纵的异常事件。
  • 把类的实现与规约相分离【接口】
  • 设计类的实现时,需要将其内部结构建模为一组连接起来的部件。
  • 建立复杂的模型,主动类(进程和线程)、制品(物理软件构件)和节点(硬件)
  • 类之间的交互、协作【类图】

4.4、对简单类型建模

在其他极端情况下,所建模的事物可能直接取自用于实现一个解的编程语言。通常这些抽象包括简单类型,

如整数、字符和串,乃至自定义的枚举类型。

如下图所示,在UML中可以把这些事物建模为类型或枚举,就像类那样表示,但要显式地用衍型来做标记。

把像整数(用类Int 来表示)简单类型建模为类型,可以用约束显式地说明这些事物的值域;必须在UML之外定义简单类型的语义。

像Boolean和Status这样的枚举类型可以建模为枚举,并把它们的字面值罗列在属性分栏中(注意它们不是属性)。

枚举类型也可定义操作。

5、结构良好的类

各个类都应该映射到某个有形的或者概念性的抽象。一个结构良好的类,应满足如下条件。

  • 为取自问题域或者解域的词汇中的事物提供明确的抽象。
  • 嵌入一个小的、明确定义的职责集,并且能很好地实现它们。
  • 把抽象的规约和它的实现清楚地分开。
  • 简单而且可理解,并具有可适应性和可扩展性。
  • 当用UML绘制一个类时,要遵循如下策略。
    • 仅显示在该类的语境中对于理解抽象较为重要的类的特性。
    • 按属性和操作的种类进行分组,以更好地组织其长列表。
    • 把相关的类显示在同一个类图中。

【UML用户指南】-01-UML基本元素的介绍(一)-CSDN博客

【UML用户指南】-02-UML基本元素的介绍(二)-CSDN博客

【UML用户指南】-03-UML的14种图-CSDN博客

【UML用户指南】-04-从代码到UML的关键抽象-CSDN博客

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-06-06 22:18:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-06 22:18:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-06 22:18:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-06 22:18:02       18 阅读

热门阅读

  1. 力扣每日一题 6/6

    2024-06-06 22:18:02       11 阅读
  2. Springboot+WebSocket实现消息推送

    2024-06-06 22:18:02       10 阅读
  3. 嵌入式学习——网络编程(UDP)——day30

    2024-06-06 22:18:02       9 阅读
  4. iPhone 语言编程:深入探索与无限可能

    2024-06-06 22:18:02       11 阅读