《面向对象的设计》PPT课件

上传人:san****019 文档编号:16181585 上传时间:2020-09-22 格式:PPT 页数:98 大小:1.51MB
收藏 版权申诉 举报 下载
《面向对象的设计》PPT课件_第1页
第1页 / 共98页
《面向对象的设计》PPT课件_第2页
第2页 / 共98页
《面向对象的设计》PPT课件_第3页
第3页 / 共98页
资源描述:

《《面向对象的设计》PPT课件》由会员分享,可在线阅读,更多相关《《面向对象的设计》PPT课件(98页珍藏版)》请在装配图网上搜索。

1、第4章 面向对象的设计,面向分析,面向设计,做什么?需求及领域的调查,如何做?确定逻辑的解决方案,1,4.1 面向对象设计概述 4.2 软件设计的体系结构 4.3 面向对象设计的软件体系结构 4.4 对象设计 4.5 数据管理的设计 4.6 人机交互的设计 4.7 任务管理的设计,内容,2,4.1 面向对象设计概述,4.1.1 面向对象设计内容,4.1.2 面向对象分析与设计的制品,4.1.3 面向对象的设计方法,3,在已建立概念类图(对象分析模型)的基础上,进一步 优化类图,确定实现的逻辑模型。,面向对象的设计包括: 体系结构的设计 对象的设计 数据管理的设计 人机交互的设计 任务管理的设计

2、,4.1.1 面向对象设计内容,4,分析阶段的制品,要回答的问题,用例、活动图,对象(概念)模型,动态模型,功能模型,领域过程是什么,领域中的概念和术语是什么,系统事件和操作是什么,系统操作做了什么,设计阶段的制品,要回答的问题,设计类图,设计软件实现的类图,4.1.2 面向对象分析与设计的制品,5,Dialer拨号器,digits nDigits,概念记号,一个Dialer代表了一次拨号的事件,它有digits,概念的内涵,Dialer1,Dialer 2,Dialer3,Dialer 4,概念的外延,分析,概念应 用的一 组实例,图4-1 分析的类图,6,public class Dial

3、er private Vector digits; int nDigits; public void digit(int n); protected boolean recordDigit(int n); ,类名,属性/ 成员 变量,操作/ 方法,图4-2 设计的类图,Dialer拨号器,- digits:Vector - nDigits:int,+ digit(n:int) # recordDigit( n:int):boolean,软件类, 不是概念的一部分,设计,7,4.1.3 面向对象的两种设计方法,问题域部分,数据管理部分,人机交互部分,任务管理部分,(1) Coad public

4、void poll () if ( /* some condition */ ) itsLamp.turnOn(); ,高层没有和低层分离;抽象没有和具体细节分离。,Button对象感知外部环境变化。收到poll消息,判断是否被用户按下。,Button对象控制Lamp对象的一个模型,Lamp对象会影响外部环境。,图4-27 不成熟的Button和Lamp模型,49,找出潜在的抽象,Button +poll(), ButtonServer +turnOff() +turnOn(),Lamp,图4-28 对Lamp应用依赖倒置原则,Lamp实现了Button接口, Lamp依赖ButtonServ

5、er, 但ButtonServer没有依赖于 Button,是名字上的依赖,任 何知道去操纵ButtonServer 接口的对象都能控制Lamp。,接口没有所有者,可以被许多不同的客户、服户者使用。 这样接口需要放一个单独的组(group)中。C+中把接口放在一单独 的namespace和库中。在Java中把接口放在一单独的package中。,50,(3) 包的引入与访问关系,引入(import) 允许一个包中的元素可以单向访问另一包中的元素 输出(export) 包的公共部分 引入和访问依赖 不是可传递的,package1,+D,package2,+B1 -B2,package3,+C1 #

