第2章面向对象与UML(2学时)_第1页
第2章面向对象与UML(2学时)_第2页
第2章面向对象与UML(2学时)_第3页
第2章面向对象与UML(2学时)_第4页
第2章面向对象与UML(2学时)_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2023/2/51

面向对象与UML上讲回顾UML的三位创始人分别是?UML于哪年被OMG组织正式批准?是什么版本?请说出UML是一种什么样的语言?请说出一种4+1观点分别是什么?你现在能说出几种UML图?2023/2/522023/2/53一些面向对象的概念1UML组成2本讲主要内容2.3公共机制2.2规则2.1构造块2023/2/54一些面向对象的概念1UML组成2当前正在讲述……2.3公共机制2.2规则2.1构造块2023/2/55无处不在的对象类类是加工小甜饼的模子可以用类压出许多新的小甜饼对象世界由对象而构成。对象无处不在。考虑到的属性和行为越多,所建立的模型就越符合实际。真正制造洗衣机的工程师普通人群2023/2/56继承(Inheritance)一些权威人士认为:抽象对于建模者来说是最重要的技术。我们应该弄清楚什么应该纳入模型中,什么应该舍去。家用商品家用电器家具家用电器2023/2/57封装(Encapsulation)当一个对象执行自己的操作时,它对外隐蔽了操作的细节。爆米花是怎么炸出来的?关心这个干吗?2023/2/58多态(Polymorphism['pɔli'mɔ:fizəm])不同的类具有相同名称的操作,每个类都能够知道如何执行自己的操作。2023/2/59一些面向对象的概念1UML组成22.3公共机制2.2规则2.1构造块当前正在讲述……UML构造块公共机制事物关系规则规格描述修饰公共分类扩展机制对模型中最具有代表性的成分的抽象把事物结合在一起聚集了相关的事物(类图,构件图,部署图,对象图,用例图,顺序图,协作图,状态图,活动图)UML组成图一个结构良好的模型所应该遵循的有一套贯穿整个语言且一致应用的公共机制,使得UML变得较为简单,且风格(建筑)一致。2023/2/511一些面向对象的概念1UML组成22.3公共机制2.2规则2.1构造块-事物当前正在讲述……注释2023/2/512UML构造块——(1)事物

代表面向对象中的类,对象等概念,是构成图的最基本的常用的元素。一个模型元素可以用于多个不同的图中。注释类和对象类是对一组具有相同属性、相同操作、相同关系和相同语义的对象的抽象UML中类是用一个矩形表示的,它包含三个区域,最上面是类名、中间是类的属性、最下面是类的方法对象则是类的一个实例2023/2/514类的可视化表示——属性图3.4类和类的属性图3.6属性可以带类型和缺省值2023/2/515类的可视化表示——操作图3.7类的操作放在属性列表之下,并用一条分割线与属性隔开图3.8操作的型构图3.10省略符号说明还有没列出来的属性或操作接口接口是描述某个类或构件的一个服务操作集用例用例是著名的大师IvarJacobson首先提出的,现已经成为了面向对象软件开发中一个需求分析的最常用工具用例——系统的一个功能:系统的一组使用场景、执行的一系列动作。UseCase构件在实际的软件系统中,有许多要比“类”更大的实体,例如一个COM组件、一个DLL文件、一个JavaBeans、一个执行文件等等。为了更好地对在UML模型中对它们进行表示,就引入了构件(也译为组件)构件是系统设计的一个模块化部分,它隐藏了内部的实现,对外提供了一组外部接口。在系统中满足相同接口的组件可以自由地替换构件节点为了能够有效地对部署的结构进行建模,UML引入了节点这一概念,它可以用来描述实际的PC机、打印机、服务器等软件运行的基础硬件节点是运行时存在的物理元素,它表示了一种可计算的资源,通常至少有存储空间和处理能力包对于一个中大型的软件系统而言,通常会包含大量的类,因此也就会存在大量的结构事物、行为事物,为了能够更加有效地对其进行整合,生成或简或繁、或宏观或微观的模型,就需要对其进行分组。在UML中,提供了“包(Package)”来完成这一目标注释元素注释事物则是用来锦上添花的,它是用来在UML模型上添加适当的解释部分

