网站大量收购独家精品文档,联系QQ:2885784924

第10节 面向对象设计(简化版).ppt

  1. 1、本文档共75页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
面 向 对 象 设 计 10.1.1 面向对象设计过程 (1) 建立系统环境模型。 下图给出了系统环境图的一般的结构。 10.1.1 面向对象设计过程 (2) 设计系统体系结构。 (3) 对各个子系统进行设计。 (4) 对象设计及优化。 模块化 面向对象方法中的模块是类、对象、接口、构件等。 在面向过程的方法中,数据及在数据上的处理是分离的;而在面向对象方法中,数据及其上的处理是封装在一起的,具有更好的独立性,也能够更好地支持复用。 抽象 面向对象方法不仅支持过程抽象,而且支持数据抽象。 可以将类的抽象分为规格说明抽象及参数化抽象。 类对外开放的公共接口构成了类的规格说明,即协议。这种接口规定了外部可以使用的服务,使用者无需知道这些服务的具体实现算法。通常将这类抽象称为规格说明抽象。 参数化抽象是指当描述类的规格说明时,并不具体指定所要操作的数据类型,而是将数据类型作为参数。 信息隐藏 在面向对象方法中,信息隐藏通过对象的封装性实现。 对于类的用户来说,属性的表示方法和操作的实现算法都应该是隐藏的。 弱耦合 耦合是指软件结构内不同模块之间互连的紧密程度。 在面向对象方法中,对象是最基本的模块,因此,耦合主要指不同对象之间相互关联的紧密程度。 类与对象之间的耦合分为两种:交互耦合与继承耦合。 强内聚 内聚是指模块内各个元素彼此结合的紧密程度。 在面向对象设计中,存在以下3种内聚: (1) 服务内聚:一个服务应该完成一个且仅完成一个功能。 (2) 类内聚:设计类的原则是,一个类应该只有一个用途,它的属性和服务应该是高内聚的。如果某个类有多个用途,通常应该把它分解成多个专用的类。 (3) 一般—特殊内聚:设计出的一般—特殊结构,应该符合多数人的概念,更准确地说,这种结构应该是对相应的领域知识的正确抽取。 可重用 软件重用是提高软件开发生产率和目标系统质量的重要途径。 重用有两方面的含义: 一是尽量使用已有的类(包括开发环境提供的类库,及以往开发类似系统时创建的类); 二是如果确实需要创建新类,则在设计这些新类的协议时,应该考虑将来的可重复使用性。 体系结构设计描述了建立计算机系统所需的数据结构和程序构件。 一个好的体系结构设计要求软件模块的分层及编程标准的执行。 在面向对象软件中,常见的软件模块有类、接口、包和构件。 在设计阶段我们往往关注类、接口和包,在实现阶段关注构件,而在部署阶段则关注构件的部署,也就是将构件部署在哪些结点上。 ① 编译时继承依赖性 右图所示的例子说明了一棵树中类之间的编 译时依赖性。在这个例子中,B继承A,但没有 覆盖A中的方法do1( )。因此,B和A之间没有 运行时继承依赖性。也就是说,由于编译时依 赖性的存在,A中do1( )方法的任何变化,都会 被B在编译时(静态地)继承。 一般来说,所有的继承都会引入编译时依赖 性。依赖性是可传递的,也就是说,如果C依赖 B,B依赖A,那么C也依赖A。 ② 运行时继承依赖性 类B的do1( )方法是从父类A继承来的,因此Test与B没有运行时继承依赖性,只是一个静态依赖性,通过从Test到A的关联来表明。如果在doTest方法中调用的是do2( )方法,或者在B中覆盖了A的do1( )方法,则从Test到A和B就会存在运行时依赖性。 滥用继承的问题 交互依赖性 交互依赖性也称为方法依赖性,是通过消息连接产生的。 实现依赖性 在UML2.0中,将一个类和该类实现的接口之间的依赖性称为实现依赖性。 包之间的依赖性来自于两个包中类之间的依赖性。 如果包A的一些成员引用了包B的某些成员(包A导入了包B的一些成员),这隐含着双重含义。 包A只能和包B一起使用。 包B的变化可能会影响包A,通常需要对包A重新进行编译和测试。 包及其依赖性 包的循环依赖 包之间的循环依赖是特别棘手的问题,好在大多数情况下可以通过重新设计避免循环依赖性。 10.3 系统分解 子系统和类 在大型和复杂的软件系统情形,首先根据需求的功能模型(用例模型),将系统分解成若干个部分,每一部分又可分解为若干子系统或类,每个子系统还可以由更小的子系统或类组成。 10.3 系统分解 CoadYourdon的面向对象设计模型 Coad Yourdon基于MVC(Model-View-Controller)模型,在逻辑上将系统划分为4个部分,分别是问题域部分、人机交互部分、任务管理部分及数据管理部分,每一部分又可分为若干子系统。 Coad 与 Yourdon 在设计阶段中继续采用了分析阶段中提到的5个层次,用于建立系统的4个组成成分。每一个子系统都由主题、类--对象、结构、属性和服务5个层次组成。这5个层次可以被当作整个模型的水

文档评论(0)

189****6140 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档