面向对象设计类图设计_第1页
面向对象设计类图设计_第2页
面向对象设计类图设计_第3页
面向对象设计类图设计_第4页
面向对象设计类图设计_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

面向对象设计类图设计2023/5/81第1页,共55页,2023年,2月20日,星期四主要内容类相关的基本概念使用UML的类图设计类图设计的一些问题分析继承关系的分析对象持久化-与E-R模型的映射类设计相关的一些设计模式类图设计应用-信息模型建模过程及方法2023/5/82第2页,共55页,2023年,2月20日,星期四类相关的基本概念迎接挑战,共创成功!2023/5/83第3页,共55页,2023年,2月20日,星期四对象和类对象(Object):对象是指某个事物,大多对应于真实世界中的某个客观实体;但有些对象在真实世界中没有直接的对应物,是人们对某个事物的一种抽象描述。对象的基本特征可以归纳为对象的属性和行为两类。类(Class):类是指对一组具有相同特征的对象的抽象描述;任何对象都是某个类的实例。2023/5/84第4页,共55页,2023年,2月20日,星期四例:客户类的表示客户姓名单位电话Email客户姓名单位电话Email客户付款(金额)客户付款(金额)2023/5/85第5页,共55页,2023年,2月20日,星期四类图和对象图类图描述系统中的类及其相互之间的各种关系,反映了系统中包含的各种对象的类型以及对象间的各种静态关系,主要是:关联和子类型。类图也可描述类的属性和行为以及对模型中各种成分的约束。对象图是类图的实例,描述系统中各种对象(类的实例)以及对象之间的各种静态关系。2023/5/86第6页,共55页,2023年,2月20日,星期四使用UML的类图设计迎接挑战,共创成功!2023/5/87第7页,共55页,2023年,2月20日,星期四使用UML的类图设计类设计的相关UML元素类属性操作接口关联聚合继承(泛化)包的使用2023/5/88第8页,共55页,2023年,2月20日,星期四类实体名称实体方法可见性实体属性类是对同一种类型的对象的抽象表示2023/5/89第9页,共55页,2023年,2月20日,星期四属性UML规定其语法为:可见性名称:类型=缺省值{约束特性}描述属性的元素可见性:表示该属性对类外的元素是否可见。常用的有公有、受保护和私有三种。名称:属性的名称,是一个字符串。类型:定义属性的种类(基本数据类型或用户自定义的类型)。缺省值:属性的初始值。约束特性:描述对属性的约束。2023/5/810第10页,共55页,2023年,2月20日,星期四操作UML规定其语法为可见性名称(参数表):返回类型表达式{约束特性}描述操作的元素可见性:“+”表示公有操作,“#”表示受保护的操作,“-”表示私有操作。名称:操作的名称,是一个字符串。参数表:其语法与属性的参数相同,参数个数是任意的。返回类型表达式(可选项):依赖于语言的描述。约束特性:用以描述对此操作的约束。2023/5/811第11页,共55页,2023年,2月20日,星期四可见性对“Public”、Private”和“Protected”等三个可见性标识符的含义,各种语言都有它自己的规定。UML的定义是:+(Public):公有成员在程序的任何位置都是可见的,系统中的任何对象都可以使用它。-(Private):私有成员仅可以由定义它的类使用。#(Protected):受保护的成员仅可以由定义它的类和该类的子类中的对象使用。2023/5/812第12页,共55页,2023年,2月20日,星期四接口接口和类不同:一个类可以有它形态的真实实例,然而一个接口必须至少有一个类来实现它。2023/5/813第13页,共55页,2023年,2月20日,星期四关联关联用于描述类之间的关系每个关联有两个角色。例如,对于客户和订单之间的关联是:客户和订单。关联名称关联基数(Cardinality)关联基数(Cardinality)关联实体,描述关联的属性、方法2023/5/814第14页,共55页,2023年,2月20日,星期四关联的分类双向关联单向关联关联类聚合基本聚合组合聚合自关联(反射关联)2023/5/815第15页,共55页,2023年,2月20日,星期四双向关联关联是两个类间的联接。在Rose中关联总是被假定是双向的;这意味着,两个类彼此知道它们间的联系,除非你限定一些其它类型的关联。2023/5/816第16页,共55页,2023年,2月20日,星期四单向关联在一个单向关联中,两个类是相关的,但是只有一个类知道这种联系的存在。下图显示单向关联的透支财务报告的一个实例。2023/5/817第17页,共55页,2023年,2月20日,星期四关联类在关联建模中,在一些情况下,需要包括其它类,因为它包含了关于关联的有价值的信息。对于这种情况,需要使用关联类来绑定你的基本关联。关联类和一般类一样表示。不同的是,主类和关联类之间用一条相交的点线连接。2023/5/818第18页,共55页,2023年,2月20日,星期四自关联类自身的关联,当一个类关联到它本身时,这并不意味着类的实例与它本身相关,而是类的一个实例与类的另一个实例相关。2023/5/819第19页,共55页,2023年,2月20日,星期四聚合聚合是一种特别类型的关联,用于描述“总体到局部”的关系。聚合分为两种类型:基本聚合、组合聚合基本聚合在基本聚合关系中,部分类的生命周期独立于整体类的生命周期。组合聚合在组合聚合关系中,部分类的生命周期依赖于整体类的生命周期。2023/5/820第20页,共55页,2023年,2月20日,星期四继承在面向对象的设计中一个非常重要的概念,继承,指的是一个类(子类)继承另外的一个类(超类)的属性和方法,并增加它自己的属性和方法,或者覆盖父类的属性和方法类名BankAccount和withdrawal操作使用斜体。这表示,BankAccount类是一个抽象类,而withdrawal方法是抽象的操作。换句话说,BankAccount类使用withdrawal规定抽象操作,并且CheckingAccount和SavingsAccount两个子类都分别地执行它们各自版本的操作。然而,超类(父类)不一定要是抽象类。标准类作为超类是正常的。2023/5/821第21页,共55页,2023年,2月20日,星期四泛化(Generalization)泛化(Generalization):抽象化特化(Specialization):实例化继承(Inheritance):泛化关系的一种实现机制2023/5/822第22页,共55页,2023年,2月20日,星期四继承与泛化继承是实现泛化的一种机制。在这种机制中,超类的任何一个子类都须具有其超类的所有行为:不仅要求其操作界面在文法上一致,而且要求其行为在语义上一致。当子类中的一个操作重载其超类中相应的操作时,必须确保它提供与超类中的操作相同的服务(内容可以更多或更具体)。如没有证明子类的行为是否与父类相同,就试图用继承来实现新类中的行为,当两者不一致时,会导致难以预测的错误。2023/5/823第23页,共55页,2023年,2月20日,星期四包的引入大系统将问题复杂化。“攻克”复杂问题的经典方法是“分而治之”。结构化方法采用功能分解来解决这个问题,但传统的结构化方法将过程与数据分离。面向对象技术解决这个问题的基本思路是将许多类集合成一个高内聚、低耦合的类的集合。UML把这种分组机制称为包。不仅类可以运用包的机制,任何模型元素都可运用包的机制。2023/5/824第24页,共55页,2023年,2月20日,星期四类关系中的依赖性UML指导将类组成包的原则是依赖性:设有两个元素X、Y,如果修改(语法的或语义的)元素X的定义引起对元素Y的定义的修改,则称元素Y依赖于元素X。类之间的依赖关系:CinheritsfromRAvariableinCisofclassRAmethodofCreceivesanargumentofclassRAmethodofCsendsamessagethatreturnsanargumentofclassRAmethodofChasalocalvariableofclassRCisa“friend”ofR2023/5/825第25页,共55页,2023年,2月20日,星期四包图关系中的依赖性包图显示类的包以及这些包之间的依赖关系。它们都是类图中的元素,因此包图是另一种类图。如果两个包中的任意两个类之间存在依赖关系,则这两个包之间存在依赖关系。但包的依赖是不传递的。如图示,订单获取应用包屏蔽了订单包的变化对订单获取界面包的影响。2023/5/826第26页,共55页,2023年,2月20日,星期四类图设计的几点建议在项目初始阶段,不要使用所有的符号,应从简单的概念开始。不同的开发阶段应用不同的观点画类图:分析阶段用概念层类图;设计阶段用设计层类图。不要为每个事物都画一个模型,应把精力放在关键的领域,画几张较为关键的图,经常使用,不断更新。使用类图的最大危险是过早地陷入实现的细节,应将重点放在概念层。2023/5/827第27页,共55页,2023年,2月20日,星期四类图设计的一些问题分析迎接挑战,共创成功!2023/5/828第28页,共55页,2023年,2月20日,星期四内容提要使用继承的一些问题分析对象的持久化,向E-R模型的映射2023/5/829第29页,共55页,2023年,2月20日,星期四使用继承的一些问题分析许多人将继承视为面向对象设计中最好的或最有力的方法因此在面向对象设计中,会尽量多的使用继承来解决问题这会导致:继承关系的不恰当使用子类不恰当的获取父类的行为类的层次结构不灵活(Awkwardorrigid)难于维护下面列举一些没有正确使用继承关系的例子2023/5/830第30页,共55页,2023年,2月20日,星期四继承的问题分析1不正确的继承关系将继承改为关联2023/5/831第31页,共55页,2023年,2月20日,星期四继承的问题分析22023/5/832第32页,共55页,2023年,2月20日,星期四一个相似的例子2023/5/833第33页,共55页,2023年,2月20日,星期四问题在我们的应用中,房间是一个立方体我们需要记录每个房间的长、宽、高在我们的类库中已经有‘CUBOID’类设计为:CUBOID继承的问题分析32023/5/834第34页,共55页,2023年,2月20日,星期四一种可行的设计

