目录

任务描述

相关知识

类图

类表示法

可见性

类关系

1. 关联

2. 泛化

3. 聚合

4. 组合

编程要求

打开软件

新建项目

创建类图模块

添加图形到画布

例题:图书管理系统

分析

 测试说明


任务描述

本关任务:使用 StartUML 绘制用例图。

相关知识

  • 类图描述系统静态结构
  • 在系统的逻辑视图中,类图用于表示类和它们之间的关系。我们利用类图来说明实体共同的角色和责任,这些实体提供了系统的行为。
  • 类图中的两个基本元素是类和它们的基本关系。

类图

类表示法

类图标由三个部分组成:第一个部分是类名,第二个部分是属性,第三个部分是操作。

  • 类名在它的命名空间中唯一。类名以大写字母开头,省略多个单词之间的空格。
  • 属性和操作在类的范围内必须无二义。属性和操作是以小写字母开头,后续单词的首字母大写,且同样省略空格。
  • 抽象类和抽象操作用斜体表示。
  • 属性规格说明格式:可见性 属性名称:类型 [多重性] = 默认值 {特性字符串}
  • 操作规格说明格式:可见性 操作名称(参数名称:类型):返回值 {特性字符串}

可见性

公有可见性(+):对能看到这个类的任何元素都可见。
保护可见性(#):对这个类及其子类的其他元素可见。
私有可见性(-):对这个类的其他元素可见。
包可见性(~):对同一个包中的其他元素可见。

类关系

类的基本联系包括关联、泛化、聚合和组合。

1. 关联

关联用不带箭头的实线表示。

  • 关联连接了两个类,体现了一种语义关系
  • 关联通常用名词词组来标注,如下图中的 Analyzes,以说明关系的实质。
  • 类可能与它自己有关联(称为自关联),如 PlanAnalyst 类的实例之间的协作。注意,这里同时使用了关联端名称和关联名称,目的是提供清晰性。
  • 关联可以进一步通过多重性来修饰(没有也可以)。多重性的语法如下:
  •   精确到 1 个。

  数目不限(0 个或多个)。
  0..*:0 个或多个。
  1..*:1 个多多个。
  0..1:0 个或 1 个。
  3..7:指定范围(3~7 个,包含 3 和 7)

  • 多重性应用于关联的目标端,说明源类的每个实例与目标类实例的连接个数。除非显式说明,否则关系的多重性就是未指定的。

2. 泛化

  • 泛化描述的“是一种”的关系。
  • 泛化用带有封闭箭头的实线表示。箭头指向超类,关联的另一端是子类。
  • 子类继承超类的结构和行为。根据这些规则,一个类可以有一个(单继承)或多个(多继承)超类,超类间的名字冲突也可以根据所选语言的规则来处理。
  • 泛化关系不能有多重性指定
  • 下图中的 GrowingPlan 类是超类,它的子类是 FruitGrowingPlan。

3. 聚合

  • 聚合表明一种整体-部分的层次结构。
  • 聚合用带有一个空心菱形的实线表示。菱形所在的一端是聚合体(整体),另一端的类代表它的实例构成了聚合对象的部分。
  • 自聚合和循环聚合关系是可能的。这种整体-部分的层次关系并不意味着物理上的包容:一个专业协会有一些成员,但不表示协会拥有它的成员。就如汽车和轮胎,当汽车销毁的时候,并不意味着轮胎也销毁了。即两个对象的生命周期是相互独立的。
  • 聚合关系末端的*(0 个或多个)多重性进一步突出了这不是物理包容关系。
  • 下图中,EnvironmentalController 类有 Light、Heater 和 Cooler 类作为它的部分。

4. 组合

  • 组合则是关联更强的聚合。部分与整体共存亡,是物理包容。
  • 组合用带有一个实心菱形的实线表示。菱形所在的一端是整体,另外一端是部分。
  • 整体所在的一端的多重性是 1,因为根据定义,部分在整体之外就没有任何意义,整体拥有部分,部分的生命周期与整体式一样的。


编程要求

StartUML 新建用例图模块构建流程:

仅作参考,具体保存路径以及创建的模型请按照题目要求进行操作!

打开软件

双击如下图所示图标。

如下图关闭未激活信息。

新建项目

打开软件后如下图,在 StarUML 中,点击 "File"(文件)菜单,然后选择 "New"(新建项目)来创建一个新的项目。

创建类图模块

在创建新项目后,点击"Model",在弹出的上下文菜单中选择 "Add Diagram"(添加图表)。然后从列表中选择 "Class Diagram"(类图),这将在项目中创建一个新的类图模块。

创建项目时的默认模块删除!!!
如下图移动鼠标到软件界面右侧选择默认"Model"删除。 这里很重要,因为"starUML"自身的原因在创建新项目之后就会生成一个默认模块,我们这里不需要用到所以需要删除,否则会影响评测结果。

添加图形到画布

可以通过点击选择组件在画布中进行图形绘制。


例题:图书管理系统

  • 这个系统包括图书类(Book)、作者类(Author)和读者类(Reader)三个主要的类,它们之间存在一些关联关系和属性。
  • 每个类都有私有属性(用 "-" 表示)和公有方法(用 "+" 表示)。
  • 图书类有属性:bookID、title、author和price,以及获取(getPrice)和设置价格(setPrice)的方法。
  • 作者类有属性:authorID、name,以及获取作者的书籍列表(getBooks)和添加书籍(addBook)的方法。

读者类有属性:readerID、name,以及借阅图书(borrowBook)的方法。

分析

在上述例子中,这三个类(图书类、作者类和读者类)之间存在一些关系。以下是它们之间的关系描述:

  • 图书类与作者类之间的关系:关联关系(Association):图书类和作者类之间存在关联关系。这表示图书类中的属性 author 保存了图书对应的作者名字。这样,每本图书都与一个作者相关联。
  • 作者类与图书类之间的关系:关联关系(Association):作者类和图书类之间也存在关联关系。作者类中的方法 getBooks() 返回了作者所著的所有图书的列表。这样,每个作者可以有多本图书。
  • 读者类与图书类之间的关系:依赖关系(Dependency):读者类和图书类之间存在依赖关系。这表示读者类的方法 borrowBook() 中传递了一个图书类的对象,说明读者类的借书行为依赖于图书类的存在。

  •  测试说明

请在图形化窗口中使用 StartUML 工具进行用例图的绘制,将绘制完成的文件保存到 /data/workspace/myshixun/step1 下,并命名为 uml.mdj。

1. 点击 File 选项框中的 save进行保存,或者使用 Ctrl + S进行保存

2. 将文件名称改为uml.mdj

3. 将文件保存至指定文件夹,点击Save进行保存

平台会对你绘制的图形进行测评。


开始你的任务吧,祝你成功!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