软件工程ppt课件第09章面向对象方法学引论.ppt
《软件工程ppt课件第09章面向对象方法学引论.ppt》由会员分享,可在线阅读,更多相关《软件工程ppt课件第09章面向对象方法学引论.ppt(91页珍藏版)》请在三一办公上搜索。
1、第九章 面向对象方法学引论(Object-Oriented Methodology),1 面向对象方法学概述1、瀑布模型的缺点:僵化瀑布模型要求:生命周期各阶段间遵守严格的顺序。实际情况是:软件开发往往在反复实践中完成。瀑布模型要求:预先定义并“冻结”软件需求。实际情况是:某些系统的需求是一个逐渐明确的过程,且预先定义的需求到软件完成时可能已经过时。,1面向对象方法学概述,本质上是功能分解,以实现功能的过程为中心,而用户的需求变化主要是针对功能的。这就使基于过程的设计不易被理解;且功能变化往往引起结构变化较大,稳定性不好。系统有明确的边界定义,且系统结构依赖于系统边界的定义,这样的系统不易扩充
2、和修改。数据与操作分开处理,可能造成软构件对具体应用环境的依赖,可重用性(reusability)较差.,2、SA-SD-SP 技术的缺点:(结构化分析、结构化设计、结构化程序设计),面向对象方法把数据和行为看成同等重要,它是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。,3、面向对象方法学(OOM),面向对象方法学具有下述4个要点。把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构件。面向对象程序是由对象组成的,程序中任何元素都是对象,复杂对象由比较简单的对象组合而成。,(2)把所有对象都划分成类(class)。每个类都定义了一组数据和一组操作,类是对具有相
3、同数据和相同操作的一组相似对象的定义。,(3)按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。在类等级中,下层派生类自动拥有上层基类中定义的数据和操作,这种现象称为继承。(4)对象彼此间仅能通过发送消息互相联系。也就是说,对象的所有私有信息都被封装在该对象内,不能从外界直接访问,这就是通常所说的封装性。,杭 州,北 京,Message,Send by method,对象Object,Object,=数据Attribute,Attributes:location;employee;,+操作Method,Methods:send;sell;
4、,注意:Object内部的attributes不允许外部用户直接改动,只有当它提供了相应的服务method时,用户才能通过发送message来提请它执行。,我想把邮局搬到我家门口,多加几个邮递员,24小时都开门,对不起,本邮局不提供此类服务,唉,那就先送束花吧 Post_office.Send(request,payment),例:,特点:尽可能模拟人类习惯的思维方式,即问题域与求解域在结构上尽可能一致。与传统方法相反,OOM以数据或信息为主线,把数据和处理结合构成统一体 对象。这时程序不再是一系列工作在数据上的函数集合,而是相互协作又彼此独立的对象的集合。,OOM的四要素:,对象(objec
5、t):世界由对象组成。,类(class):对象可划分为类;单个对象可视为某一类的实例(instance)。,1面向对象方法学概述,例:class Post_office private:loc_type location;emp_type employee;public:void send(req_type request,money_type payment);void sell(int goods,money_type payment);,main()Post_office My_PO;req_type My_request;money_type My_payment;My_PO.Send
6、(My_request,My_payment);,1面向对象方法学概述,继承(inheritance):类可分层,下层子类与上层父类有相同特征,称为继承。,消息(message):对象间只能通过发送消息进行联系,外界不能处理对象的内部数据,只能通过消息请求它进行处理(如果它提供相应消息的话)。,1面向对象方法学概述,OOM:以object 为核心,强调对现实概念的模拟而不强调算法。“面向对象方法学的基本原则,是按照人们习惯的思维方式建立问题域的模型,开发出尽可能直观、自然地表现求解方法的软件系统”。Class:由特殊到一般的归纳(induction)Inheritance:由一般到特殊的演绎(
7、deduction),OOM=Object+Class+Inheritance+Communication with messages,OOM的优点:,传统方法:面向过程设计,以计算为核心,数据与操作分离,不易理解。,1面向对象方法学概述,OOM:以object模拟实体,需求变化不会引起结构的整体变化,因为实体相对稳定,故系统也相应稳定。,传统方法:结构依赖于功能,不稳定。,传统方法:通过建立标准函数库来重用软构件。但标准函数缺少必要的“柔性”,难以适应不同场合的不同需要。,OOM:一个class所有的 instances 都可重用它的代码;由 inheritance 派生出的新的 class
8、 可重用其父类的代码,并且可以修改、扩充而不影响其父类的使用。,1面向对象方法学概述,稳定性好:软件功能需求的变化不牵动全局,只需局部修改;Class 独立性强:只要修改不涉及class的对外接口,则内部修改完全不影响外部调用;Inheritance和多态性(polymorphism)使其很容易被修改和扩充;容易理解;,传统方法:可维护性是最令人头痛的问题。OOM:从以下几方面改善了可维护性,容易测试、调试。,注:OOM并不是减少了开发时间,而是通过提高可重用性、可维护性,进行扩充和修改的容易程度等,从长远角度改进了软件的质量。OOM与Prototyping结合使用效果好。,迭代是软件开发过程
9、中普遍存在的一种内在属性。经验表明,软件过程各个阶段之间的迭代或一个阶段内各个工作步骤之间的迭代,在面向对象范型中比在结构化范型中更常见。,4 喷泉模型,使用面向对象方法学开发软件时,工作重点应该放在生命周期中的分析阶段。早期阶段定义了一系列面向问题的对象,并且在整个开发过程中不断充实和扩充这些对象。整个开发过程中都使用统一的软件概念“对象”,所有其他概念(例如功能、关系、事件等)都是围绕对象组成的,分析阶段得到的对象模型也适用于设计阶段和实现阶段。,各个开发步骤的多次反复迭代,达到认识的逐步深化。每次反复都会增加或明确一些目标系统的性质,但却不是对先前工作结果的本质性改动,这样就减少了不一致
10、性,降低了出错的可能性。喷泉模型,是典型的面向对象的软件过程模型。,喷泉模型,“喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性。代表不同阶段的圆圈相互重叠,这明确表示两个活动之间存在交迭;用面向对象方法开发软件时,在分析、设计和编码等项开发活动之间并不存在明显的边界。在一个阶段内的向下箭头代表该阶段内的迭代(或求精)。图中较小的圆圈代表维护,圆圈较小象征着采用了面向对象范型之后维护时间缩短了。,为避免使用喷泉模型开发软件时开发过程过分无序,应该把一个线性过程(例如,快速原型模型或图9.1中的中心垂线)作为总目标。面向对象范型本身要求经常对开发活动进行迭代或求精。,2.基本概念,1.对象
11、(Object),与要解决问题有关的任何事物都可以作为对象,对象是由描述该对象属性的数据以及可以对数据施加的所有操作封装在一起构成的统一体,通常把对象的操作称为服务或方法,一个对象很像一台录音机,f1,f2,f3,fi,fn,fi(X),S,gi(X,S),S,输出,输出,2.基本概念,Object:=ID+Method+Attribute+Message,对象的几个定义:(1)定义1:对象是具有相同状态的一组操作的集合。主要是从面向对象程序设计的角度看“对象”。,(2)定义2:对象是对问题域中某个东西的抽象,这种抽象反映了系统保存有关这个东西的信息或与它交互的能力。也就是说,对象是对属性值和
12、操作的封装。这个定义着重从信息模拟的角度看待“对象”。(3)定义3:对象=ID,MS,DS,MI。其中,ID是对象的标识或名字,MS是对象中的操作集合,DS是对象的数据结构,MI是对象受理的消息名集合(即对外接口)。这个定义是一个形式化的定义。,对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体,这个封装体有可以惟一地标识它的名字,而且向外界提供一组服务(即公有的操作)。对象中的数据表示对象的状态,一个对象的状态只能由该对象的操作来改变。每当需要改变对象的状态时,只能由其他对象向该对象发送消息。对象响应消息时,按照消息模式找出与之匹配的方法,并执行该方法。,从动态角度或对象的实现机制
13、来看,对象是一台自动机。具有内部状态S,操作fi(i=1,2,n)状态转换函数为gi(i=1,2,n)的一个对象,2.基本概念,特点:以数据为中心,不设与数据无关的操作;Object主动处理而不 被动地等待被处理,外部只能通过message请求操作;具有黑盒性:外部操作时,无须知道该object内部的数据结构及算法;具有并行性:不同object各自独立地处理自身数据,彼此间仅通过传递message完成通信;模块独立性好:内聚强()、耦合松(),3、实例(Instance):某个class描述的具体对象;4、消息(Message):object_ID.method_ID(parameter(s)
14、;5、方法(Method):object能做的操作,亦称为服务、响应,在 class 中须定义相应的代码;6、属性(Attribute):object 的固有数据;,2基本概念,7、继承(Inheritance):子类自动共享父类的attributes 和methods,而不必重复定义。,2、类(Class):具有相同数据和相同操作的一组对象;,2.基本概念,例:,特点:若杭州人的 methods中有与中国人的同名,则李士执行该 method 时以杭州人为准,不执行中国人中定义的同名 method。,2.基本概念,讲官话,这叫做“低层性质override高层性质”讲土话,这叫做“县官不如现管”
15、,传递性(transitivity):类C继承类B、类B继承类A、则类C继承类A,一个 类继承了上层全部 类的一切性质。,一个子类只 有 一 个父类称为单 继 承(single inheritance),一个子类可有多个父类称为多重继承(multiple inheritance).,注意:multiple inheritance 在定义中应避免二义性(ambiguity),即二个父类中定义重名,但各具不同性质。,2.基本概念,例:,修改与扩充可以很容易地通过派生子类来完成,2.基本概念,8、Polymorphism(多态性):不同层次的 classes 可共享一个method,但按各自的方式来
16、实现这种 method。,C+中定义了虚函数(virtual function)来实现这一功能。在类层次不同中可以说明名字、参数特征和返回值类型都相同的虚函数,即一个method有多个版本,运行时才决定执行哪一个。故亦称为动态联编(dynamic binding)或滞后联编(late binding),double avg(const double a,int size);double avg(const int a,int size);double avg(const double a,int size);double sum=0.0;for(int i=0;i size;+i)sum+=a
17、i;return(sum/size);double avg(const int a,int size);int sum=0;for(int i=0;i size;+i)sum+=ai;return(double)sum/size);main()int k3=1,2,3;double x3=1.1,2.2,3.3;cout avg(k,3)“int average n”;cout avg(x,3)“double average n”;,2.基本概念,9、Overloading,Function(or parameter)overloading:不同函数共用一个名字,而调用参数的特征不同。例:,O
18、perator overloading:同一运算符(operator)作用于不同类型的操作数(operand)上面。,2.基本概念,在编译(compile)阶段就决定了使用类型及执行代码,故意亦称为静态联编(static binding)或先前联编(early binding)。,3.Object Modeling Technique(OMT)Rambaugh et al(1991),建立三种模型:描述系统数据结构的对象模型(object model).描述系统控制结构的动态模型(dynamic model).描述系统功能的功能模型(function model).,软件工程专家:提出自己的面
19、向对象方法的,提出了自己的建模语言。面向对象方法发展的现实,要求在精心比较不同建模语言的优缺点和总结面向对象技术应用经验的基础上,把建模语言统一起来。,Booch,Rumbaugh和Jacobson经过合作研究,提出统一建模语言UML(The Unified Modeling Language)1996年6月设计出统一建模语言UML 0.91996年10月,在美国已有700多家公司表示支持采用UML作为建模语言在1996年年底,UML已经稳定地占领了面向对象技术市场的85%,成为事实上的工业标准。1997年11月,国际对象管理组织OMG批准把UML 1.1作为基于面向对象技术的标准建模语言。使
20、用UML提供的类图来建立对象模型。在UML中术语“类”的实际含义是,“一个类及属于该类的对象”。,一、类图的基本符号,1。定义类类图描述类及类与类之间的静态关系-静态模型,学生类,4.对象模型,类名是一类对象的名字。命名是否恰当对系统的可理解性影响相当大,因此,为类命名时应该遵守以下几条准则:(1)使用标准术语。应该使用在应用领域中人们习惯的标准术语作为类名,不要随意创造名字。例如,“交通信号灯”比“信号单元”这个名字好,“传送带”比“零件传送设备”好。(2)使用具有确切含义的名词。尽量使用能表示类的含义的日常用语作名字,不要使用空洞的或含义模糊的词作名字。例如,“库房”比“房屋”或“存物场所
21、”更确切。,4.对象模型,(3)必要时用名词短语作名字。为使名字的含义更准确,必要时用形容词加名词或其他形式的名词短语作名字。例如,“最小的领土单元”、“储藏室”、“公司员工”等都是比较恰当的名字。,4.对象模型,2.定义属性UML描述属性的语法格式如下:可见性 属性名:类型名=初值性质串属性的可见性(即可访问性)通常有下述3种:公有的(public)用加号(+)表示私有的(private)用减号(-)表示保护的(protected)用井号(#)表示如果未声明可见性,则表示该属性的可见性尚未定义。注意,没有默认的可见性。,4.对象模型,属性名和类型名之间用冒号(:)分隔。类型名表示该属性的数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 ppt 课件 09 面向 对象 方法 引论
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6027890.html