类图实例和习题

合集下载

4-2类图练习题

4-2类图练习题

用例图示例
Administrator update inventory
<<include>> load inventory data <<include>>
run inventory reports
save inventory data <<include>>
<<include>> <<extend>> sale <<extend>> verify check verify credit card
credit card +Verify() 0..* n sale +Update() check +verify() 0..* n 1 n +Load() +Save() +Update()
inventory
3 图书管理系统需求如下: 添加图书 删除图书 添加标题 删除标题 添加借阅者信息 删除借阅者信息 登陆
创建类图的步骤如下: (1)将学生可以是在校生或者毕业生建模为3个类: Student、UnderGraduate和Graduate,其中,后两个类 是Student类的子类。 (2)为“在校生可以是助教的一种”建立模型,即建立 UnderGraduate类的另一个超类Tutor。 (3)通过创建从Tutor到Student的关联(名为tutors),建 立一名助教指导一名学生的模型。 (4)将“教师和教授属于不同级别的教员”建模为3个类: Instructor、Teacher和Professor,其中,后两个类是 Instructor类的子类。 (5)建立“一名教师助理可以协助一名教师和一名教授, 一名教师只能有一名教师助理,一名教授可以有5名教师 助理”的模型。创建TeacherAssistant类,并使其与 Teacher类和Professor类都建立关联。 (6)将TeacherAssistant类建模为Graduate类的派生类。

第三章 类图

第三章 类图

3.1 类图的概念
图3-1电子商务网站的对象模型
3.1 类图的概念
2、类图的作用 类图常用来描述业务或软件系统的组成、结构和关系。
3、类图的组成元素 类 接口 协作 关系 注释 约束 包
3.2 UML中的类
1、类的表示 (1)类的定义
类是具有相似结构、行为和关系的一组对象的描述 符。 (2)类的表示
关于聚合与组合
2、泛化-Generalization
表示两个类元间“一般”与“特殊”的关系。 对应面向对象编程语言中类与类之间的继承关系。 “is a kind of”关系,XX是一种XX
Athlete
SwimmerBiblioteka Golfer3、实现-Realization
表达一种说明元素与实现元素之间的关系; 类和接口之间的关系是实现关系,表示类实现接口提供的
3.2 UML中的类
(7)类的约束 约束指定了类所要满足的一个或多个规则。 在UML中,约
束是用花括号括起来的自由文本。
Washing Machine
Brand name Model name Serial number Capacity Add clothes( ) Add detergent( ) Remove clothes( )
表示客户与提供者之间用不同的方法表现同一个概念, 通常一个概念更抽象,一个概念更具体。包括:
① 跟踪<<trace>>--声明不同模型中的元素之间存在一些 连接但不如映射精确。
② 精化<<refine>>--声明具有两个不同语义层次上的元 素之间的映射。
③ 派生<<derive>>--声明一个实例可以从另一个实例导 出。

UML实验习题

UML实验习题

下图是一个信用卡账户管理的类图模型,根据类图映射出其对应的数据库模型。

下图是一个报纸排版系统的类图,该系统可以负责文字段落的排版,同时用户可以调整段落文字的宽和高,在页面中的位置,或把段落文字从一个页面移动到另一个页面。

修改该类图,使得文字段落的内容可以出现在多个页面当中。

如果用户改变页面中某个段落的位置,则其他页面中对应的段落也将会自动改变位置。

下图为一个图形编辑器的类图。

一个Sheet由若干line和box组成,一个line由若干linesegment组成,同时每个linesegment由两个point确定,同时连接两个box。

同一水平线或垂直线的linesegment可共享一个point。

Selection为包含若干line和box的集合,buffer为被剪切或粘贴的line和box的集合。

下面的类图并没有明确一个line或box具体是属于buffer,selection还是sheet。

修改该类图以明确该约束。

UML中类图实例(动物)

UML中类图实例(动物)

接口:空心圆+直线(唐老鸭类实现了…讲人话‟);依赖:虚线+箭头(动物和空气的关系);关联:实线+箭头(企鹅需要知道气候才迁移);聚合:空心四边形+实线+箭头(雁群和大雁的关系);合成/组合:实心四边形+实线+箭头(鸟和翅膀的关系);泛化/继承:空心三角形+实线(动物和鸟的继承关系);实现:空心三角形+虚线(实现大雁飞翔的接口);UML类图1. 首先看“动物”矩形框,它代表一个类。

