头歌之软件工程-类图
本关任务:使用 StartUML 绘制用例图。
目录
任务描述
本关任务:使用 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进行保存
平台会对你绘制的图形进行测评。
开始你的任务吧,祝你成功!
更多推荐
所有评论(0)