类图实例和习题
- 格式:ppt
- 大小:516.50 KB
- 文档页数:25
下图是一个信用卡账户管理的类图模型,根据类图映射出其对应的数据库模型。
下图是一个报纸排版系统的类图,该系统可以负责文字段落的排版,同时用户可以调整段落文字的宽和高,在页面中的位置,或把段落文字从一个页面移动到另一个页面。
修改该类图,使得文字段落的内容可以出现在多个页面当中。
如果用户改变页面中某个段落的位置,则其他页面中对应的段落也将会自动改变位置。
下图为一个图形编辑器的类图。
一个Sheet由若干line和box组成,一个line由若干linesegment组成,同时每个linesegment由两个point确定,同时连接两个box。
同一水平线或垂直线的linesegment可共享一个point。
Selection为包含若干line和box的集合,buffer为被剪切或粘贴的line和box的集合。
下面的类图并没有明确一个line或box具体是属于buffer,selection还是sheet。
修改该类图以明确该约束。
接口:空心圆+直线(唐老鸭类实现了…讲人话‟);依赖:虚线+箭头(动物和空气的关系);关联:实线+箭头(企鹅需要知道气候才迁移);聚合:空心四边形+实线+箭头(雁群和大雁的关系);合成/组合:实心四边形+实线+箭头(鸟和翅膀的关系);泛化/继承:空心三角形+实线(动物和鸟的继承关系);实现:空心三角形+虚线(实现大雁飞翔的接口);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. “大雁”和“雁群”这两个类。
大雁是群居动物,每只大雁都属于一个雁群,一个雁群可以有多只大雁。
建立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)。
一、某企业为了方便员工用餐,餐厅开发了一个订餐系统(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)采购员根据生产原料的使用情况判断采购用品,对需要订购产品信息统计订货的,并制作产品订单。
最后根据订单进行采
购活动。
–(2)仓库管理员负责产品的库存管理。
包括产品入库管理、处理盘点信息、处理报损产品信息和一些信息的设置。
这些设置信
息,包括:供应商信息、产品信息。
仓库管理员每天对产品进行一
次盘点,当发现库存产品有损坏时,及时处理报损信息。
当产品生
产后,将产品进行入库。
当产品销售后时,产品进行出库处理。
–(3)统计人员负责统计分析管理,包括:查询产品信息、查询销售信息、查询供应商信息、查询缺货信息、查询报表信息,并
制作报表。
统计分析员使用系统的统计分析功能,了解产品信息、
销售信息、供应商信息、库存信息。
–(4)在销售员为客户提供售货服务时,接受客户购买产品,根据系统的定价计算出产品的总价,客户付款,系统自动保存客户
购买记录。
–(5)系统管理员负责本系统的系统维护。
系统管理员负责员工信息管理、供货商信息管理以及系统维护等。
每种管理者都通过
自己的用户名称和密码登录到各自的管理系统中。
–。
实验四类图【实验目的】1.掌握类的定义,类的3要素,UML中类的表示方法。
2.掌握类与类之间的各种关系代表的含义及表示方法。
3.掌握实体类、边界类、控制类的概念和表示方法。
4.接口和抽象类的概念和表示方法,类的多重性关系。
【实验性质】设计性实验。
【实验要求】1.通过网上选课系统学习识别类和类之间关系的方法;2.学习使用Rational Rose绘制类图的方法;3.掌握类图中属性和操作的添加方法。
【实验内容】设计绘制选课系统中的类图和对象图。
【实验步骤】1.分析实验三中选课用例的顺序图,除了角色之外,有以下名词:课程,界面和控制对象。
从而抽象出三个类:课程类Course、界面类FormObject和控制对象类ControlObject。
2.课程类Course应具有的属性有:课程名称、开课教室、授课教师、选课的学生、开课起始时间、允许选课的学生人数,操作有设置课程名称、设置开课教师、设置课程号、设置授课教师信息、设置开课起始时间、设置允许选课的学生人数、查询课程名称、查询开课教师、查询授课教师信息、查询开课起始时间、查询允许选课的学生人数。
根据以上分析,绘制课程类Course的类图。
3.类似的,自己分析建立界面类FormObject和控制对象类ControlObject的类图。
4.在选课系统中,涉及到的用户包括Student(学生)和Registrar(管理员),其主要特性相似,所以可以建立统一基类People,Student和Registrar由People派生。
如下图所示:PeopleStudent (from Use Case View)Registrar (from Use Case View)5.在选课系统中涉及到的角色包括:(1)学生Student;(2)管理员Registrar;(3)学生和管理员的父类People;(4)数据库Database。
这些类和角色之间的关系如下:(1)角色Student和Register从People派生;(2)学生、管理员在与系统交互时,都有一个界面与之对应;(3)一个界面可能和课程相关(0-多门);(4)控制对象负责课程的处理,处理结果显示在界面上;(5)控制对象完成对数据库的操作;(6)界面请求控制对象的服务。
类图作业
1、画一个类的继承图,它描述两类公司的顾客:外部的顾客,他们属于其它公司;内部顾
客,他们是公司内部所有部门的顾客。
2、何时适合使用组合建模?请问为何不用UML组合表示法显示一只狗是由高度、重量、
颜色和出生日期构成的?
3、画一个具有下列结构的书的章节的对象聚集图:一章由若干小节组成,每个小节有若干
个段落和图组成。
段落由一些句子组成,每个句子包括一些词语。
这里忽略标点符号,且不用深入追究组成小节的图的结构。
参考答案
一、下图表示的是针对内部和外部顾客的类继承图。
这个结构种最有意思的部分是类图
Internal Customer,它从Corporate Division和Customer中多重继承。
二、组合建模可以只对重要的组成建模,如那些基于现实事物的物理构成(椅子等)。
其他
重要的组成用一些层描述,在那些成分对象本身是由其他成分对象组合的。
这里最好不要用组合来显示一只狗是由高度、重量、颜色和出生如期组合的,因为这些是狗的属性。
如果用组合来描述属性,所得的图就不会由大量稳定的值。
三、
上图显示了书的章节的一个可能的聚集结构。
对象聚集图显示了章是节的有序的集合。
段落和句子的结构与章的结构类似。
节的结构比较复杂,以为节是有段落和图混合构成的。
这里的设计方法是创建一个称为SectionComponent的类,从它继承了Paragraph和Picture两个类,即允许每个节的组成既可以是段落,又可以是图。
上图做了个假设:节只出现在一章中。
如果节可以出现在多章中,则关联的组成一端的多重性应该为1..n。
UML中类图真例之阳早格格创做交心:空心圆+曲线(唐老鸭类真止了‘道人话’);依好:真线+箭头(动物战气氛的闭系);闭联:真线+箭头(企鹅需要相识气候才迁移);散合:空心四边形+真线+箭头(雁群战大雁的闭系);合成/拉拢:真心四边形+真线+箭头(鸟战翅膀的闭系);泛化/继启:空心三角形+真线(动物战鸟的继启闭系);真止:空心三角形+真线(真止大雁飞翔的交心);UML类图阐明UML类图:1. 最先瞅“动物”矩形框,它代表一个类.该类图分为三层,第一层隐现类的称呼,如果是抽象类便要用斜体隐现.第二层是类的个性,常常便是字段战属性.第三层是类的收配,常常是要领战止为.注意前里的标记,‘+’表示public, ‘—’ 表示private, ‘#’表示protected.2. “飞翔”矩形框表示一个交心图,它取类图的辨别主假如顶端有《interface》隐现,第一止是交心称呼,第二止是交心要领.交心另有另一种表示要领,雅称棒棒糖表示法,便是唐老鸭类真止了“道人话”的交心.interface IFly interfaceIlanguage{ {void Fly(); void Speak();} }3. 动物,鸟,鸭,唐老鸭他们之间皆是继启的闭系,继启闭系用空心三角形+真止去表示.4.“大雁”真止了“飞翔”交心.真止交心用空心三角形+真线去表示.(注:底下的图中应为空心三角形)class Bird:Animal class WideGoose:IFly{ {//继启动物类 //真止飞翔交心} }5. 企鹅取气候有很大的闭系,企鹅需要“相识”气候的变更,需要“相识”气候顺序.当一个类“相识”另一个类时,不妨用闭联(association)闭系.闭联闭系用真线箭头去表示.class Penguin :Bird{private Climate climate;//正在企鹅Penguin中,引用到气候Climate对于象}6. “大雁”战“雁群”那二个类.大雁是群居动物,每只大雁皆属于一个雁群,一个雁群不妨有多只大雁.所以它们之间便谦脚散合(Aggregation)闭系.散合表示一种强的“拥有”闭系,体现的是A对于象不妨包罗B对于象,但是B对于象没有是A对于象的一部分.散合闭系用空心的菱形+ 真线箭头表示.class WideGooseAggregate{private WideGoose[] arrayWideGoose;//正在雁群WideGooseAggregate类中,有大雁数组对于象arrayWideGoose}7. “鸟”战“翅膀”那二个类.鸟战翅膀似完全战部分的闭系,而且翅膀战鸟的死命周期是相共的,正在那里鸟战其翅膀便是合成闭系.合成(composition)是一种强的“拥有”闭系,体现了庄重的部分战完全的闭系,部分战完全的死命周期一般.合成闭系用真心的的菱形+真线箭头去表示.其余,合成闭系的连线二端另有一个数字“1”战数字“2”,,那被称为基数.标明那一端的类不妨有几个真例,很隐然,一个鸟该当有二收翅膀.如果一个类大概有无数个真例,则便用“n”去表示.闭联闭系,散合闭系也不妨有基数的.class Bird{private Wing wing;public Bird(){wing=new Wing();//正在鸟Bird类中,初初化时,真例化翅膀Wing,它们之间共时死成}}8. “动物”、“氧气”取“火”之间.动物有几大个性,比圆有新陈代开,能繁殖.而动物要有死命,需要氧气,火以及食物等.也便是道动物依好于氧气战火.它们之间是依好闭系(Dependency),用真线箭头去表示.abstractclass Animal{public bolism(Oxygen oxygen,Water water){}}。