UML类图和用例图练习

一、问题描述

一个公司可以雇佣多个人,某个人在同一时刻只能为一家公司服务。每个公司只有一个总经理,总经理下有多个部门经理管理公司的雇员,公司的雇员只归一个经理管理。请为上面描述的关系建立类模型,注意捕捉类之间的关联并标明类之间的多重性。

问题分析

根据题目描述在各个类之间建立关联关系:公司与总经理之间为一对一关系,总经理和部门经理之间为一对多关系,部门经理与普通雇员之间也为一对多关系,其中普通雇员、部门经理、总经理都可以由统一的员工泛化而来。
在这里插入图片描述


二、问题描述

在某出版系统中,存在出版社、图书、作者三个实体类。绘制简单类图来描述三者之间的关系。

问题分析

根据题干,首先创建出版社、图书、作者三个实体类。随后,根据常识,在图书和出版社以及图书和作者之间建立关联关系,然后填写合适的多重性:一个出版社可能出版多本图书,一本书只能归属于一个出版社;一本图书可能有一个及以上的作者,一个作者也可能出版很多本书。
在这里插入图片描述


三、问题描述

某银行储蓄系统需求说明如下:

①开户。客户可填写开立账户申请表,然后交由工作人员验证并输入系统。系统会建立账户记录,并会提示客户设置密码(若客户没做设置,则会有一个默认密码)。如果开户成功,系统会打印一本存折给客户。

② 密码设置。在开户时客户即可设置密码。此后,客户在经过身份验证后,还可修改密码。

③ 存款。客户可填写存款单,然后交由工作人员验证并输入系统。系统将建立存款记录,并在存折上打印该笔存款记录。

④取款。客户可按存款记录逐笔取款,由客户填写取款单,然后交由工作人员验证并输入系统。系统首先会验证客户身份,根据客户的账户、密码,对客户身份进行验证。如果客户身份验证通过,则系统将根据存款记录累计利息,然后注销该笔存款,并在存折上打印该笔存款的注销与利息累计。

请根据以上信息绘制出系统的用例图

问题分析

1.识别参与者:工作人员和客户;
2.确定用例模型:
(1)工作人员作为客户与系统交互的代理有申请开户、存款及取款用例。打印存折用例作为申请开户的扩展用例存在。
(2)客户有输入密码用例,分别作为取款用例以及申请开户用例的包含用例存在。
在这里插入图片描述


四、问题描述

机票预订系统是某航空公司推出的一款网上购票系统。其中,未登录的用户只能查询航班信息,已登录的用户还可以网上购买机票,查看行程,也可以退订机票。系统管理员可以安排系统中的航班信息。此外,该购票系统还与外部的一个信用评价系统有交互,当用户一个月内退订2次及以上的机票时,需要降低该用户在信用评价系统中的信用等级。当信用等级过低时,则不允许该用户再次购买机票。
根据机票预订系统,画出系统的用例图,类图,对象图

问题分析

1.确定参与者:
系统主要有3类参与者,用户,管理员,信用评价系统。用户又包括了未注册用户和注册用户。所以用户应该是一个抽象的参与者。
2.确定用例:
未注册用户:可以注册,查询航班。
注册用户:登录系统,查询航班,购买机票,退订机票,查看行程。
管理员:登录系统,设定航班安排。
信用评价系统:修改信用等级,检查信用等级。(2个用例并不是由信用评价系统触发的,是由其它用例触发的。)

用例图:
在这里插入图片描述


类图:

确定类元素:用户,管理员,机票,航班,机场
在这里插入图片描述


对象图:
在这里插入图片描述

在这个场景中,我们可以创建三个主要的来表示公司的结构:公司(Company)、员工(Employee)职位(Position)。之间的关联多重性如下: 1. **公司(Company)**: - 属性:id(唯一标识),总经理(总经理实例) - 关联:1对1(与总经理的关系,因为每个公司只有一个总经理) 2. **总经理(Manager)**: - 继承自:员工(Employee) - 属性:姓名,职责等 - 关联:0到1与公司(作为公司总经理) 3. **部门经理(DepartmentManager)**: - 继承自:员工(Employee) - 属性:部门名称,直接下属(列表形式,包含普通员工) - 关系:1对多(与多个公司通过总经理间接关联,一个部门经理可能属于多个部门,但每个公司只有一个总经理) 4. **普通员工(Employee)**: - 属性:姓名,工号,职位(可能为部门经理或普通员工) - 关联:1对1与部门经理(每个普通员工只属于一个部门经理) 为了体现上述设计,你可以使用面向对象的语言如Java或Python来实现这些,并添加适当的方法来操作它们。例如,在Java中,你会看到似于这样的声明: ```java class Employee { private String name; // 其他属性... } class DepartmentManager extends Employee { private String departmentName; private List<Employee> subordinates; // 构造函数, getter/setter... } class Manager extends Employee { private Company company; // 构造函数, getter/setter... } class Company { private int id; private Manager manager; // 构造函数, 添加员工方法... } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值