6、C2,package4,图4-29 包的引入与访问关系,+A,51,(4) 包图的设计,对概念和语义上相互接近的元素所定义的组块放到一个包中,对每一个包找出可以在包外访问的元素,将这些元素标记为公有的,把其他的元素标记为受保护的或私有的。如果不确定时,就隐藏该元素。,确定包与包之间的依赖关系,特别是引入依赖。包之间的依赖关系展现了应用程序的高层组织结构,应该对这些关系进行管理。,52,前3个原则,包的内聚性原则: 是用来指导如何把类划分到包中的。 重用发布等价原则、 共同重用原则、 共同封闭原则。 后3个原则,包的耦合性原则: 是用来处理包之间的相互关系的。 无环依赖原则、 稳定依赖原则、 稳

7、定抽象原则。,53,现介绍包的6个设计原则,涉及包的创建、相互关系的管理以及包的使用。,由于重用性必须是基于包的,所以可重用的包必须包含可重用的类。 重用的粒度就是发布的粒度,重用发布等价原则 REP(Reuse-Release Equivalence Principles),54,共同重用原则,一个包中的所有类应该是共同重用的。 如果重用了包中的一个类,那么就要重用包中的所有类。这个原则规定了趋向于共同重用的类应该属于同一个包。,例:容器类以及与它关联的迭代器类。 这些类彼此之间紧密耦合在一起,因此必须共同重用。所以它们应该在同一个包中。,CRP (Common-Reuse Principl

8、e),55,共同封闭原则,包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何影响。 这条原则规定了: 一个包不应该包含多个引起变化的原因。,CCP (Common-Closure Principle),如果从可维护性的角度,一个应用中的代码必须更改,应把更改都集中在一个包中。,56,如果两个类之间有非常紧密的绑定关系,不管是物理上的还是概念上的,它们总是会一同进行变化,它们应该属于同一个包中。 这样做会减少软件的发布、重新验证、重新发布、重新发行的工作量。,值得注意的是包的划分可能会动态的改变,如当项目的重心从可

9、开发性向可重用性转变时,包的组成很可能会变动并随时间而演化。,57,ADP (Acyclic-Dependencies Principle),无环依赖原则,在包的依赖关系图中不允许存在环。,包是节点(node),依赖关系是有向边directed edge)。,58,图4-30 包结构是有向无环图,无论从哪个包开始,都无法沿着依赖关系而绕回到这个包。该结构中没有环。它是一个有向无环图DAG 。,59,图4-31 具有依赖环的包图,如果依赖关系图中存在环,就很难确定包构建的顺序。,60,解除依赖环,把包的依赖环恢复为一个DAG。有两个主要的方法:,# 使用依赖倒置原则,图4-32 使用依赖倒置解除

10、依赖环,61,# 新创建一个MyDialogs和MyApplication都依赖的包 把MyDialogs和MyApplication都依赖的类移到这个新包中。,创建新的包,致使依赖关系结构增长。当需求改变时这个包的结构是不稳定的。,62,稳定依赖原则,稳定性,如果某物“不容易被移动” 就认为它是稳定的(韦伯斯特) 。 使软件包难以更改的因素有许多:它的规模、复杂性、清晰程度等等。 要使一个软件包难以改变,一个肯定可行的方法是让许多其他的软件包依赖于它。 如,具有很多输入依赖关系的包是非常稳定的,它的包能够相容于对它所做的更改。,朝着稳定的方向进行依赖。,SDP (Stable-Depende

11、ncies Principle),63,X不依赖于任何包,X是无依赖性的。,Y,图4-35 Y:一个不稳定的包,没有任何其他的包依赖于Y;Y是不承担责任的,称Y是有依赖性的。,64,并非所有的包都应该是稳定的,如果一个系统中所有的包都是最大程度稳定的,那么该系统就是不能改变的,这不是所希望。希望所设计出来的包结构中,一些包是不稳定的,而另外一些是稳定的。,图4-36 理想的包配置,65,图4-37展示了违反稳 定依赖原则SDP的做法。 必须要以某种方式解 除Stable对Flexible 的依赖。 为什么会存在这个依 赖关系呢?,图4-37 违反了SDP,66,图4-38 糟糕依赖关系,假设F