该类图分为三层,第一层显示类的名称,如果是抽象类就要用斜体显示。

第二层是类的特性,通常就是字段和属性。

第三层是类的操作,通常是方法和行为。

注意前面的符号,…+‟表示public, …—‟表示private, …#‟表示protected.2. “飞翔”矩形框表示一个接口图,它与类图的区别主要是顶端有《interface》显示,第一行是接口名称,第二行是接口方法。

接口还有另一种表示方法,俗称棒棒糖表示法,就是唐老鸭类实现了“讲人话”的接口。

interface IFly interface Ilanguage{ {void Fly(); void Speak();} }3. 动物,鸟,鸭,唐老鸭他们之间都是继承的关系,继承关系用空心三角形+实现来表示。

4.“大雁”实现了“飞翔”接口。

实现接口用空心三角形+虚线来表示。

(注:下面的图中应为空心三角形)class Bird:Animal class WideGoose:IFly{ {//继承动物类 //实现飞翔接口} }5. 企鹅与气候有很大的关系,企鹅需要“知道”气候的变化,需要“了解”气候规律。

当一个类“知道”另一个类时,可以用关联(association)关系。

关联关系用实线箭头来表示。

class Penguin :Bird{private Climate climate;//在企鹅Penguin中,引用到气候Climate对象}6. “大雁”和“雁群”这两个类。

大雁是群居动物,每只大雁都属于一个雁群,一个雁群可以有多只大雁。

作业3(类图)

作业3(类图)

建立Class图思考题:
1.销售飞机票系统
问题陈述:
在一个简单的机票销售系统中,售票员根据旅客需要的航班,查询有无机票,若有,则负责录入、修改旅客的基本信息(姓名、身份证号、航班号、票价、到达港等信息),并提供机票;保险业务员负责录入、修改客票信息(航班、日期),并提供乘机保险单;销售部经理可随时查询每一航班的售票情况(航班号,售票数量、营业额);并在日结时计算日营业额。

根据上述问题陈述,建立系统类图(Class Diagram)。

2.简易饮料自动售货机系统
问题陈述:
简易饮料自动售货系统用于顾客自助购买饮料。

不同的饮料有不同的价格。

顾客投入规定面值的硬币,当投入的硬币达到或超过某些饮料价格时,对应饮料的选择键会亮起来,顾客可以按下选择键,购买该饮料;若投入的钱数大于所选饮料的价格时,系统会自动退还多余的钱币。

顾客也可以在按下选择饮料键前,按售货机上的退币键,当按下退币键后,系统将顾客投入的所有钱币退出。

根据上述问题陈述,建立系统类图(Class Diagram)。

3.自拟系统
根据你熟悉的问题,写出问题陈述,并建立系统类图(Class Diagram)。

4.作业要求
作业名称统一为:作业3-XXX(XXX是自己的名字)
作业提交日期:11月22日周五晚9点前
作业提交信箱:xujin0209@。

类图练习题

类图练习题

专题三:类图(对象图)一、单项选择题1.在UML中,类之间的关系有一种为关联关系,其中多重性用来描述类之间的对应关系,下面哪个不是其中之一()A. 0 (1)B. 0….*C. 1….*D. *….*2.通常对象有很多属性,但对于外部对象来说某些属性应该不能被直接访问,下面哪个不是UML中的类成员访问限定性()A.公有的(public)B.受保护的(protected)C.友员(friendly)D.私有的(private)3、在一个课程注册系统中,定义了类CourseSchedule和类Course,并在类CourseSchedule 中定义了方法add(c:Course)和方法remove(c:Course),则类CourseSchedule和类Course 之间的关系是:()A、泛化关系B、组成关系C、依赖关系D、包含关系4、类A的一个操作调用类B的一个操作,且这两个类之间不存在其他关系,那么类A和类B之间是()关系。

()A、实现B、关联C、依赖D、泛化5、在UML中下列图形代表什么关系?()A、组成关系B、依赖关系C、聚集关系D、泛化关系6、在UML中下列图形代表什么关系?( )A、组成关系B、依赖关系C、聚集关系D、泛化关系7、汽车(Car)由轮子、发动机、油箱、座椅、方向盘等组成。

那么car类和其他类(Wheel、Engin、Tank、Chair、SteeringWheel)之间的关系是:()A、泛化关系(Generalization)B、实现关系(Realization)C、包含关系(Inclusion)D、组合关系(Composition)8.在下面的图例中,哪个用来描述注释()AB C D9、在一个网络游戏系统中,定义了类Cowboy和类Castle,并在类Cowboy中定义了方法open(c:Castle)和方法Close(c:Castle),则类Cowboy和类Castle之间的关系是:……()A、依赖(dependency)关系B、组成(composition)关系C、泛化(generalization)关系D、包含(include)关系10、根据下面的代码,判断下面那些叙述是正确的?()public class HouseKeeper{private TimeCard timecard;public void clockIn(){timecard.punch();}}A、类HouseKeeper和类TimeCard之间存在关联(Association)关系;B、类HouseKeeper和类TimeCard之间存在泛化(Generalization)关系;C、类HouseKeeper和类TimeCard之间存在实现(Realization)关系;D、类HouseKeeper和类TimeCard之间存在包含(Inclusion)关系11、已知类A需要类B提供的服务,下列所描述的四种情况中,哪种情况不好把类A和类B之间的关系定义成依赖关系()A、类A中存在两个操作都需要访问类B的同一个对象B、类A的某个操作内部创建了类B的对象,而其他操作均与类B无关C、类A的某个操作其参数是类B的对象,而其他操作均与类B无关D、类B是一个全局变量12、“一个研究生在软件学院做助教(teaching assistant),同时还在校园餐厅打工做收银员(cashier)。

完整word版,UML中类图实例(动物)

完整word版,UML中类图实例(动物)
classBird
{
privateWing wing;
publicBird()
{
wing=newWing();
//在鸟Bird类中,初始化时,实例化翅膀Wing,它们之间同时生成
}
}
8. “动物”、“氧气”与“水”之间。动物有几大特征,比如有新陈代谢,能繁殖。而动物要有生命,需要氧气,水以及食物等。也就是说动物依赖于氧气和水。它们之间是依赖关系(Dependency),用虚线箭头来表示。
} }
3.动物,鸟,鸭,唐老鸭他们之间都是继承的关系,继承关系用空心三角形+实现来表示。
4.“大雁”实现了“飞翔”接口。实现接口用空心三角形+虚线来表示。(注:下面的图中应为空心三角形)
classBird:AnimalclassWideGoose:IFly
{ {
//继承动物类//实现飞翔接口
} }
5.企鹅与气候有很大的关系,企鹅需要“知道”气候的变化,需要“了解”气候规律。当一个类“知道”另一个类时,可以用关联(association)关系。关联关系用实线箭头来表示。
UML中类图实例
接口:空心圆+直线(唐老鸭类实现了‘讲人话’);
依赖:虚线+箭头(动物和空气的关系);
关联:实线+箭头(企鹅需要知道气候才迁移);
聚合:空心四边形+实线+箭头(雁群和大雁的关系);
合成/组合:实心四边形+实线+箭头(鸟和翅膀的关系);
泛化/继承:空心三角形+实线(动物和鸟的继承关系);
2. “飞翔”矩形框表示一个接口图,它与类图的区别主要是顶端有《interface》显示,第一行是接口名称,第二行是接口方法。接口还有另一种表示方法,俗称棒棒糖表示法,就是唐老鸭类实现了“讲人话”的接口。

历年软考UML图例真题解析

历年软考UML图例真题解析

一、某企业为了方便员工用餐,餐厅开发了一个订餐系统(COS:Cafeteria Ordering System),企业员工可通过企业内联网使用该系统。

企业的任何员工都可以查看菜单和今日特价。

系统的顾客是注册到系统的员工,可以订餐(如果未登录,需先登录)、注册工资支付、预约规律的订餐,在特殊情况下可以覆盖预订。

餐厅员工是特殊顾客,可以进行备餐、生成付费请求和请求送餐,其中对于注册工资支付的顾客生成付费请求并发送给工资系统。

菜单管理员是餐厅特定员工,可以管理菜单。

送餐员可以打印送餐说明,记录送餐信息(如送餐时间)以及记录收费(对于没有注册工资支付的顾客,由送餐员收取现金后记录)。

顾客订餐过程如下:1.顾客请求查看菜单;2.系统显示菜单和今日特价;3.顾客选菜;4.系统显示订单和价格;5.顾客确认订单;6.系统显示可送餐时间;7.顾客指定送餐时间、地点和支付方式;8.系统确认接受订单,然后发送Email给顾客以确认订餐,同时发送相关订餐信息通知给餐厅员工。

系统采用面向对象方法开发,使用UML进行建模。

绘制出系统的顶层用例图和一次订餐的活动图。

(09.12)二、某银行计划开发一个自动存提款机模拟系统(ATM System)。

系统通过读卡器(CardReader)读取ATM 卡;系统与客户(Customer)的交互由客户控制台(CustomerConsole)实现;银行操作员(Operator)可控制系统的启动(System Startup)和停止(System Shutdown);系统通过网络和银行系统(Bank)实现通信。

当读卡器判断用户已将ATM卡插入后,创建会话(Session)。

会话开始后,读卡器进行读卡,并要求客户输入个人验证码(PIN)。

系统将卡号和个人验证码信息送到银行系统进行验证。

验证通过后,客户可从菜单选择如下事务(Transaction):1. 从ATM卡账户取款(Withdraw);2. 向ATM卡账户存款(Deposit);3. 进行转账(Transfer);4. 查询(Inquire)ATM卡账户信息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Borrow-Lend
1.根据以下描述,给出系统的UML类设计方案。 系统名称:农夫果园游戏系统 任务角色:农夫(Farmer)、 市场调查员(Inquirer)、农场主(Boss) 系统实物:各种水果(Fruit)、果园(Garden) 功能需求: ①农夫可以根据市场行情种植各种水果; ②市场调查员可以了解市场行情; ③农场主可以向农夫、市场调查员发布命令; ④各种果树都具有种植(plant)、成长(grow)、 收获(harvest)行为; ⑤果园是人物和实物进行交易的场所。
该图书。读者如期还书后,系统清除借阅记录,否则 需缴纳罚金。读者还可以续借图书,系统还包括图书 挂失和读者证挂失等功能。 同时,以上部分操作还需要系统管理员和图书 管理员进行参与。 结合以上分析,采用识别类的方法,暂时可以 识别出“图书管理系统”中的一些类。
实例:图书管理系统
识别“图书管理系统”中的类 (1)寻找名词 阅读系统文档和用例(尤其是用例事件流),找出 名词或名词短语,注意区别类和属性,筛选后,去 除冗余的、与系统无关的、非独立的类。 (2)类-职责-协作方法 CRC方法,模拟开发人员”处理卡片”的一个过程。 开发人员在执行一个处理实例(即一个用例)的同 时,将类名赋予的职责和合作者填入卡片,以 此来确定类。
4.根据下面的陈述绘制类图 ①学生包括本科生、研究生两种。 ②研究生可以利用课余时间担任助教。 ③教师包括讲师和教授两种。 ④一名助教可以为一位讲师或一位教授助课,一位 讲师只能有一名助教,一位教授可以有5名助教。
5.按如下描述绘制出“飞船系统”的类图。 “神舟”六号飞船是“神舟”飞船系列的一种,它由 轨道舱、返回舱和逃逸救生塔组成。航天员可以 在返回舱内驾驶飞船,轨道舱则是航天员工作和 休息的场所。在紧急情况下,可以利用逃逸救生塔 逃生。在飞船两侧有多个太阳能电池翼,可以为 飞船提供电能。
GUIpackage
+ BookManage + Borrow-Lend + FineManage + Main + ReaderManage + SystemManage + login
login
Main
FineManage
SystemManage
ReaderManage
BookManage
部分文档描述: 系统为每个读者建立一个账户,并给读者发放读者证, (可以提供读者证号、读者姓名),账户中存储读者 的个人信息、借阅信息以及预订信息等,持有读者证 可以借阅图书、返还图书、查询图书信息、预订图书 和取消预订。 在借阅图书时,需要输入读者所借阅的图书名、 ISBN号,然后输入读者的读者证号和姓名,完成后 提交所填表格,系统验证读者是否有效。如果读者 有效,借阅请求被接受,系统查询读者所借阅的图书 是否存在。若存在,则读者可借出图书,系统记录借阅 记录,如果读者所借阅的图书已被借出,读者还可预订
序号 1 2 3 4
参与者
用例名称 Add User 增加系统用户 删除系统用户 修改系统用户 查询系统用户
用例说明
Administrator (系统管理员)
Delete User Update User Query User Set Book Type Set Brrow Type Set BookInfo Set ReaderCard Query BookInfo Query ReaderInfo
1 0..n
Manager
3.为下面这段Java代码补充类图。 Public class Student{ private String name; public void setName(String name){ =name; } public String getName { return ; } }
为方便管理,设计2个包, Business Package(业务包)、 GUI Package(图形用户接口包)
2.绘制类图
Business Package
+ Admin + Administrator + Book + BookType + Borrow + BorrowType + Fine + Librarian + RaderType + Reader + Reserve + Store
Brrow Book Return Book Renew Book Fine Reserve Book Cancle Reservation Lose Book Lose ReaderCard
序号 19 20 21 22 23 24
参与者
用例名称 Login Reserve Book 登录系统
用例说明
2.每个HouseKeeper都有一个Manager负责,有的 Manager可能负责多个HouseKeeper,有的Manager 可能一个HouseKeeper都没有,下面哪幅图适合描述 类HouseKeeper和类Manager的关系? A
HouseKeeper
0..n 1
Manager
B
HouseKeeper
Cancle Reservation
图书管理员Borrow-Lend子用例图
student
teacher
Reader
Query ReaderInfo Reserve Book Login Query BookInfo
Cancle Reservation Renew Book
读者Borrow-Lend子用例图
Librarian Manage Book
Borrow-Lend
Reader
顶层用例图
administrator delete user add user
update user
query user
系统管理员Manage User 子用例图
Librarian Set ReaderCard Query ReaderInfo
6.按如下描述绘制出“自制机器人系统”的类图 这张图的焦点在那些让机器人在路上行走的机制 所对应的类上。通过分析可以发现一个虚类Motor 和两个由它派生出来的类:SteeringMotor和 MainMotor。这两个类都是从父类Motor继承了 5个方法:move()、stop()、resetConter()、status() Distance()。这两个类又是另一个类Driver的一部分。 类PathAgent和Driver有一个一对一的关系, 类PathAgent和CollisionSensor有1对n的关系。
Lose ReaderCard
图书管理员Manage Reader 子用例图
Fine <<extend>>
Borrow Book Reserve Book
Return Book Query BookInfo Librarian
Lose Book
Renew Book
Set Book Type Set Borrow Type Set BookInfo
建立系统静态图的过程是对系统领域问题及其解决 方案的分析和设计的过程。静态图设计的主要内容 是类图的建立。
建立类图的步骤:
1.研究分析问题领域,确定系统的需求。 2.发现类和对象,明确类的属性和操作。 3.发现类之间的静态关系,一般与特殊关系,整体 和部分关系,类之间的继承性和多重性。 4.设计类与关系。 5.绘制类图并编制相应的说明。
“图书管理系统”中的类
序号
1 2
类名称
Admin Administrator
类说明
抽象出来的管理员 进行系统管理的管理员
3
4 5
Librarian
Reader ReaderType
进行读者管理、图书管理、借阅管理的图 书管理员Biblioteka 读者基本信息 读者类别信息6
7 8
Book
BookType Borrow
图书基本信息
图书类别信息 读者借阅图书信息
9
10 11 12
BorrowType
Store Reserve Fine
读者借阅类型信息
图书在图书馆中的存放位置信息 读者预订图书信息 读者罚款信息
系统的用户接口可以作为系统的边界类:
(如果采用页面形式表示用户接口,可把页面看成边界类)
Login(登录)、Main(主界面)、 SystemManage(系统管理)、 ReadrManage(读者管理)、 BookManage(图书管理)、 BorrowManage(借阅管理)、 FineManage(罚款管理)等窗体
1.
(3)根据MVC模式寻找 根据用例图找出边界类;在用例图中找出控制类; 数据库设计完毕后,可以根据数据表获得实体类。 (4)有些类无法通过上述方法找到,可能还需要 从后面的动态模型(如时序图和协作图)中通过 分析对象来确定。
主要参与者:系统管理员、图书管理员、读者 主要用例:Manage User(用户管理)、 Manage Book(图书管理)、Manage Reader (读者管理)、Borrow-Lend(借阅管理)等。 1. Manage User:完成系统用户的增加、删除、修改、 查询等功能。 2. Manage Book:完成基本信息设置(图书类型设置、 借阅种类设置)和图书信息管理(图书信息设置、 图书信息查询)功能。 3. Manage Reader:完成读者办证、读者信息查询、 读者证挂失功能。 4. Borrow-Lend:完成借书、还书、续借、超期罚款、 图书预订、取消预订、图书挂失等功能。
申请预订图书 取消图书预订 根据需要进行图书信息查询 进行读者信息查询 申请续借图书
Reader (读者)
Cancle Reservation Query BookInfo Query ReaderInfo Renew Book
相关文档
最新文档