对象类图与对象图.ppt

上传人:tia****nde 文档编号:12793177 上传时间:2020-05-24 格式:PPT 页数:82 大小:4.37MB
返回 下载 相关 举报
对象类图与对象图.ppt_第1页
第1页 / 共82页
对象类图与对象图.ppt_第2页
第2页 / 共82页
对象类图与对象图.ppt_第3页
第3页 / 共82页
点击查看更多>>
资源描述
一、对象类图与对象图,UML中的对象类图(ClassDiagram)与对象图(ObjectDiagram)具有强大的表达能力,能够有效地对现实世界的业务领域和计算机系统建立可视化的对象模型。类图与对象图用来表达对象模型的静态结构。,1,对象类图(类图),类图表达一组类和它们之间的联系。描述各个对象类本身的组成,即类的属性、操作和对对象的约束条件等。描述系统中对象类之间的各种静态的联系。类图是一种静态结构图,它描述的是系统的静态结构,而不是系统的行为。类之间的静态联系主要类型有:关联、聚合、复合、继承、依赖等,2,一、对象类图示例,3,读卡机-卡号接收卡()弹出卡()读卡(),帐目-帐号-PIN-结余打开()取钱()-扣钱()-验钱数(),ATM屏幕提示()接收输入(),取钱机-结余提供兑现()提供收款(),ATM系统,主要内容,1.类的可视化表示2.类的发现3.类之间的关系4.语境5.接口与实现6.对象图7.类的高级概念8.类图的建立,4,1.1类名,类名:类名必须唯一,可以是简单名,也可以是路径名。如果用英文,则单词首字母大写,多单词合并写。,5,学生,学校:学生,学校,WashingMachine,包名在左,类名在右,中间用双冒号隔开。这种类型的类名叫:路径名(pathname)。,1.2属性1,属性:属性是类的一个特性。一个类可具有零个到多个属性;属性名必须唯一。类属性的表示:可视性属性名多重性:类型=初始值可视性:+公共#保护-私有多重性:说明该属性可取多少值。如:3,4,*,0.*,.等。(*表示任意非负整数)类型:属性值的数据类型。依赖于实现语言。=初始值:新建对象时该属性的初始值,6,1.2属性2,属性名如果用英文,一般头一个单词的首字母小写。,属性表示:,7,学生+姓名:string性别2:string-年龄:integer=18,WashingMachinebrandNamemodelNameserialNumbercapacity,指出下面属性名的含义?+studentName:String=“黎明”#studentBirthDay:Date=1999-10-21-price:Real=12.01R/W,8,StaticPartsofClasses,9,AnattributeoroperationismadestaticinUMLbyunderliningit;theaccountCounterattributewillbeusedtokeeparunningcountofthenumberofobjectscreatedfromtheBlogAccountclass,1.3操作1,操作:操作是类能够做的事或是能对类做的事情。一个类可具有零个到多个操作;操作名必须唯一。类操作的表示:可视性操作名(参数列表):返回列表参数列表:参数名1:类型=缺省值,参数名2:类型=缺省值,返回列表:规定了当该操作完成返回时的返回值的类型。(函数)格式返回名字1:类型,返回名字2:类型,操作的全部信息称为操作的型构。通常在设计阶段指明操作型构。型构对程序设计人员非常有用。(注意操作和方法的区别),10,1.3操作2,操作表示:,11,WashingMachingbrandNameaddClothes()+addDetergent(D:integer)removeClothes(C:string)turnOn():boolean,1.4构造,如果属性或操作太多,可以用构造型来组织属性或操作列表。,12,WashingMachinebrandNamemodelNameserialNumbercapacityaddClothes()addDetergent()removeClothes()turnOn(),1.5约束,是一个用花括号括起来的自由格式的文本。括号中的文本指定了该类所要满足的一个的或者多个规则。,13,WashingMachinebrandNamemodelNameserialNumbercapacityaddClothes().,capacity=16or18or20lb,1.6职责,职责用来描述类的属性和操作能完成的任务。在图标中,职责在操作区域下面的区域中说明。,14,WashingMachineResponsibility:Takedirtyclothesasinputandproducecleanclothesasoutput,1.7注释,注释给类添加了更多的信息,15,WashingMachinebrandNamemodelNameserialNumbercapacityaddClothes().,序列号的生成参考美国政府标准EV5-2241,1.8属主范围,属性:属主范围有两种实例:如果一个属性的属主范围是实例,则该类的每一个对象都有一个自己的该属性值。分类符:如果一个属性的属主范围是分类符,则对于该对象类本属性只有一个值,该类的每一个对象都持有此唯一的属性值。要在属性名下加下划线。操作:也有属主范围区分,含义与属性相同。对象的构造操作(构造函数)必须带有下划线,表示它的属主范围是分类符。,16,分类符-共享数据和共享操作,如何放置下列信息和服务:(1)储蓄账户的当前利率(2)计算给定年数的复合利息(3)二月份的天数(4)计算今年是否为闰年问题:把这些元素放在特定的对象中是否合适?浪费空间和时间。分类符:Java允许用关键字static表示元素与整个类相关,而不与类的实例相关。替代方法:(1)找出或引入另一种对象类,例如:引入Bank对象。(2)使用单一的类,这种类可确保只有一个实例(单一对象作为服务对象,客户对象不能创建服务对象)。,17,与Account类相关,与Calendar类相关,interestRate,1.9类的可视化表示,18,Circle,Circlecentreradiusarea()move()scale(),Circle-centre:float-radius:float+Circle()area():floatmove(location:Point)scale(ratio:float).,(a)概念层,(b)分析层,(c)实现层,2.类的发现1,同客户交谈,分析他们的领域知识。注意客户描述业务事件流中的名词术语,也要注意客户提到的动词。名词:可作为领域模型中的类或类中的属性。动词:可能会构成类中的操作。,19,候选类(名词)的快速删除,系统本身:系统只是开发过程的一个边界。参与者:边界匿名驱动力。混淆情况:内部需要存储参与者信息。边界:边界是允许参与者获得对象的特定软件。小类型:作为属性,可以假定这些由实现语言或它的库提供。如果不能给类写出简短的描述,就可能希望它表示更多的内容,此时应分解为多个类。,20,2.类的发现2,篮球比赛:比赛目标是要把篮球投入蓝框并且尽量比对手得更多的分。每个篮球队由5名队员组成:2名后卫、2名前锋和1名中锋。每个队要将球推进蓝框附近(通过运球和传球),目的将篮球投入蓝框(必须在规定的时间内投入,美国职业是24秒,国际是30秒,美国大学是35秒)。计算得分:三分线内得2分,线外得3分。对方犯规后在罚球线处罚球投入得1分。名词:篮球、蓝框、篮球队、队员、后卫、前锋、中锋、投入、进攻时间、三分线、罚球线、球场、比赛时钟等动词:投蓝、推进、运球、传球、犯规、.等,21,2.类的发现3,22,蓝球,队员,球队,后卫,前锋,三分线,蓝球场,罚球线,直径体积被运球()被投蓝()被传球()被推进(),姓名身高体重运球()传球()投蓝()拦板球().,主要做运球和传球,主要做抢蓝板球和中距离投蓝,中锋,靠近蓝框以便蓝下进攻,进攻时间,pro=24scollege=35sIntl=30s,蓝框,3.类的关系,1.关联:一种类型的对象与另一种类型对象的联系。多重性限定关联自身关联依赖2.聚合:强关联-一个类的实例有另一个类的实例构成。3.复合:强聚合-复合对象不能有其他对象共享,且与构成它的对象一起消亡。4.继承:子类继承了超类的所有属性和行为。在分析过程中,这些关系出现的频率为:关联聚合继承复合,23,24,UMLoffersfivedifferenttypesofclassrelationship,3.1关联1(association),关联:类之间在概念上的连接关系。表示法:关联线段、关联名、关联方向、角色、约束等,25,队员,球队,效力,雇员,雇主,队员,球队,球队,后卫,前锋,中锋,雇佣,效力,效力,二元关联,N元关联,3.1关联2,约束:用来说明关联的规则或含义,26,出纳,顾客,有序,高中生,对类的约束,专业课,商务课,选择,选择,or/xor,两个关联之间的约束,3.1关联多重性,多重性表示参与类关联的对象数,27,队员,球队,5,1,帐户,用户,密码,*,*,1,*,user,owner,key,人,单位,工作岗位聘用期工资.,聘用者,*,0.1,关联的方向,28,此类图中的关联代表什么含义?一个教师可以开设一到三门课,一门课程有一到多个教师教授。如果有有序约束呢?,29,3.1关联3,关联类:关联也可以有自己的属性和操作。表示方式与类相同,用一条虚线与关联线相连。,30,队员,球队,契约,总经理,效力,谈判,31,顾客,供应商,商品,订货商品编号商品名单价数量总价日期,*,*,*,对象类N元关联示例,3.1关联限定关联,限定关联是一个用来解决查找问题的关联。在关联端紧靠源对象类可以有限定符,包含在小矩形框内,代表被关联对象类一个或多个属性的列表。,32,职员,预订房,房间许可号,找出,1,*,3.1关联自身关联,自身关联又称为递归关联,是一个对象类与本身的关联,即一个类中的对象之间的联系。,33,职务职责薪水,工作人员,经理,1,*,管理,轿车上的人员,1,driver,0.4,passenger,Drives,3.1关联依赖,依赖:一个类使用了另一个类的关系。表示:一条虚箭线连接有依赖关系的两个类,箭头指向被依赖的类(称为供应者),依赖类称为客户。依赖可以加上构造型,常用的构造型有、等。,34,SystemdisplayForm(f:Form),Form,3.2聚合,聚合:类之间整体和部分弱关系。称为“has-a”联系。整体类被删除,部分体类还存在。表示方式:在关联线的整体端加上一个空心菱形。,35,套餐,汤,沙拉,主食,甜点,1,1,1,1,1,xor,3.3复合,36,咖啡桌,桌面,桌腿,1,4,1,复合:类之间整体和部分强关系。称为“contains-a”联系。整体类被删除,部分体类不存在。表示方式:在关联线的整体端加上一个实心菱形。,3.4继承,继承是现实世界中实体之间一般与特殊的关系。从编程的观点来看,需要继承是因为:它支持更丰富、更强大的建模。这有利于开发小组和其他想重用代码的开发人员。它可以在一个类中定义信息和行为,在相关的子类中共享这些定义。这样编写的代码比较少。继承是很自然的。它是面向对象的主要动机之一。表示格式:用父类到子类之间的连线表示继承关系,在父类的一端带有空心三角形。这种连接的语义为isakindof。,37,一般性元素,特殊性元素,38,陆地交通工具建模,LandVehicletopSpeed:floatgetTopSpeed():floatsetTopSpeed(:float),CarmilesPerGallon:floatgetMilesPerGallon():floatsetMilesPerGallon(:float),BicyclenumberOfGears:intgetNmberOfGears():intsetNumberOfGears(:int),TruckaxleWeight:floatgetAxleWeight():floatsetAxleWeight(:float),在分析问题论域时,要找出继承关系,并抽象类。,39,队员姓名.运球()传球().,后卫,前锋,中锋,单门课,数学课,毕业设计,公共课,实践课,专业课,理论课,40,人,学生,教师,人,学生,教师,对象类的继承表示,课堂练习,1、举出一个具有聚合关系的类图的例子。2、举出一个具有组合关系的类图的例子。,41,42,43,3.4继承-设计类的层次结构,例子:给集合(Collection)建模。集合是可以包含其它对象的对象。四类集合:Bag:该集合中的对象没有顺序。List:该集合可以把所有的对象按照插入的顺序放置。LinkedList:该集合中的对象使用链表来排序。链表很容易更新,但访问速度慢,因为必须沿着链表向下搜索。ArrayList:该集合中的对象使用数组来排序。数组访问速度快,但更新比较慢,因为在每次更新时,必须移动元素。问题:如何把这4个子类和Collection放在继承的层次结构中?关键要找出类似之处。,44,45,Collection,Bag,List,ArrayList,LinkedList,无序,不涉及内部实现,涉及实现(空间和时间折中方案),这个过程是在已知所有类的情况下建立层次结构,实际情况:首先确定层次结构底部有哪些类,接着找出比较一般的概念,以丰富模型,共享元素的定义。,考虑下面三个消息(操作),将它们放入集合类的层次结构中:1.contains(:Object):boolean-在集合中搜寻对象,找到,返回true,否则返回false。2.numberOfElements():int-返回集合中的对象数。3.elementAt(:int):Object-在参数指定的位置检索对象。把这些消息放在已有类的什么地方?,46,Collection,Bag,List,ArrayList,LinkedList,可以用于任何种类的集合,位置作为参数,所以必须处理有顺序的对象,contains(:Object):booleannumberOfElements():int,elementAt(:int):Object,斜体表示还没有考虑方法,实现-抽象和重定义,不能在Collection类中编写contains方法,因为有序和无序集合搜索算法不同。因此,对Bag和List分别实现contains方法。List的contains算法:1booleancontains(Objecto)2for(inti=0;i,或用一个小圆表示,接口名标在圆旁边。,65,接口名操作名,接口名,66,CapturinganinterfacetoanEmailSystemusingthestereotypeandballUMLnotation;unlikeabstractclasses,aninterfacedoesnothavetoshowthatitsoperationsarenotimplemented,soitdoesnthavetouseitalics,TheSMTPMailSystemclassimplements,orrealizes,alloftheoperationsspecifiedontheEmailSysteminterface,5.接口和实现2,实现:接口与提供在接口中定义的全部操作方法的对象类形成一个实现联系,是一种虚泛化联系。表示方法:用带空心的三角箭头的虚箭线表示(虚泛化符),箭头指向接口。或用实线与小圆表示的接口相连。,67,实现类,接口名,实现类,接口名,68,SecurityImp.checkID(id:Int):BoolcheckPassword(pass:string):Bool.,系统其它类,问题:如果改变这个方法的工作方式或把C+安全类换成Java安全类,则会影响整个系统。,系统其它类,安全检查例子,SecurityImp.checkID(id:Int):BoolcheckPassword(pass:string):Bool.,SecurityImp,6.对象图,对象图(ObjectDiagram)表示一组对象和它们之间的联系。对象是类的一个实例,对象之间的链接是其所属联系的一个实例,对象图是类图的一个实例。对象图有时也称为实例图(InstanceDiagram)但它们所表达的内容、含义和侧重点有所不同的。对象图的使用相当有限,它主要用来表达数据结构的示例,以及了解系统在某个特定时刻的具体状况。,69,70,公司,部门部门名:string,员工编号:integer姓名:string职务:string取员工号()取员工名()取联系信息(),联系地址地址:string,C1:公司,D1:部门部门名=“销售部”,D2:部门部门名=“研发部”,D3:部门部门名=“国内部”,P1:员工编号=2姓名=“张三”职务=“销售经理”,:联系信息地址=“和平路”,*,1.*,1,1,1,1.*,1,0.1,subset,成员,经理,D4:部门部门名=“国外部”,.,7.1类的高级概念参数对象类,参数对象类(ParameterizedClass)又称为对象类模板,是带有形式参数的类的描述符,它定义了一个类的家族。在参数类中属性和操作都可以是形式参数来定义的(参数通常代表属性类型)。参数类是不能直接使用的类,只有通过把参数类的形式参数绑定到实在参数时才得到一个类。绑定的类不能扩充参数类,即不能增加属性和操作。表示方式:在类矩形框右上角挂一个小虚线框,框中标有生成具体类所须指定指的参数。右上角虚线框中的“T”是一个分类,它说明这个类是创建其它类的模板。,71,T,7.1参数对象类1,72,生物类名称:string高度:integer体重:integer,T,种:string,属:string,人,(人,智人,人类),生物,智人-种种=“智人”人类-属或属=“人类”人-TT=“人”,7.1参数对象类2,73,设置insert(p,q)remove(p,q),T,p:integer,q:integer,职务表,(职务表,代号,工资),设置,职务表insert(代号,工资)remove(代号,工资),8.1类图的建立,建立对象类图的一般步骤:1.研究分析问题领域,确定系统需求。2.发现对象与对象类,明确它们的含义和责任,确定属性和操作。3.发现类之间的静态联系。着重分析找出对象类之间的一般与特殊关系、部分与整体关系,研究类的继承性与多态性。把类之间的静态联系用关联、继承、聚合、复合、依赖等联系表达出来。4.设计类与联系。调整和精化已得到的对象类和类之间的联系,解决诸如命名冲突、功能重复等问题。5.绘制对象类图并编制相应的说明。,74,8.3项目与资源管理系统PRMS1,75,项目,活动,任务,资源,PRMS系统的高层项目管理对象类图,*,*,1.*,1,1.*,1,8.3项目与资源管理系统PRMS2,76,技能,资源,月薪工,计时工,PRMS的高层资源管理对象类图,*,*,资源-技能,77,技能-name:string-desc:string+create():技能+setName(name:string)+getName():string+setDesc(dect:string)+getDesc():string+destroy(),资源-技能-prof:enumExpert,Novice-yearsExpr:real+create():资源-技能+setProf(prof:enumExpert,Novice)+getProf:enumExpert,Novice+setYearsExpr(yearsExpr:real)+getYearsExpr:real+destroy(),资源-name:string+create():资源+setName(name:string)+getName():string+destroy(),月薪工-salary:real+create():月薪工+setSalary(salare:real)+getSalary():real+destroy(),计时工-rate:real+create():计时工+setRate(salare:real)+getRate():real+destroy(),PRMS的详细资源管理对象类图,*,*,78,教学管理系统开发:项目name=教学管理系统desc=工程项目startDate=2002/1/10,确定范围:活动number=1desc=确定项目范围startDate=2002/1/10hours=80deliverable=范围文档,分析设计:活动number=2desc=分析与设计startDate=2002/2/8hours=80deliverable=分析/设计文档,实现:活动number=3desc=实现startDate=2002/3/9hours=100deliverable=系统,考察:任务number=1desc=考察现有业务startDate=2002/1/10hours=40resourceId=2,分析:任务number=1desc=需求分析startDate=2002/2/8hours=40resourceId=2,范围:任务number=2desc=确定系统范围startDate=2002/1/27hours=40resourceId=1,设计:任务number=2desc=设计解决方案startDate=2002/2/16hours=40resourceId=3,测试:任务number=2desc=测试解决方案startDate=2002/3/16hours=40resourceId=3,编码:任务number=1desc=解决编码方案startDate=2002/3/9hours=40resourceId=2,试用:任务number=3desc=试用解决方案startDate=2002/4/1hours=20resourceId=3,PRMS的一个对象图,8.2类图的建立,1.设计一组几何对象类图。组中父类为“几何单项”,由之衍生“线”、“圆”、“方”,“椭圆”、“多边形”、“点”等类。,79,几何单项,多边形,圆,矩形,椭圆,线,点,80,几何单项,多边形,圆,矩形,椭圆,线,点,1,1.*,有序,81,Engine,Wheel,Body,Driver,Passenger,Car,1,1,1.n,n,1,0.7,1,1,4.5,1,0.7,n,1,1,1.如图所示,Car和Engine之间的关系最可能的实现是什么:(a)一个字段,其类型是Car,在Engine中。(b)一个类CarEngine,它有一个Car类型的字段和一个Engine类型的字段。(c)一个字段,其类型为Engine,在Car中。(d)一个字段,其类型为Engine,在Car中;一个字段,其类型是Car,在Engine中。2.下面哪些陈述是正确的?(a)汽车总是有唯一的车身。(b)一些汽车有备用轮胎。(c)汽车有一个引擎,引擎在汽车之间可共享。(d)所有的汽车都有四或五个轮胎。(e)汽车必须至少有一个司机。(f)乘客不可能是司机。,二义性:一位乘客只能在某辆特定的汽车上?一位乘客在某一时刻只能在一辆汽车上?,作业,建立杂志类的组成语境图。要考虑到杂志中的目录、社论、一般文章、专栏。建立一个系统语境图。图中要展示出杂志类与订阅者类和普通购买者类之间的关系。为你的居住地对象绘制一个层次结构图,要包括必要的继承关系和抽象类。为你在学校所学过的所有科目和课程建立继承层次。要包括依赖关系(某些课程要求有先修课程)。,82,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!