12、lexible中有 一个类C被另一个 Stable中的类U使 用(参见图4-38),U,67,图4-39 使用DIP修正稳定性违规,可以使用DIP(Dependency-Inversion Principles) 依赖倒置原则来修正这个问题。,稳定,保持它必需 的不稳定性,接口IU中,声明了U要使用的所有方法,68,稳定抽象原则,包的抽象程度应该和其稳定程度一致。,SAP (Stable-Abstractions Principle),该原则把包的稳定性和抽象性联系起来。,它规定,一个稳定的包应该也是抽象的,这样它的稳定性就不会使其无法扩展。,另一方面,它规定,一个不稳定的包应该是具体的,因此

13、它的不稳定性使得其内部的具体代码易于更改。,69,* 重用发布等价原则 REP (Reuse-Release Equivalence Principles) 重用的粒度就是发布的粒度。,小结:,* 共同封闭原则 CCP (Common-Closure Principle) 包中的所有类对于同一类性质的变化应该是共同封闭的。,* 无环依赖原则 ADP (Acyclic-Dependencies Principle) 在包的依赖关系图中不允许存在环。,70,* 共同重用原则 CRP (Common-Reuse Principle) 一个包中的所有类应该是共同重用的。如果重用了包 中的一个类,那么就

14、要重用包中的所有类。,* 稳定抽象原则 SAP (Stable-Abstractions Principle) 包的抽象程度与其稳定程度一致。,* 稳定依赖原则 SDP (Stable-Dependencies Principle) 朝着稳定的方向依赖。,71,小结:,不能自顶向下设计包的结构。,结论:,包的依赖关系图和描绘应用程序的功能之间几乎没有关系。相反,它们是应用程序可构建性的映射图。这就是为何不在项目开始时设计它们的原因。,包结构不是设计系统时,首先考虑的事情。,包结构应该是随着系统的增长、 变化而逐步演化的。,随着实现和设计的深入, 累积的类越来越多,对依赖关系进行管理,72,随着

15、应用程序的不断增长,开始关注创建可重用的元素。于是,就开始使用CRP (共同重用原则)来指导包的组合。最后,当环出现时,就会使用ADP(无环依赖原则) 。,包的依赖关系结构是和系统的逻辑设计一起增长和演化的。,73,结论:,回答问题:,1.列出抽象视窗工具(Abstract Windowing Toolkit) 包装(即java.awt)中的抽象类型,Component(部件), Container(容器), MenuComponent(菜单部件),74,2.java.awt包主要依赖哪几个包?画出包图。,图4-40 java.awt包的依赖包,75,3.Java包的含义?哪两种包比较重要?,

16、Java包是命名空间。在其中可以声明类,这些类的名称不会与别的包同名的类相冲突。,Java的package关键字标识的源代码包。,package consultantScheduler;import calendarUtilities.*;public class consultantCalendarimplements Calendar ,图4-41 包的依赖,76,包适用于对源代码进行分组,但不适用于对二进制代码进行分组。 可将二进制代码打包成 .jar文件形式的组件,然后再部署到运行系统中。,Calendar Renderer,图4-42 二进制组件 .jar文件,Calendar,一个

17、组件可包含一个或多个完整的包,77,描述系统软件、硬件,注重实现,描述硬件结构:节点及节点间连接,4.3.2 物理结构,78,(1) 构件图 (Component diagram),构件:定义了良好接口的物理实现单元,是系统中可 替换部分。 构件图:表示构件类型的组织以及依赖关系的图。,构件和类的不同点,类是逻辑抽象; 构件是物理抽象,即构件可以位于节点(node)上,是类的物理实现。,类可以有属性和操作;构件通常只有操作,而且这些操作只能通过构件的接口才能使用。,80,一般说来,构件就是一个实际文件,可以有以下几种类型: deployment component,如 dll 文件、exe 文