注释2023/2/523注释元素(续)图3.14附加的注释可以提供有关类的更多信息2023/2/524一些面向对象的概念1UML组成22.3公共机制2.2规则2.1构造块-关系当前正在讲述……2023/2/525关联:连接(connect)模型元素及链接(link)实例。依赖:表示一个事物以某种方式依赖于另一种事物。泛化:表示一般与特殊的关系,即“一般”元素是“特殊”关系的泛化。聚合、组合:表示整体与部分的关系。UML构造块——(2)关系事物之间的关系。2023/2/526关联:连接(connect)模型元素。依赖:表示一个事物以某种方式依赖于另一种事物。泛化:表示一般与特殊的关系。聚合、组合:表示整体与部分的关系。(二)关系事物之间的关系。2023/2/527(1)关联(Associations)classmatefriend对象之间以某种方式发生关联当Susan打开电视机时,她与TV之间就发生了单向关联Turnon对象之间也可以以多种方式发生关联妞妞与丫丫既是同学也是好朋友28定义:当类之间在概念上有连接关系时,类之间的连接叫做关联。PersonCompanyworksforemployeeemployer角色角色*1多重性多重性关联关系描述(1)关联(Associations)Tip:关联(Association)表示两个类之间存在某种语义上的联系。关联关系提供了通信的路径,它是所有关系中最通用、语义最弱的。使用一条实线来表示关联关系。方向TeacherStudentsteaches单向双向(1)关联—方向(Navigation)PlayerTeamPlaysonEmployeeemployeeemployer图4.3两个类之间的不同关联可以表示在一幅图中队员和球队之间的关联PublicclassUser

{

PublicList<Order>GetOrder()

{

returnnewList<Order>();}

}

PublicClassOrder

{

PublicUserGetUserByOrderID(stringOrderId)

{

ReturnnewUser();

}

}(1)关联—方向(Navigation)练习:请描述如下User类与Order类之间关联的方向。OrderUserBelongstoowns1..*12023/2/531(1)关联—多重性(multiplicity)PersonBusRidesin11CarRidesin11rideride一个类可以和多个类关联2023/2/532(1)关联—多重性(multiplicity)BasketballTeam1多个类可以和同一个类关联TeamForwardPlaysonPlaysonCenterPlaysonGuard关系——多重性多重性Howtoexplainmultiplicity?2023/2/533特定数字

CarEnginehas11TeacherStudentteaches1*TricycleWheelhas13多重性及UML表示法可能的关联表示:特定数字/非特定数字/特定范围/枚举

非特定数字*定义:多重性(multiplicity),即一个类的单个对象和另一个类的多个对象关联。表示多重性的方法是在参与关联的类附近的关联线上注明多重性数值。“0..*”或“*”:表示“0”或“多”;“1..*”:表示“1或多”;特定范围m..nFullTimeStudentCreditHourtakes112..18EggBoxEggholds112,24多重性及UML表示法BankTellerCustomerserves11..*HouseChinmeyhas10..1枚举,orHowtoReadit?练习:我们经常去图书馆借书,那么图书与学生之间关系的多重性应该如何表示?对于这幅图这个双向关联我们应该怎么去读它?BookStudentborrowedtoborrow0..7

