C 面向对象分析和设计初步.pptx
《C 面向对象分析和设计初步.pptx》由会员分享,可在线阅读,更多相关《C 面向对象分析和设计初步.pptx(101页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1.3.1 面向对象建模 在创建系统之前必须对问题有一个透彻的了解。为了更好的理解问题和描述问题,人们常常采用“建立问题模型”技术。如:建造一座大厦(图纸),拍电影(剧本)模型由一组图示符号和组织这些符号的规则组成,利用它们来定义和描述问题域中的术语和概念。模型是一种思考工具,利用这种工具可以把知识规范地无歧义地表示出来。第1页/共101页1.建模的目的:(1)模型帮助我们将系统可视化,可以更好地理解系统。(2)模型可以让我们直观、详细描述系统的结构和行为,并利用它和同事容易沟通。(3)模型提供了指导我们创建系统的模板,我们可以用它为使用系统的人提供帮助。(4)模型对我们所做的决策进行文档化。
2、系统越大越需要建立问题模型。为了开发复杂的软件系统,系统分析员应该抽象出目标系统的特性,使用精确的表示方法构造系统的模型,并在设计过程中逐渐把和实现有关的细节加进模型中,直至最终用程序实现模型。第2页/共101页2.建立问题模型方法1.从算法的角度建立问题模型:所有的问题都用过程/函数作为主要构造块2.面向对象的建模:所有的问题都用对象/类作为主要构造块面向对象的建模的方法很多:Rumbaugh-OMTBooch Yourdon-OOA&DJacobson-OOSEMartin -OOD每种方法都有自己的建模内容和图形化工具。第3页/共101页OMT建模OMT是著名的对象模型化技术是著名的对象
3、模型化技术OMT。OMT认为用面向对象方法开发软件,通常需要建立三种形式的模型,它们分别是:1.描述系统数据结构的对象模型(基本、核心)2.描述系统控制结构的动态模型3.描述系统功能的功能模型这三个模型从3个不同但又密切相关的角度模拟目标系统。一个典型的软件系统组合了上述三方面内容:它使用数据结构(对象模型),执行操作(动态模型),并且完成数据值的变化(功能模型)。第4页/共101页分析:对象模型是三个模型中最关键的一个模型。它的作用是描述系统的静态结构,包括构成系统的类和对象,它们的属性和操作,及它们之间的关系。(定义“对谁做”)动态模型着重于系统的控制逻辑。要想对一个系统了解得比较清楚,还
4、应当考察在任何时刻对象及其关系的改变。系统的这些涉及时序和改变状况用动态模型来描述。(定义“何时做”)功能模型着重于系统内部数据的传送和处理。功能模型表明,通过计算,从输入数据能得到什么样的输出数据,不考虑参加计算的数据按什么时序执行。(定义“做什么”)第5页/共101页最核心的模型-对象模型 面向对象方法强调围绕对象而不是围绕功能来构造系统。对于大系统:3个模型必不可少.对于小系统:对象模型必不可少。对象模型是上述三种模型中最重要、最基本、最核心的模型。对象模型表示静态的、结构化的系统的“数据”性质。它是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。第6页/共10
5、1页 OMT对象模型化技术把分析时收集的信息构造在三类模型中,即对象模型、动态模型和功能模型。动态模型动态模型对象模型对象模型功能模型功能模型 这个模型化的过程是一个迭代过程。通过不断更新、细化,直到切合系统的真正需求为止。第7页/共101页 为了建立系统模型,需要定义一组图形符号,并且规定一组组织这些符号以表示特定语义的规则。如对象模型,需要包含下列符号:表示类的符号(应该既能表示属性又能表示服务);表示对象(类实例)的符号;表示继承关系的符号;表示类和(或)对象 间其他关系的符号。统一建模语言(UML)为建立系统模型提供了一个图形化的表示手段第8页/共101页UML建模技术1.UML(Un
6、ified Modeling Language,统一建模语言)UML是软件和系统开发的标准建模语言。它主要以图形的方式对系统进行分析、设计。UML是在多种面向对象分析与设计方法相互融合的基础上形成的,是一种专用于系统建模的语言。它为开发人员与客户之间,以及开发人员之间的沟通与理解架起了“桥梁”。第9页/共101页2.UML系统视图UML 是用来描述模型的,它用模型来描述系统的结构或静态特征、以及行为或动态特征它从不同的视角为系统的架构建模,形成系统的不同视图(view)UML 提供了九种不同的图描述系统模型。可以分成两大类:一类是静态图。包括用例图、类图、对象图、组件图、配置图另一类是动态图。
7、包括序列图、协作图、状态图和活动图第10页/共101页第11页/共101页UML图(preview)1)用例图第12页/共101页2)时序图:打印第13页/共101页3)时序图:打电话第14页/共101页4)协同图:打印第15页/共101页5)状态图:电梯第16页/共101页6)封包第17页/共101页7)活动图:磁盘第18页/共101页8)构件分布图第19页/共101页9)构件图的组合第20页/共101页10)配置图:主机与外围设备第21页/共101页11)类图n类图用于表示类的存在和类与类之间的相互关系,是从系统构成的角度来描述正在开发的系统。第22页/共101页n具体类的表示:l l类的
8、名类的名类的名类的名称称称称l l属性属性属性属性l l属性属性属性属性 :数据类型数据类型数据类型数据类型l l属性属性属性属性 :数据类型数据类型数据类型数据类型 =初值初值初值初值l l操作操作操作操作l l操作操作操作操作(参数表参数表参数表参数表):):):):结果类型结果类型结果类型结果类型第23页/共101页第24页/共101页12)对象图类图表示类和类与类之间的关系,对象图则表示在某一时刻这些类的具体实例和这些实例之间的具体连接关系。由于对象是类的实例,所以UML 对象图中的概念与类图中的概念完全一致。对象图可以看作类图的示例,帮助人们理解一个比较复杂的类图。对象的图示方式与类
9、的图示方式几乎是一样的,主要差别在于对象的名字下面要加下划线。对象名有下列三种表示格式:第25页/共101页第26页/共101页13)关系类图由类和它们之间的关系,组成类与类之间通常有四种关系:泛化关系(Generalization)关联关系(Association)聚合关系(Aggregation)合成关系(Composition)依赖关系(Dependency)其中,聚合关系(Aggregation),合成关系(Composition)属于关联关系(Association)。泛化关系表现为继承或实现关系(is a),关联关系表现为变量(has a),依赖关系表现为函数中的参数(use a)
10、。第27页/共101页泛化关系:表示为类与类之间的继承关系,接口与接口之间的继承,类对接口的实现关系。表示方法:用一个空心箭头实线,箭头指向父类。或空心箭头虚线,如果父类是接口。第28页/共101页关联关系:类与类之间的联接,它使一个类知道另一个类的属性和方法。表示方法:用 实线箭头,箭头指向被使用的类。在示范代码中,Employee可以有0个或更多的TimeCard对象。但是,每个TimeCard只从属于单独一个Employee。第29页/共101页聚合关系:是关联关系的一种,是强的关联关系。聚合关系是整体和个体的关系。关联关系的两个类处于同一层次上,聚合关系两个类处于不同的层次,一个是整体
11、,一个是部分。表示方法:空心菱形实线箭头,箭头指向部分。第30页/共101页合成关系:是关联关系的一种,是比聚合关系强的关系。它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期,合成关系不能共享。表示方法:实心菱形实线箭头,lEmployee和TimeCard的关系或许更适合表示成“合成”,而不是表示成“关联”。第31页/共101页 依赖关系:是类与类之间的连接,表示一个类依赖于另一个类的定义。例如如果A依赖于B,则B体现为局部变量,方法的参数、或静态方法的调用。表示方法:虚线箭头第32页/共101页UML开发工具IBM Rational RoseMicrosoft Visio-
12、UML 模型图Borland TogetherJude(Java and UML Developers Environment),一个小巧实用的UML建模软件,是一个中日合作采用XP开发方式纯JAVA开发的软件,也可以说是半个国产软件EclipseUMLRoseStarUML:一款开放源码的UML开发工具,是由韩国公司主导开发出来的产品。第33页/共101页1.3.2 面向对象分析(OOA)1.基本内涵 面向对象的分析就是运用面向对象方法进行系统分析,抽取和整理用户需求并建立问题域精确模型的过程。它强调运用面向对象方法进行分析,用面向对象的概念和表示法表达、分析结果。第34页/共101页2.基
13、本任务OOA分析工作主要包含3项内容:理解用户需求;表达用户需求;验证用户需求。第35页/共101页3.基本步骤 面向对象分析工作大体上按照下列顺序进行:第一步,寻找类&对象;第二步,确定对象之间的关联;第三步,定义对象的属性;第四步,定义对象的服务。事实上,分析工作不可能严格地按照预定顺序进行,系统的模型往往需要反复构造多遍才能建成。通常,先构造出模型的子集,然后再逐渐扩充,直到完全、充分地理解整个问题,才能最终把模型建立起来。第36页/共101页1)确定类&对象步骤:找出侯选的类&对象。对象是对问题域中有意义的事物的抽象,它们既可能是物理实体,也可能是抽象概念。通常,将需求陈述中的名词 或
14、名词短语作为类&对象的候选者。第37页/共101页筛选出正确的类&对象。找出候选的类&对象之后,还应该严格考察每个候选者,从中去掉不正确的或不必要的。删除的依据如下:冗余的:两个类名表示了相同的信息,应该保留较全面的类&对象。无关的:与目标系统无关的类&对象。笼统的:用精确的代替模糊、笼统的类&对象。无关的属性:去掉类&对象中无关的属性。操作:通常用动词定义类中的操作。实现:在系统分析阶段应该少考虑或不考虑怎样实现目标系统。第38页/共101页2)确定关联在需求陈述中使用的描述性动词或动词词组,通常表示关联关系。因此,在初步确定关联时,大多数关联可以通过直接提取需求陈述中的动词词组而得出。分析
15、员还应该与用户及领域专家讨论问题域实体间的相互依赖、相互作用关系,根据领域知识再进一步补充一些关联。最后,还需对初步确定的关联进行进一步筛选,以去掉不正确的或不必要的关联。三个或三个以上对象之间的关联,大多可以分解为二元关联。第39页/共101页3)确定属性 分析并确定每个对象有哪些特性。确定属性的过程包括分析和选择两个步骤。通常,在需求陈述中用名词词组表示属性。应该仅考虑与具体应用直接相关的属性,不必考虑那些超出所要解决的问题范围的属性。第40页/共101页4)确定服务分析并确定每个对象有哪些对属性的操作。在确定类中应该有的服务时,既要考虑该类实体的常规行为,又要考虑为完成本系统功能所需要提
16、供的服务。第41页/共101页5)识别继承关系 确定了类中应该定义的属性和服务之后,就可以利用继承机制共享公共性质,并对系统中的类加以层次化组织。一般说来,可以使用两种方式建立继承关系:自底向上:抽象出现有类的共同性质泛化出父类,这个过程实质上模拟了人类归纳思维过程。自顶向下:把现有类细化成更具体的子类,这模似了人类的演绎思维过程。第42页/共101页l关系层关系层l特征层特征层l对象层对象层l基本模型(类图)l交l互l图l主l题l图l详 细 说 明l给出所有与问给出所有与问题域和系统责任题域和系统责任有关的对象,用有关的对象,用对象类表示对象类表示l定义每个定义每个对象类的属对象类的属性与服
17、务性与服务l通过结构与通过结构与连接描述对象连接描述对象之间的关系之间的关系l对模型对模型中的所有中的所有元素进行元素进行详细说明详细说明l对关系对关系密切的类密切的类打包,帮打包,帮助理解类助理解类图图l一幅交互图表现完成某一幅交互图表现完成某一项特定功能的一组对象一项特定功能的一组对象之间的详细交互。每一项之间的详细交互。每一项功能用一个功能用一个 use caseuse case描描述述OOA模型(模型(based on UML):第43页/共101页1.3.3 面向对象设计(OOD)面向对象分析是提取和整理用户需求,并建立问题域精确模型的过程。面向对象设计则是把分析阶段得到的需求转变成
18、符合成本和质量要求的系统实现方案的过程。从面向对象分析到面向对象设计,是一个逐渐扩充模型的过程。或者说,面向对象设计就是用面向对象观点建立求解域模型的过程。第44页/共101页1.发展过程_I1)早期的OOD(80年代至90年代初)1982 年G.Booch发表“Object-Oriented Design”,首次称“面向对象的设计”。1986 年发表“Object-Oriented Development”,较完整地阐述了OOD思想。两个术语都用OOD作为缩写,内容上也没有根本区别。1983年R.J.Abbott提出正文分析方法,用规范的英语描述对一个问题的解释,然后从描述中提取对象及其特征
19、。例:名词对象,动词操作。被后来的许多OOD方法所采用。第45页/共101页1.发展过程_II1986年后,相继出现了一批(早期的)OOD方法。如:lBooch86Object-Oriented Development(面向对象的开发)lGOODGeneral Object-Oriented Development(通用面向对象的开发)lHOODHierarchical Object-Oriented Design(层次式面向对象的设计)lOOSDObject-Oriented Structured Design(面向对象的结构设计)第46页/共101页1.发展过程_III2)现今的OOD(9
20、0年代以后)特点:以面向对象的分析为基础,一般不依赖结构化分析。与相应的OOA方法共同构成一种OOA&D方法体系。OOA和OOD采用一致的概念与原则,但属于软件生命周期的不同阶段,有不同的目标及策略。较全面地体现面向对象方法的概念与原则。大多数方法独立于编程语言,通过面向对象的分析与设计所得到的系统模型可以由不同的编程语言实现。第47页/共101页2.定义 面向对象的设计(OOD)就在是OOA模型基础上运用面向对象方法进行系统设计,目标是产生一个符合具体实现条件的OOD模型。lOOD与与OOA、OOP关系:关系:OOD是OO软件工程中承前启后的中间环节往前OOA(全部用OO概念建模)往后OOP
21、(用OOPL支持的OO概念编程)OOD使用与OOA和OOP一致的概念建立完整的、可实现的系统设计模型。第48页/共101页lOOA与OOD的目的目标、内容、内容lOOA主要内容内容是研究问题域和用户需求,运用面向对象的观点和原则发现问题域中与系统功能有关的对象,以及对象的特征和相互关系。目目标是建立一个直接映射问题域,符合用户需求的OOA模型。lOOD主要内容内容是以OOA模型为基础,按照实现的要求进行设计决策,包括全局性的决策和局部细节的设计。目目标是产生一个满足用户需求,并且完全可实现的OOD模型。l全局性全局性设计决策:决策:体系结构、分布方案、并发控制、人机交互、数据管理等。OOD方法
22、应支持用户以OO概念表达对这些问题的设计。l局部局部细节的的设计:对每个对象类的每个属性和每个服务给出详细的定义。第49页/共101页3.设计内容 通常,一个实用的软件系统在逻辑上由问题域子系统、人机交互子系统、任务管理子系统和数据管理子系统等四大部分组成。针对上述四个部分,在OOD中进行以下四个相应的活动:设计问题域部分;设计人机交互部分的;设计任务管理部分;设计数据管理部分。第50页/共101页4.设计准则_I模块化 面向对象软件开发模式,很自然的支持了把系统分解成模块的设计原则:对象就是模块。抽象 面向对象方法不仅支持过程抽象,而且支持数据抽象。类实际上是一种抽象数据数据类型。信息隐藏
23、在面向对象方法中,信息隐藏通过对象的封装性实现:类结构分离了接口与实现,从而支持了信息隐藏。第51页/共101页弱耦合 在面向对象方法中,耦合主要指不同对象之间相互关联的紧密程度。一般说来,对象之间的耦合可分为以下两类:l交互耦合:对象之间的耦合通过消息来实现,则这种耦合就是交互耦合。l继承耦合:继承是一般化类与特殊类之间耦合的一种形式。在面向对象设计时,应尽量降低交互耦合的程度,提高继承耦合程度。4.设计准则_II 为使交互耦合尽可能松散,应该遵守下述准则:1)尽量降低消息连接的复杂程度。即减少消息中包含的参数个数,降低参数的复杂程度。2)减少对象发送/接收的消息数。第52页/共101页4.
24、设计准则_III5)强内聚 在OOD中存在以下3种内聚:服务内聚:一个服务应该完成一个且仅完成一个功能。类内聚:一个类应该只有一个用途。一般特殊内聚:设计出的一般特殊结构应该是对相应领域知识的正确抽取,应该符合多数人的概念。在设计时应该力求做到高内聚。第53页/共101页4.设计准则_IV可重用 重用有两方面的含义:一是尽量使用已有的类(包括开发环境提供的类库,以及以往开发类似系统时创建的类);二是如果确实需要创建新类,则在设计这些新类的协议时,应该考虑将来的重复使用性。第54页/共101页lOOD模型模型l从两个从两个侧面来描述面来描述l人机交互部分l数据接口部分l控制接口部分l问题域l部分
25、l从一个从一个侧面面观察察lOOD模型包括:一个核心部分一个核心部分+几个外几个外围部分部分l交 互 图l主 题 图l类 图l详l 细l 说l 明l从另一从另一侧面面观察察lOOD模型采用采用OOA的概念及的概念及 模型模型组织方式方式第55页/共101页1.3.3 面向对象实现1.基本任务把面向对象设计的结果翻译成用某种面 向对象程序语言书写的面向对象程序。测试和调试编写出的面向对象程序。程序的质量主要由设计的质量决定,应该将大量的时间花在系统分析与设计上,但是所选用的程序语言的特点对程序质量也有重要影响。第56页/共101页2.面向对象语言的选择面向对象语言可以分为两类:纯面向对象语言。例
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象分析和设计初步 面向 对象 分析 设计 初步
限制150内