18、件、 COM+ 对象、CORBA 对象、EJB、动态Web 页、数据库表等; work product component,如源代码文件,数据文件等,这些构件可以用来产生deployment component ; execution component,可执行的构件。,软件构件类型,81,窗口处理子程序 (wnnd.cpp),公共处理子程序 (comhnd.cpp),Main类 (main.cpp),窗口处理子程序 (wnnd.obj),公共处理子程序 (comhnd.obj),Main类 (main.obj),图形库 (graphic.dll),客户程序 (client.dll),图4-4

19、3 源、二进制、可执行构件及关系,源代码构件,二进制代码构件,可执行代码构件,82,接口是被软件或硬件所支持的一个操作集。,Updatethread.java,图4-44 带有接口的构件,update,实现(Realization) 接口,使用 依赖(Dependency),display.java,带有接口的构件,83,图4-45 选课系统的组件图,84,图4-46 重要类的关系,开发构件模型,85,第2步: 定义类契约 公有接口,第3步: 简化层次结构 继承和聚合的层次结构,第4步 :确定可能的领域构件 (domain Component),第5步 :定义领域构件契约 领域构件的公共接口,

20、第1步 : 处理业务/ 领域类,86,(2) 部署图 (展开图),描述处理器、设备、软件组件在运行时的构架,节点:拥有某些计算机资源的物理对象(设备),printer HpLaserJet 5MP,Router Cisco Router X2000,Controller SAAB9-5 Navigator,图4-47 部署图(设备节点和版类),87,情况1:节点间存在通信路径(关联),可以交换对象和发送 消息。,图4-48 选课系统的布局图,几种情况,88,情况2:构件与节点,图4-49 大学信息系统的部署图之一,http,Client:Browser,Student Administrati

21、on application,appServer: sunsolaris,Student,seminar,schedule,dbServer:AIX,Persistence infrastructure,University DB database,RMI,JDBC,89,情况3 :节点包含对象实例,图4-50 包含对象的节点,微波炉系统:微波炉控制器,Guard.exe,process supervisor,Thermomeer Controller,90,情况4: 有继承关系的节点,图4-51 有继承关系的节点,Admin PC,AdminPgm,客户PC,NetDrv,ApplClien

22、t,Window xp,连接到,服务器,备份站,1.*,1.2,Backup Medium,1,1,91,资源利用 地理位置 设备访问 安全 性能 可扩展性和可移植性,将组件分配给节点考虑的因素,92,第1步:确定模型范围,第2步:确定分布结构,第3步:确定节点和他们的连接,第4步: 把构件分布到节点,第5步:为不同组件之间的依赖建模,如何开发部署模型,93,图4-52 保险系统包图,例1 保险系统配置图,系统内部,保险单,客户,Oracle界面,数据库界面,保险单填写界面,Sybase界面,94,后台服务器,保险系统配置,配置用户,保险系统,保险对象 数据库,配置 保险政策,保险单填写 界面

23、,(TCP/IP),图4-53 保险系统配置图,95,例2 一个模拟系统的体系结构图,图4-54 一个模拟系统的体系结构,User Interface/Controller,预处理器,后处理器,解题器,System Services,96,例3 自动柜员机系统的体系结构图,图4-55 自动柜员机系统的体系结构图,ATM Clients,可有多个ATM客户机,SessionMgr,Session,ATM Central Sever,ATM中央 服务器,AccountMGR,Account,Bank Server,银行 服务器 (多个),Bank Database Nod,银行数据 库结点,97,系统 构架,逻辑构架,物理构架,显示类和对象及他们之间关系和协作。 可以用:用例、类、序列图、状态图、协 作图、活动图、包图来写逻辑架构文档。,处理代码构件的结构和组成系统的硬件结 构。详细描述逻辑架构中定义的概念的实 现。用构件图、节点图描述。,小 结,98,

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

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

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


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