一种更为通用的设计继承的问题分析3续2023/5/835第35页,共55页,2023年,2月20日,星期四继承的问题分析42023/5/836第36页,共55页,2023年,2月20日,星期四对象模型向ER模型的映射对于实体类,一般会选择关系数据库做数据的存储,因此会涉及对象模型如何向E-R模型转换的问题:简单关联关系的映射继承关系的映射聚合关系的映射2023/5/837第37页,共55页,2023年,2月20日,星期四简单关联关系的映射2023/5/838第38页,共55页,2023年,2月20日,星期四继承关系的映射2023/5/839第39页,共55页,2023年,2月20日,星期四三种方案的进一步分析三种方案优缺点的进一步分析:如果行数有限,那么优先考虑将应用程序与将来可能的改变隔离开来,提供一个更为健壮的数据库设计。因此方案1可能是最灵活的,但这个方案的性能是最差的(它涉及到许多连接)。如果超类中属性数目与子类的数目相比较小,那么方案3可能是最谨慎的选择。它可以提供比方案1更好的性能,以后扩展模型时添加更多的类也较为容易。如果子类中的数据量较少,那么方案2是最好的。该方案提供了最佳的性能,但其灵活性最差。2023/5/840第40页,共55页,2023年,2月20日,星期四聚合关系的映射在类图中,聚合关系表示的是两个类之间的整体与部分之间的关系。从本质上讲,聚合关系是类之间的关联关系的一种,在向E-R模型转换时,与简单关联关系的映射规则相同。按照一对多的关系映射为E-R模型2023/5/841第41页,共55页,2023年,2月20日,星期四类设计相关的设计模式迎接挑战,共创成功!2023/5/842第42页,共55页,2023年,2月20日,星期四类设计相关的设计模式模式是对特定环境下经常出现的有代表性的问题的通用核心解决方案,并且该方案可以被多次使用;设计模式可以帮助复用和沟通,可以提高信息模型的质量,使模型的结构更为合理,具有良好的适应能力,能够可以提供可扩展的结构;在信息模型中使用的设计模式主要有:实体-实体规格分离模式角色对象模式模板模式合成模式实体属性规格/实体属性模式实体/实体状态分离模式2023/5/843第43页,共55页,2023年,2月20日,星期四实体-实体规格分离模式将实体的不变的、相对固定的特性和行为与其可变的特性、行为分开定义。通过规格的定义,将通用的规则、属性分离出来单独定义,形成实体的模板。记录某一类实体的通用属性记录某一实体的属性2023/5/844第44页,共55页,2023年,2月20日,星期四模板模式将具有相同分类或特点的类中通用的属性、方法抽象出来,形成抽象类作为父类,子类继承和扩展父类的属性、方法。在面向对象的建模中,抽象层次是非常重要的关于继承模板模式是基于继承的复用技术采用继承的复用技术要比采用委托的复用技术耦合程度要高,使用继承关系要谨慎2023/5/845第45页,共55页,2023年,2月20日,星期四模板模式的应用将子类与其它类的关联关系中具有通用性的关联抽象到父类与其它类的关联,使实体之间的关联关系更具有通用型和扩展性2023/5/846第46页,共55页,2023年,2月20日,星期四角色对象模式问题的引出:一些业务实体,需要扮演多个角色,如某个人可以是企业的客户,同时又是企业的员工;某个公司可以是企业的客户,同时也是企业的代销商,也可以是企业的提供商,如何对这些关系进行建模,在信息模型中,采用实体、实体角色(角色对象)分离的模式来解决:实体是相对固定的,实体扮演的角色是可以独立与实体灵活的变化和扩展2023/5/847第47页,共55页,2023年,2月20日,星期四角色对象模式的应用将与系统相关的个人、组织抽象成参与者,将参与者所扮演的角色用参与者角色表示,具体类型的角色使用子类来表示。2023/5/848第48页,共55页,2023年,2月20日,星期四合成模式合成模式又称为部分-整体模式。合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式可以使客户端将原子元素与复合元素同等看待。合成模式有安全式和透明式两种。透明式的合成模式将原子元素与复合元素完全同等看待,定义同样的接口,缺点是不够安全;安全式的合成模式是将原子元素与复合元素区别对待,可以有不同的接口,缺点是不够透明。2023/5/849第49页,共55页,2023年,2月20日,星期四合成模式的应用变更服务规格是服务规格的

温馨提示

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

评论

0/150

提交评论