*(2)关联—依赖(Dependencies)思考:请列举程序中存在依赖关系的例子。有两个元素X、Y,如果修改元素X的定义可能会引起对另一个元素Y的定义的修改,则称元素Y依赖(Dependency)于元素X。对于类间关系而言,Dependency(依赖关系)表示一个类依赖于另一个类的定义,其中一个类的变化将影响另外一个类。关系——依赖2023/2/539(2)关联——依赖ClassAVar1:longFunction1()Function2()Function3(para:ClassB)ClassBField1:StringOperation1()Operation2()局部变量静态方法方法的参数ClassA{publicvoidFunction1(){ClassBb=newClassB();b.Operation1(); deleteb;}}voidFunction2(){ClassB.Operation2();}PublicvoidFunction3(ClassBpara){Strings=para.field1;}类之间常见的依赖关系如下:类B以局部变量的形式存在于类A的方法中类B以参数的形式传入类A的方法类A调用类B的静态方法关系——依赖2023/2/540(3)关联——聚合组合在关联关系中,有两种比较特殊的关系:聚合和组合2023/2/542(3)关联—聚合(Aggregation)一个典型的计算机系统就是聚集的一个例子——它由许多不同类型的对象组合而成的。聚合关系:聚合(Aggregation)是一种特殊形式的关联。聚合表示类之间的关系是整体与部分的关系。计算机计算机机箱显示器键盘鼠标音箱2023/2/543(3)关联—组合(Composition)在组成体中,部分体有时可能会先于组成体消亡,如果组成体被销毁,则部分体随组成体一同被销毁组合关系:Composition。组合是聚合的变种,加入了一些重要的语义。如果发现“部分”类的存在,是完全依赖于“整体”类的,那么就应该使用“组合”关系来描述。树树叶树枝树根聚合与组合The"nosharing"ruleisthekeytocomposition.Anotherassumptionisthatifyoudeletethewhole,itshouldautomaticallyensurethatanyownedpartsalsoaredeleted.2023/2/544计算机机箱显示器键盘鼠标音箱树树叶树枝树根练习:俱乐部与会员、汽车与轮胎、多边形与点。Window窗体由滑动条slider、头部Header和工作区Panel组合而成。(3)关联——聚合组合1

4汽车轮胎Windows窗体PanelHeaderSlider1*ClubPerson1

3..*PolygonPoint聚合与组合Aggregationisthepart-ofrelationship.The"nosharing"ruleisthekeytocomposition.Anotherassumptionisthatifyoudeletethewhole,itshouldautomaticallyensurethatanyownedpartsalsoaredeleted.2023/2/546三种关联的比较特征正常关联聚集组合UML标记实线空心菱形实心菱形拥有关系无弱强传递性无有有传递方向无整体到部分整体到部分关系——比较2023/2/548(3)关联关系——聚合ClassAb:ClassBFunction()ClassBField1:StringOperation1()Operation2()A包含有B的全局对象ClassClassA{ PrivateClassB*b;publicFunction(){b=newClassB();}}B在合适的时机创建ClassAhasaClassB,notcomposedbyClassB.是一种弱的拥有关系,体现的是A对象可以包含B对象,但B对象不是A对象的组成部分。Aggregation(聚合关系)是一种弱的“拥有”关系。2023/2/549(3)关联关系——组合ClassAb1:ClassBb2:ClassBClassA()ClassBField1:StringOperation1()Operation2()A包含有B的全局对象ClassClassA{ PrivateClassBb1,b2; publicClassA(){b1=newClassB();b2=newClassB();}}ClassAhasaClassB,andcomposedbyClassB.是一种强的拥有关系,体现了严格的部分和整体的关系,部分和整体的生命周期一致。Composition(组合关系)是一种强的“拥有”关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。2023/2/550(4)继承和泛化图4.14动物王国的继承关系泛化关系描述了一般事物与该事物中的特殊种类之间的关系,也就是父类与子类之间的关系。猴子狮子虎猎豹猫鸟动物猴子狮子虎猎豹猫鸟动物2023/2/551抽象类——指没有实例的类,定义一些抽象的操作,即不提供实现方法的操作,只提供操作的特征。并附以{abstract}。交叠泛化——在继承树中,若存在某种具有公共父类的多重继承,称为是交叠{overlapping}的。否则是不交的{disjoint}。完全泛化——一般类特化出它所有的子类,称为完全泛化,记为{complete}。不完全泛化——即未特化出它所有的子类,称为是不完全泛化的,表示为{incomplete}.继承与泛化{complete}PersonFemaleMale性别完全泛化{overlapping}交通工具交叠泛化汽车船水陆两栖车{incomplete}(4)继承和泛化{abstract}有关泛化的约束(4)继承和泛化{complete}{incomplete}{incomplete}请解释如下这幅图的涵义其他关联2023/2/5552023/2/556(1)关联上的约束

