面向对象的设计课件_第1页
面向对象的设计课件_第2页
面向对象的设计课件_第3页
面向对象的设计课件_第4页
面向对象的设计课件_第5页
已阅读5页,还剩165页未读 继续免费阅读

下载本文档

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

文档简介

软件工程导论刘春计算机与信息工程学院软件工程系软件工程导论刘春两种软件开发方法结构化方法面向对象方法两种软件开发方法结构化方法面向对象方法3回顾结构化设计方法概述结构化设计的基本概念两种数据流类型:变换型和事务型系统体系结构的描述工具:系统结构图结构化设计过程概要设计变换分析事务分析详细设计案例:图书订购系统3回顾结构化设计方法概述变换分析是一系列设计步骤的总称,经过这些步骤把具有变换流特点的数据流图映射成为一个预定义的程序结构模板。变换分析的步骤:1.对DFD图的分析和划分2.进行第一级分解,设计顶层和第一层模块3.第二级分解,设计中、下层模块概要设计:变换分析变换分析是一系列设计步骤的总称,经过这些步骤把具有变换流特点第九讲:面向对象的设计课件1,第一层分解,设计顶层和第一层1,第一层分解,设计顶层和第一层第一层分解的另外一种画法第一层分解的另外一种画法1,第一层分解,设计顶层和第一层2,第二层分解1,第一层分解,设计顶层和第一层2,第二层分解1,第一层分解,设计顶层和第一层2,第二层分解1,第一层分解,设计顶层和第一层2,第二层分解1,第一层分解,设计顶层和第一层2,第二层分解1,第一层分解,设计顶层和第一层2,第二层分解第九讲:面向对象的设计课件事务:引起式、触发式启动单一动作或一串动作的任何数据、控制、信号、事件或状态变化。事务分析:由事务型数据流图映射为软件结构的过程。概要设计:事务分析事务:引起式、触发式启动单一动作或一串动作的任何数据、控制、(1)确定输入、事务变换和输出路径的集合(划分集合)。(2)根据事务的功能设计—个总控模块(设计总控)。(3)确定顶层模块和第一层模块(建立映射)。(4)继续下层分解(递归自展)。事务分析的具体过程(1)确定输入、事务变换和输出路径的集合(划分集合)。事务第九讲:面向对象的设计课件第九讲:面向对象的设计课件第九讲:面向对象的设计课件变换-事务混合:一个数据流图中既有变换又有事务分析策略:以一种分析(比如以变换分析)为主,另一种分析为辅概要设计:变换-事务混合型分析变换-事务混合:一个数据流图中既有变换又有事务概要设计:变换变换-事务混合型分析变换-事务混合型分析第九讲:面向对象的设计课件两种软件开发方法结构化方法面向对象方法两种软件开发方法结构化方法面向对象方法面向对象方法面向对象分析(ObjectOrientedAnalysis,OOA)分析和理解问题域,找出描述问题域和系统责任所需的类及对象,分析它们的内部构成和外部关系,建立OOA模型。面向对象设计(ObjectOrientedDesign,OOD)将OOA模型直接变成OOD模型,并且补充一些与实现有关的部分,如:算法、人机界面、数据存储、任务管理等。面向对象编程(ObjectOrientedProgramming,OOP)用一种面向对象的编程语言将OOD模型中的各个成分编写成程序面向对象的测试(ObjectOrientedTesting,OOT)面向对象软件维护(ObjectOrientedSoftwareMaintenance,OOSM)21面向对象方法面向对象分析(ObjectOriented22用例驱动的面向对象分析用例建模:建立用户的需求模型,由用例图体现具体过程:定义系统、确定参与者、确定用例、描述用例、确定用例之间的关系、评审用例模型对象建模建立系统的分析模型,由类图体现具体过程:理解用例、识别类和类的属性、识别类的操作、确定类与类之间的关系、评审模型22用例驱动的面向对象分析用例建模:第九讲:面向对象的设计课件对用例“开户”进行分析之后得到的类图对用例“开户”进行分析之后得到的类图第九讲:面向对象的设计课件26第十章面向对象设计方法26第十章27内容提纲面向对象设计方法概述系统设计软件体系结构设计硬件体系结构设计详细设计对象设计对象持久化设计面向对象的设计原则设计模式27内容提纲面向对象设计方法概述主要考虑“如何实现”的问题,将面向对象分析创建的分析模型,转变为作为软件构造蓝图的设计模型。不仅要说明为实现需要必须引入的类、对象及它们之间是如何关联的,描述对象间如何传递消息和对象的行为如何实现,还必须从提高软件设计质量和效率方面考虑如何改进类结构和可复用类库中的类。面向对象设计方法概述主要考虑“如何实现”的问题,将面向对象分析创建的分析模型,转系统设计:包括如何把整个系统分解为子系统、子系统的软硬件布局等策略性决策详细设计:根据具体的实现策略,对分析模型进行扩充设计评审:对所设计的系统和系统设计规格说明报告逐一进行严格审查,检查是否达到系统设计功能要求面向对象设计的主要内容系统设计:面向对象设计的主要内容包括软件系统体系结构设计和硬件系统体系结构设计

。软件系统体系结构是对系统的类、对象、接口以及相互间的交互和协作进行描述。硬件系统体系结构是要对系统的构件、节点的配置进行描述。系统设计包括软件系统体系结构设计和硬件系统体系结构设计。系统设计软件系统体系结构把系统的各种功能分配到系统的不同组织部分,并详细地描述各个组织部分之间是如何协调工作来实现这些功能的。软件系统体系结构模型的作用是:指明系统应该具有的功能完成这些功能所涉及哪些类,这些类之间如何相互联系类和它们的对象如何协作才能实现这些功能指明系统中各功能实现的先后时间顺序软件系统体系结构设计软件系统体系结构把系统的各种功能分配到系统的不同组织部分,并分层的思路是将系统按功能职责进行划分,将同一类职责的功能抽象为一层在信息系统中软件架构通常采用典型的三层结构:表示层――用户界面业务层――业务处理流程数据层――持久化存储数据层在业务层中是可见的,业务层在表示层中是可见的,反之则不可见体系结构设计的一种策略:分层分层的思路是将系统按功能职责进行划分,将同一类职责的功能抽象包(package)是一种逻辑分组手段,可以取UML模型中的任何一种事物,将相关成分聚在一起,以构成更高层的组织单元最常用的方法是将类以包为单位进行分组,比如三层结构中的每一层中的所有类组成一个包一个包可以包含其它的包,高层包被分成若干子包,子包又可以在分成更小的包软件体系结构的描述工具:包包(package)是一种逻辑分组手段,可以取UML模型中的软件体系结构设计:如何分包分包:软件类的分组两种原则:共同封闭原则:一个包中的各个类应该是由于相似的原则而改变,即将一组职责相似、但以不同方式实现的类归为一个包中。比如按照层来进行分包就是这种类型。共同复用原则:一个包中的各个类应该一起被复用,复用其中一个可能需要同时考虑同一个包中的其它协作类。软件体系结构设计:如何分包分包:软件类的分组软件体系结构的表示:包图包图用来描述包及其依赖关系当表示层包中的类要使用业务包中的业务类提供的服务时,表示包就依赖于业务包。软件体系结构的表示:包图包图用来描述包及其依赖关系将信息系统中比较关心的对象分层,可分为三层:用户界面层、业务层、数据访问层,再把各层中的一些公共部分提出来:权限管理、异常处理,这样得到包图如下:软件体系结构的设计:以信息系统为例将信息系统中比较关心的对象分层,可分为三层:用户界面层、业务用户界面层的职责是:与用户的交互,接收用户的各种输入以及输出各种提示信息或处理结果。对于输入的数据进行数据校验,过滤非法数据。向业务处理对象发送处理请求。1、用户界面层用户界面层的职责是:1、用户界面层2、业务处理包业务处理层的职责是:实现各种业务处理逻辑或处理算法。验证请求者的权限。向数据访问对象发送数据持久化操作的请求。向用户界面层返回处理结果。2、业务处理包业务处理层的职责是:3、数据访问包数据访问层的职责是:实现数据的持久化操作实现事务处理

3、数据访问包数据访问层的职责是:权限管理的主要职责是:验证请求者的请求权限提供请求者的权限列表

注:业务处理对象通过权限管理对象来验证权限

4、权限管理包权限管理的主要职责是:注:业务处理对象通过权限管理对象来验证5、异常处理包异常处理的职责:汇报运行时的详细异常信息记录异常处理日志5、异常处理包异常处理的职责:6、信息系统的体系结构的类图

6、信息系统的体系结构的类图7、体系结构的动态图7、体系结构的动态图子系统当按照业务功能或管理职能组织包,并对这样的包进行彻底的封装实现后,一个高层的具有特定功能的可以运行的独立构件就产生了,称为子系统(subsystem)子系统及其关系使用构件图描述子系统与包的区别子系统具有自身独立的功能,是物理的具体软件单位,而包只是软件对象的逻辑组织方式软件体系结构设计:子系统(1)子系统软件体系结构设计:子系统(1)子系统的接口子系统对外可以提供有限的接口,只要接口不改变,不管子系统内部发生什么变化,也不会影响到依赖于该子系统接口的其它子系统财务子系统将内部操作进行了封装,但对外提供必要的接口。销售子系统在执行销售业务过程中可以使用该接口对销售数据执行某些财务操作。对于销售子系统而言,依赖的是财务子系统的接口,并不需要关心财务子系统的具体实现。软件体系结构设计:子系统(2)子系统的接口软件体系结构设计:子系统(2)46内容提纲面向对象设计方法概述系统设计软件体系结构设计硬件体系结构设计详细设计对象设计对象持久化设计面向对象的设计原则设计模式46内容提纲面向对象设计方法概述建立硬件系统体系结构模型硬件系统体系结构模型显示硬件的结构,包括不同的节点和这些节点之间如何连接它还用图形展示了代码模块的物理结构和依赖关系硬件体系结构设计建立硬件系统体系结构模型硬件体系结构设计指出系统中的类和对象涉及的具体程序或进程。指明系统中配置的计算机和其他硬件设备。指明系统中各种计算机和硬件设备如何进行相互连接。明确不同代码文件之间的相互依赖关系。硬件体系结构模型指出系统中的类和对象涉及的具体程序或进程。硬件体系结构模型硬件体系结构的描述工具:配置图硬件体系结构的描述工具:配置图50内容提纲面向对象设计方法概述系统设计软件体系结构设计硬件体系结构设计详细设计对象设计对象持久化设计面向对象的设计原则设计模式50内容提纲面向对象设计方法概述主要包括对象设计和对象持久化设计(数据库设计)对象设计:

系统设计相当于大楼的建筑平面图,规定了每个房间的用途,以及房间与房间之间、房间与外部环境之间的连接机制。对象设计着重于每个房间的内部细节对象持久化设计:

解决对象数据的存储和检索详细设计主要包括对象设计和对象持久化设计(数据库设计)详细设计对象设计的主要任务:定义对象完整的接口设计对象内部结构详细设计:对象设计对象设计的主要任务:详细设计:对象设计对象的接口也称为对象的协议、对象的界面。接口提供了一种方法,把对象的功能说明与具体实现区分开来,使得任何依赖和使用接口的客户不必依赖于接口的具体实现,有利于接口实现的替换。

接口描述可以用UML中类图一样的符号,省略属性部分,《interface》要包含在类名部分中。定义对象的完整接口对象的接口也称为对象的协议、对象的界面。定义对象的完整接口对属性和操作进行建模属性建模:确定属性的类型和数据结构、可见性等将所有属性的可见性设置为private仅通过set方法更新属性仅通过get方法访问属性在属性的set方法中,实现简单的有效性验证,而在独立的验证方法中实现复杂的逻辑验证操作建模:确定操作的可见性、参数、返回值、算法等设计实现服务的算法。定义内部类和内部操作设计对象内部结构对属性和操作进行建模设计对象内部结构第九讲:面向对象的设计课件在状态建模中,状态通过对象属性的值来表示,状态转移是操作调用的结果,经常会反映业务规则对象设计的进一步:状态建模在状态建模中,状态通过对象属性的值来表示,对象设计的进一步:57内容提纲面向对象设计方法概述系统设计软件体系结构设计硬件体系结构设计详细设计对象设计对象持久化设计面向对象的设计原则设计模式57内容提纲面向对象设计方法概述关注的是对象数据如何存储数据存储管理的一般模式文件管理模式关系数据库管理系统面向对象数据库管理系统详细设计:对象持久化设计关注的是对象数据如何存储详细设计:对象持久化设计关系数据库与面向对象中的概念存在一定的对应对象持久化设计的方法:基于关系数据库存储关系数据库与面向对象中的概念存在一定的对应对象持久化设计的方永久类的存储设计永久类一般都是实体类,对应的是系统中涉及的数据每一个永久类映射为一个关系表,表格的列或字段对应类的属性,而行或记录对应类的实例(对象)关联的存储设计1:1关联:在一个类对应的表中用外键隐含管理1:n关联:在n端类对应的表中用外键隐含关联n:n关联:转换成1:n管理,然后按照上面的方法进行转换基于关系数据库的对象持久化设计永久类的存储设计基于关系数据库的对象持久化设计1:1关联1:1关联1:n关联1:n关联63内容提纲面向对象设计方法概述系统设计软件体系结构设计硬件体系结构设计详细设计对象设计对象持久化设计面向对象的设计原则设计模式63内容提纲面向对象设计方法概述系统设计审查就是对所设计的系统和系统设计规格说明报告逐一进行严格审查,检查是否达到系统设计功能要求。如果发现系统功能没有达到用例的要求或有遗漏,一次返回逐步检查,找到问题所在,补充设计实现其功能。这是一个反复迭代的过程。追求一个好的设计,以及设计完成后评价它是不是好的设计,不是一个笼统的概念,有一些具体的评价准则。评审设计系统设计审查就是对所设计的系统和系统设计规格说明报告逐一进行单一职责原则开放-封闭原则接口隔离原则Liskov替换原则依赖倒置原则面向对象设计原则单一职责原则面向对象设计原则一个类只完成某一类功能(职责)尽可能避免出现一个“复合”功能的类——在同一个类中完成多个不同的功能1、单一职责原则一个类只完成某一类功能(职责)1、单一职责原则第九讲:面向对象的设计课件开放−封闭原则:软件实体类(类、模块、函数等)应该是可以扩展、但是不可修改的基本思想:不用修改原有类就能扩展一个类的行为2、开放−封闭原则开放−封闭原则:软件实体类(类、模块、函数等)应该是可以扩展什么是不封闭、不开放如下的模型可以处理月薪制和时薪制职工工资,如果还要增加一种职工类型,其计酬方式不同(如提成制),则必定要修改Employee类什么是不封闭、不开放如下的模型可以处理月薪制和时薪制职工工资如何改进利用抽象机制封闭:Employee及其子类是封闭的开放:可以派生新的子类,实现新的需求如何改进利用抽象机制Liskov替换原则:子类应当可以替换父类并出现在父类能够出现的任何地方核心思想:子类型必须能够替换它们的基类型,该原则能够知道设计人员正确地进行类的继承与派生3、Liskov替换原则Liskov替换原则:子类应当可以替换父类并出现在父类能够一个违反Liskov原则的例子正方形是长方形的一种特例一个违反Liskov原则的例子正方形是长方形的一种特例正方形有独特的行为方式通过覆盖父类的有关方法来实现子类行为正方形有独特的行为方式实际中的使用情况长方形的使用者按照长方形的特点来调用SetWidth和SetHeight两个函数,并测试面积,代码如下:voidtestArea(Rectangle&r){ r.SetWidth(5); r.SetHeight(4); assert(r.Area()==20);}如果传递进来的是Square对象又会如何呢?显然会出现断言错误,测试失败。对于客户程序来说,模型中的层次结构是脆弱的,因为违反了LSP替换原则,Square对象和Rectangle对象的行为方式不相容实际中的使用情况长方形的使用者按照长方形的特点来调用SetW4、接口隔离原则接口隔离原则:采用多个与特定客户类有关的接口比采用一个通用的涵盖多个业务方法的接口更好。对接口的污染设计人员为了节省接口数目,而经常将一些功能相近或功能相关的接口合并成一个总的接口臃肿的大接口4、接口隔离原则接口隔离原则:采用多个与特定客户类有关的接口第九讲:面向对象的设计课件面向过程——自顶向下,逐步求精,形成上对下依赖依赖倒置原则:应用系统中的高层模块不应依赖于底层模块;抽象不应该依赖于细节实现,实现细节应该依赖于抽象。优点:复用、灵活性、易维护5、依赖倒置原则面向过程——自顶向下,逐步求精,形成上对下依赖5、依赖倒置原第九讲:面向对象的设计课件79内容提纲面向对象设计方法概述系统设计软件体系结构设计硬件体系结构设计详细设计对象设计对象持久化设计面向对象的设计原则设计模式79内容提纲面向对象设计方法概述如何遵守设计原则设计原则不是死记硬背,而是要灵活运用一些成熟的设计模式可以帮助我们解决实际问题,并且符合设计原则如何遵守设计原则设计原则不是死记硬背,而是要灵活运用广义上讲:设计模式是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述。狭义上讲:设计模式就是对特定问题的描述或解决方案,往往直接对应一段程序代码。设计模式广义上讲:设计模式是对被用来在特定场景下解决一般设计问题的类作用:记录和提炼了软件人员在面向对象软件设计中的成功经验和问题的解决方案,是系统可复用的基础。正确地使用设计模式,有助于快速开发出可复用的系统。意义:优化的设计经验极高的复用性丰富的表达能力极低的耦合度设计模式的作用和研究意义作用:记录和提炼了软件人员在面向对象软件设计中的成功经验和问1.抽象工厂(AbstractFactory)模式2.适配器(Adapter)模式3.策略(Strategy)模式4.外观(Facadepattern)模式经典设计模式1.抽象工厂(AbstractFactory)模式经典设从面向对象分析到面向对象设计,是一个逐渐扩充模型的过程,二者需要多次反复迭代。OOD主要包括两个方面:系统设计和详细设计。系统设计包括软件体系结构设计和硬件体系结构设计详细设计包括对象设计和对象持久化设计五个设计原则和设计模式小结从面向对象分析到面向对象设计,是一个逐渐扩充模型的过程,二者小结结构化设计主要解决如何将需求分析阶段的DFD图推导为软件系统结构,并用它提供的结构图描述之。系统设计时要遵循模块化、自顶向下逐步求精的基本思想。详细设计着重对各个模块的逻辑进行详细设计。小结结构化设计主要解决如何将需求分析阶段的DFD图推导作业

针对实验课自己选的系统,结合上次面向对象分析所布置的作业,进行系统的面向对象设计主要任务:基于上次面向对象分析的作业中自己所选定的一个用例,识别类与对象、建立对象模型,并进行详细设计每个人都要做,一个组不能交一份,每个人要基于不同的用例来做作业软件工程导论刘春计算机与信息工程学院软件工程系软件工程导论刘春两种软件开发方法结构化方法面向对象方法两种软件开发方法结构化方法面向对象方法89回顾结构化设计方法概述结构化设计的基本概念两种数据流类型:变换型和事务型系统体系结构的描述工具:系统结构图结构化设计过程概要设计变换分析事务分析详细设计案例:图书订购系统3回顾结构化设计方法概述变换分析是一系列设计步骤的总称,经过这些步骤把具有变换流特点的数据流图映射成为一个预定义的程序结构模板。变换分析的步骤:1.对DFD图的分析和划分2.进行第一级分解,设计顶层和第一层模块3.第二级分解,设计中、下层模块概要设计:变换分析变换分析是一系列设计步骤的总称,经过这些步骤把具有变换流特点第九讲:面向对象的设计课件1,第一层分解,设计顶层和第一层1,第一层分解,设计顶层和第一层第一层分解的另外一种画法第一层分解的另外一种画法1,第一层分解,设计顶层和第一层2,第二层分解1,第一层分解,设计顶层和第一层2,第二层分解1,第一层分解,设计顶层和第一层2,第二层分解1,第一层分解,设计顶层和第一层2,第二层分解1,第一层分解,设计顶层和第一层2,第二层分解1,第一层分解,设计顶层和第一层2,第二层分解第九讲:面向对象的设计课件事务:引起式、触发式启动单一动作或一串动作的任何数据、控制、信号、事件或状态变化。事务分析:由事务型数据流图映射为软件结构的过程。概要设计:事务分析事务:引起式、触发式启动单一动作或一串动作的任何数据、控制、(1)确定输入、事务变换和输出路径的集合(划分集合)。(2)根据事务的功能设计—个总控模块(设计总控)。(3)确定顶层模块和第一层模块(建立映射)。(4)继续下层分解(递归自展)。事务分析的具体过程(1)确定输入、事务变换和输出路径的集合(划分集合)。事务第九讲:面向对象的设计课件第九讲:面向对象的设计课件第九讲:面向对象的设计课件变换-事务混合:一个数据流图中既有变换又有事务分析策略:以一种分析(比如以变换分析)为主,另一种分析为辅概要设计:变换-事务混合型分析变换-事务混合:一个数据流图中既有变换又有事务概要设计:变换变换-事务混合型分析变换-事务混合型分析第九讲:面向对象的设计课件两种软件开发方法结构化方法面向对象方法两种软件开发方法结构化方法面向对象方法面向对象方法面向对象分析(ObjectOrientedAnalysis,OOA)分析和理解问题域,找出描述问题域和系统责任所需的类及对象,分析它们的内部构成和外部关系,建立OOA模型。面向对象设计(ObjectOrientedDesign,OOD)将OOA模型直接变成OOD模型,并且补充一些与实现有关的部分,如:算法、人机界面、数据存储、任务管理等。面向对象编程(ObjectOrientedProgramming,OOP)用一种面向对象的编程语言将OOD模型中的各个成分编写成程序面向对象的测试(ObjectOrientedTesting,OOT)面向对象软件维护(ObjectOrientedSoftwareMaintenance,OOSM)107面向对象方法面向对象分析(ObjectOriented108用例驱动的面向对象分析用例建模:建立用户的需求模型,由用例图体现具体过程:定义系统、确定参与者、确定用例、描述用例、确定用例之间的关系、评审用例模型对象建模建立系统的分析模型,由类图体现具体过程:理解用例、识别类和类的属性、识别类的操作、确定类与类之间的关系、评审模型22用例驱动的面向对象分析用例建模:第九讲:面向对象的设计课件对用例“开户”进行分析之后得到的类图对用例“开户”进行分析之后得到的类图第九讲:面向对象的设计课件112第十章面向对象设计方法26第十章113内容提纲面向对象设计方法概述系统设计软件体系结构设计硬件体系结构设计详细设计对象设计对象持久化设计面向对象的设计原则设计模式27内容提纲面向对象设计方法概述主要考虑“如何实现”的问题,将面向对象分析创建的分析模型,转变为作为软件构造蓝图的设计模型。不仅要说明为实现需要必须引入的类、对象及它们之间是如何关联的,描述对象间如何传递消息和对象的行为如何实现,还必须从提高软件设计质量和效率方面考虑如何改进类结构和可复用类库中的类。面向对象设计方法概述主要考虑“如何实现”的问题,将面向对象分析创建的分析模型,转系统设计:包括如何把整个系统分解为子系统、子系统的软硬件布局等策略性决策详细设计:根据具体的实现策略,对分析模型进行扩充设计评审:对所设计的系统和系统设计规格说明报告逐一进行严格审查,检查是否达到系统设计功能要求面向对象设计的主要内容系统设计:面向对象设计的主要内容包括软件系统体系结构设计和硬件系统体系结构设计

。软件系统体系结构是对系统的类、对象、接口以及相互间的交互和协作进行描述。硬件系统体系结构是要对系统的构件、节点的配置进行描述。系统设计包括软件系统体系结构设计和硬件系统体系结构设计。系统设计软件系统体系结构把系统的各种功能分配到系统的不同组织部分,并详细地描述各个组织部分之间是如何协调工作来实现这些功能的。软件系统体系结构模型的作用是:指明系统应该具有的功能完成这些功能所涉及哪些类,这些类之间如何相互联系类和它们的对象如何协作才能实现这些功能指明系统中各功能实现的先后时间顺序软件系统体系结构设计软件系统体系结构把系统的各种功能分配到系统的不同组织部分,并分层的思路是将系统按功能职责进行划分,将同一类职责的功能抽象为一层在信息系统中软件架构通常采用典型的三层结构:表示层――用户界面业务层――业务处理流程数据层――持久化存储数据层在业务层中是可见的,业务层在表示层中是可见的,反之则不可见体系结构设计的一种策略:分层分层的思路是将系统按功能职责进行划分,将同一类职责的功能抽象包(package)是一种逻辑分组手段,可以取UML模型中的任何一种事物,将相关成分聚在一起,以构成更高层的组织单元最常用的方法是将类以包为单位进行分组,比如三层结构中的每一层中的所有类组成一个包一个包可以包含其它的包,高层包被分成若干子包,子包又可以在分成更小的包软件体系结构的描述工具:包包(package)是一种逻辑分组手段,可以取UML模型中的软件体系结构设计:如何分包分包:软件类的分组两种原则:共同封闭原则:一个包中的各个类应该是由于相似的原则而改变,即将一组职责相似、但以不同方式实现的类归为一个包中。比如按照层来进行分包就是这种类型。共同复用原则:一个包中的各个类应该一起被复用,复用其中一个可能需要同时考虑同一个包中的其它协作类。软件体系结构设计:如何分包分包:软件类的分组软件体系结构的表示:包图包图用来描述包及其依赖关系当表示层包中的类要使用业务包中的业务类提供的服务时,表示包就依赖于业务包。软件体系结构的表示:包图包图用来描述包及其依赖关系将信息系统中比较关心的对象分层,可分为三层:用户界面层、业务层、数据访问层,再把各层中的一些公共部分提出来:权限管理、异常处理,这样得到包图如下:软件体系结构的设计:以信息系统为例将信息系统中比较关心的对象分层,可分为三层:用户界面层、业务用户界面层的职责是:与用户的交互,接收用户的各种输入以及输出各种提示信息或处理结果。对于输入的数据进行数据校验,过滤非法数据。向业务处理对象发送处理请求。1、用户界面层用户界面层的职责是:1、用户界面层2、业务处理包业务处理层的职责是:实现各种业务处理逻辑或处理算法。验证请求者的权限。向数据访问对象发送数据持久化操作的请求。向用户界面层返回处理结果。2、业务处理包业务处理层的职责是:3、数据访问包数据访问层的职责是:实现数据的持久化操作实现事务处理

3、数据访问包数据访问层的职责是:权限管理的主要职责是:验证请求者的请求权限提供请求者的权限列表

注:业务处理对象通过权限管理对象来验证权限

4、权限管理包权限管理的主要职责是:注:业务处理对象通过权限管理对象来验证5、异常处理包异常处理的职责:汇报运行时的详细异常信息记录异常处理日志5、异常处理包异常处理的职责:6、信息系统的体系结构的类图

6、信息系统的体系结构的类图7、体系结构的动态图7、体系结构的动态图子系统当按照业务功能或管理职能组织包,并对这样的包进行彻底的封装实现后,一个高层的具有特定功能的可以运行的独立构件就产生了,称为子系统(subsystem)子系统及其关系使用构件图描述子系统与包的区别子系统具有自身独立的功能,是物理的具体软件单位,而包只是软件对象的逻辑组织方式软件体系结构设计:子系统(1)子系统软件体系结构设计:子系统(1)子系统的接口子系统对外可以提供有限的接口,只要接口不改变,不管子系统内部发生什么变化,也不会影响到依赖于该子系统接口的其它子系统财务子系统将内部操作进行了封装,但对外提供必要的接口。销售子系统在执行销售业务过程中可以使用该接口对销售数据执行某些财务操作。对于销售子系统而言,依赖的是财务子系统的接口,并不需要关心财务子系统的具体实现。软件体系结构设计:子系统(2)子系统的接口软件体系结构设计:子系统(2)132内容提纲面向对象设计方法概述系统设计软件体系结构设计硬件体系结构设计详细设计对象设计对象持久化设计面向对象的设计原则设计模式46内容提纲面向对象设计方法概述建立硬件系统体系结构模型硬件系统体系结构模型显示硬件的结构,包括不同的节点和这些节点之间如何连接它还用图形展示了代码模块的物理结构和依赖关系硬件体系结构设计建立硬件系统体系结构模型硬件体系结构设计指出系统中的类和对象涉及的具体程序或进程。指明系统中配置的计算机和其他硬件设备。指明系统中各种计算机和硬件设备如何进行相互连接。明确不同代码文件之间的相互依赖关系。硬件体系结构模型指出系统中的类和对象涉及的具体程序或进程。硬件体系结构模型硬件体系结构的描述工具:配置图硬件体系结构的描述工具:配置图136内容提纲面向对象设计方法概述系统设计软件体系结构设计硬件体系结构设计详细设计对象设计对象持久化设计面向对象的设计原则设计模式50内容提纲面向对象设计方法概述主要包括对象设计和对象持久化设计(数据库设计)对象设计:

系统设计相当于大楼的建筑平面图,规定了每个房间的用途,以及房间与房间之间、房间与外部环境之间的连接机制。对象设计着重于每个房间的内部细节对象持久化设计:

解决对象数据的存储和检索详细设计主要包括对象设计和对象持久化设计(数据库设计)详细设计对象设计的主要任务:定义对象完整的接口设计对象内部结构详细设计:对象设计对象设计的主要任务:详细设计:对象设计对象的接口也称为对象的协议、对象的界面。接口提供了一种方法,把对象的功能说明与具体实现区分开来,使得任何依赖和使用接口的客户不必依赖于接口的具体实现,有利于接口实现的替换。

接口描述可以用UML中类图一样的符号,省略属性部分,《interface》要包含在类名部分中。定义对象的完整接口对象的接口也称为对象的协议、对象的界面。定义对象的完整接口对属性和操作进行建模属性建模:确定属性的类型和数据结构、可见性等将所有属性的可见性设置为private仅通过set方法更新属性仅通过get方法访问属性在属性的set方法中,实现简单的有效性验证,而在独立的验证方法中实现复杂的逻辑验证操作建模:确定操作的可见性、参数、返回值、算法等设计实现服务的算法。定义内部类和内部操作设计对象内部结构对属性和操作进行建模设计对象内部结构第九讲:面向对象的设计课件在状态建模中,状态通过对象属性的值来表示,状态转移是操作调用的结果,经常会反映业务规则对象设计的进一步:状态建模在状态建模中,状态通过对象属性的值来表示,对象设计的进一步:143内容提纲面向对象设计方法概述系统设计软件体系结构设计硬件体系结构设计详细设计对象设计对象持久化设计面向对象的设计原则设计模式57内容提纲面向对象设计方法概述关注的是对象数据如何存储数据存储管理的一般模式文件管理模式关系数据库管理系统面向对象数据库管理系统详细设计:对象持久化设计关注的是对象数据如何存储详细设计:对象持久化设计关系数据库与面向对象中的概念存在一定的对应对象持久化设计的方法:基于关系数据库存储关系数据库与面向对象中的概念存在一定的对应对象持久化设计的方永久类的存储设计永久类一般都是实体类,对应的是系统中涉及的数据每一个永久类映射为一个关系表,表格的列或字段对应类的属性,而行或记录对应类的实例(对象)关联的存储设计1:1关联:在一个类对应的表中用外键隐含管理1:n关联:在n端类对应的表中用外键隐含关联n:n关联:转换成1:n管理,然后按照上面的方法进行转换基于关系数据库的对象持久化设计永久类的存储设计基于关系数据库的对象持久化设计1:1关联1:1关联1:n关联1:n关联149内容提纲面向对象设计方法概述系统设计软件体系结构设计硬件体系结构设计详细设计对象设计对象持久化设计面向对象的设计原则设计模式63内容提纲面向对象设计方法概述系统设计审查就是对所设计的系统和系统设计规格说明报告逐一进行严格审查,检查是否达到系统设计功能要求。如果发现系统功能没有达到用例的要求或有遗漏,一次返回逐步检查,找到问题所在,补充设计实现其功能。这是一个反复迭代的过程。追求一个好的设计,以及设计完成后评价它是不是好的设计,不是一个笼统的概念,有一些具体的评价准则。评审设计系统设计审查就是对所设计的系统和系统设计规格说明报告逐一进行单一职责原则开放-封闭原则接口隔离原则Liskov替换原则依赖倒置原则面向对象设计原则单一职责原则面向对象设计原则一个类只完成某一类功能(职责)尽可能避免出现一个“复合”功能的类——在同一个类中完成多个不同的功能1、单一职责原则一个类只完成某一类功能(职责)1、单一职责原则第九讲:面向对象的设计课件开放−封闭原则:软件实体类(类、模块、函数等)应该是可以扩展、但是不可修改的基本思想:不用修改原有类就能扩展一个类的行为2、开放−封闭原则开放−封闭原则:软件实体类(类、模块、函数等)应该是可以扩展什么是不封闭、不开放如下的模型可以处理月薪制和时薪制职工工资,如果还要增加一种职工类型,其计酬方式不同(如提成制),则必定要修改Employee类什么是不封闭、不开放如下的模型可以处理月薪制和时薪制职工工资如何改进利用抽象机制封闭:Employee及其子类是封闭的开放:可以派生新的子类,实现新的需求如何改进利用抽象机制Liskov替换原则:子类应当可以替换父类并出现在父类能够出现的任何地方核心思想:子类型必须能够替换它们的基类型,该原则能够知道设计人员正确地进行类的继承与派生3、Liskov替换原则Liskov替换原则:子类应当可以替换父类并出现在父类能够一个违反Liskov原则的例子正方形是长方形的一种特例一个违

温馨提示

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

评论

0/150

提交评论