(ConstraintsonAssociations)图4.5可以对关联施加约束。在这个例子中,Serves关联上的{ordered}约束说明银行出纳员要按照顾客排队的次序为顾客服务图4.6表示两个关联之间的{or}约束2023/2/557(2)关联类

(AssociationClasses)图4.7关联类对关联的属性和操作建模。它与所对应的关联线之间通过虚线连接起来,并且还可以和其他类关联用户工作站

授权**授权优先级特权开始一个时间片关联类(2)关联类Associationclassesallowyoutoaddattributes,operations,andotherfeaturestoassociations2023/2/558(2)关联类WhatbenefitdoyougainwiththeassociationclasstoOffsettheextranotationyouhavetoremember?Theassociationclassaddsanextraconstraint,inthattherecanbeonlyoneinstanceoftheassociationclassbetweenanytwoparticipatingobjects.2023/2/559(2)关联类当它作为一个完全的类时,将不再具有一个潜在的约束:Person与Meeting之间一对一的关系。2023/2/560(2)关联类YoucanhaveonlyonecompetencyforeachcombinationofPersonandSkill.ThetopdiagraminFigure5.14wouldnotallowaCompanytohavemorethanoneRoleonasingleContract.

SoWeshoulddesignroleasafullclass.2023/2/5612023/2/562两个以上的类之间也可以互相关联。(2)关联类

(AssociationClasses)2023/2/563(3)链

(Links)图4.8链是关联的实例。链连接的是对象而不是类。和对象名要加下划线一样,链名也要加下划线例如:特定的队员效力一个特定的球队2023/2/564(4)限定关联

(QualifiedAssociations)图4.11房间预订列表和它所包含的预订登记之间具有“一对多”多重性图4.12UML的限定符图标,当你使用它时,你限定了一种关联*当关联的多重性是一对多时,产生查找问题。一个类必须要依赖一个具体的属性值来找到正确的对象。这通常是一个标识符号——限定符(qualifier)。2023/2/565(5)自身关联

(ReflexiveAssociations)

图4.13自身关联的关联线从某个类出发又回到其自身。自身关联也可以指明角色名、关联名、关联方向和多重性一个类的对象可以充当多种角色时,自身关联就可能发生。人治疗病人医生带有职责的递归关联2023/2/566一些面向对象的概念1UML组成22.3公共机制2.2规则2.1构造块-图当前正在讲述……2023/2/567一些面向对象的概念1UML组成22.3公共机制2.2规则2.1构造块当前正在讲述……2023/2/5命名

为事物、关系和图起名范围

给一个名称以特定含义的语境可见性

怎样让其他人使用或者看见名称完整性

事物如何正确、一致的相互联系执行

运行或模拟动态模型的含义是什么UML基本组成——规则一个结构良好的模型应该遵循的规则。2023/2/569一些面向对象的概念1UML组成22.3公共机制2.2规则2.1构造块当前正在讲述……UML公共机制规格说明构造块语法及语义的文字叙述,及描述系统的细节修饰基本图形符号的修饰:+,-,#,斜体等。通用划分类与对象之二分接口与实现之分离扩展机制非闭合语言,可扩展UML有一套贯穿整个语言且一致应用的公共机制,使得UML变得较为简单,且建筑风格一致。UML公共机制——扩展机制优秀的扩展机制。防止UML变得过于复杂,实现必要的扩展和调整。构造型:在实际的建模过程中,可能会需要定义一些特定于某个领域或某个系统的构造块标记值:则是用来为事物添加新特性的。标记值的表示方法

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论