软件工程软件工程软件工程 (9).ppt
《软件工程软件工程软件工程 (9).ppt》由会员分享,可在线阅读,更多相关《软件工程软件工程软件工程 (9).ppt(86页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2023/3/302023/3/301 1第第第第9 9 9 9章章章章 面向对象方法学引论面向对象方法学引论面向对象方法学引论面向对象方法学引论 9.1 9.1 面向对象方法学概述面向对象方法学概述9.2 9.2 面向对象的概念面向对象的概念9.3 9.3 面向对象建模面向对象建模9.4 9.4 对象模型对象模型9.5 9.5 动态模型动态模型9.6 9.6 功能模型功能模型9.7 39.7 3种模型之间的关系种模型之间的关系2023/3/302023/3/302 29.1.1 9.1.1 9.1.1 9.1.1 要点要点要点要点9.1 概述l 面向对象方法学的面向对象方法学的出发点和基本原
2、则出发点和基本原则,是,是尽可能模尽可能模拟人类习惯的思维方式,使开发软件的方法与拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法过程尽可能接近人类认识世界解决问题的方法与过程与过程,也就是使描述问题的问题空间,也就是使描述问题的问题空间(也称为问题域也称为问题域)与实与实现解法的解空间现解法的解空间(也称为求解域也称为求解域)在结构上尽可能一致。在结构上尽可能一致。u认为客观世界是由各种对象组成的,任何事物都是对象,认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。复杂的对象可以由比较简单的对象以某种方式组合而
3、成。u把所有对象都划分成各种对象类把所有对象都划分成各种对象类(简称为类,简称为类,class),每个,每个对象类都定义了一组数据和一组方法。对象类都定义了一组数据和一组方法。u按照子类按照子类(或称为派生类或称为派生类)与父类与父类(或称为基类或称为基类)的关系,把的关系,把若干个对象类组成一个层次结构的系统若干个对象类组成一个层次结构的系统(也称为类等级也称为类等级)。u对象彼此之间仅能通过传递消息互相联系。对象彼此之间仅能通过传递消息互相联系。2023/3/302023/3/303 3l l 面向对象的方法学可以用下列方程来概括:面向对象的方法学可以用下列方程来概括:OO=objects
4、+classes+inheritance+communication with OO=objects+classes+inheritance+communication with messagesmessages也就是说,面向对象就是既使用对象又使用类和继承等机制,也就是说,面向对象就是既使用对象又使用类和继承等机制,而且对象之间仅能通过传递消息实现彼此通信。而且对象之间仅能通过传递消息实现彼此通信。l l 如果仅使用对象和消息,则这种方法可以称为基于对象的如果仅使用对象和消息,则这种方法可以称为基于对象的(object-based)(object-based)方法,而不能称为面向对象的方法;
5、方法,而不能称为面向对象的方法;l l 如果进一步要求把所有对象都划分为类,则这种方法可称如果进一步要求把所有对象都划分为类,则这种方法可称为基于类的为基于类的(class-based)(class-based)方法,但仍然不是面向对象的方法。方法,但仍然不是面向对象的方法。l l 只有同时使用对象、类、继承和消息的方法,才是真正面只有同时使用对象、类、继承和消息的方法,才是真正面向对象的方法向对象的方法。2023/3/302023/3/304 49.1.2 9.1.2 9.1.2 9.1.2 优点优点优点优点9.1 概述 l 与人类习惯的思维方法一致;与人类习惯的思维方法一致;l 稳定性好;
6、稳定性好;l 可重用性好;可重用性好;l 较易开发大型的软件产品;较易开发大型的软件产品;l 可维护性好。可维护性好。2023/3/302023/3/305 59.1.3 9.1.3 9.1.3 9.1.3 喷泉模型喷泉模型喷泉模型喷泉模型9.1 概述l迭代是软件开发过程中普遍存在的一种内在属性。经验表迭代是软件开发过程中普遍存在的一种内在属性。经验表明,软件过程各个阶段之间的迭代或一个阶段内各个工作明,软件过程各个阶段之间的迭代或一个阶段内各个工作步骤之间的迭代,在面向对象范型中比在结构化范型中更步骤之间的迭代,在面向对象范型中比在结构化范型中更常见。常见。l一般说来,使用面向对象方法学开发
7、软件时,工作重点应一般说来,使用面向对象方法学开发软件时,工作重点应该放在生命周期中的分析阶段。这种方法在开发的早期阶该放在生命周期中的分析阶段。这种方法在开发的早期阶段定义了一系列面向问题的对象,并且在整个开发过程中段定义了一系列面向问题的对象,并且在整个开发过程中不断充实和扩充这些对象。不断充实和扩充这些对象。l 为避免使用喷泉模型开发软件时开发过程过分无序,应为避免使用喷泉模型开发软件时开发过程过分无序,应该把一个线性过程(例如,快速原型模型)作为总目标。该把一个线性过程(例如,快速原型模型)作为总目标。但是,同时也应该记住,面向对象范型本身要求经常对开但是,同时也应该记住,面向对象范型
8、本身要求经常对开发活动进行迭代或求精。发活动进行迭代或求精。2023/3/302023/3/306 69.1.3 喷泉模型述图图9.1 喷泉模型喷泉模型2023/3/302023/3/307 79.2.1 9.2.1 9.2.1 9.2.1 对象对象对象对象9.2 概念l 对象是对问题域中某个实体的抽象,设立某个对象就反映了对象是对问题域中某个实体的抽象,设立某个对象就反映了软件系统具有保存有关它的信息并且与它进行交互的能力。软件系统具有保存有关它的信息并且与它进行交互的能力。l 对象的形象表示:为有助于读者理解对象的概念,图对象的形象表示:为有助于读者理解对象的概念,图9.2形象形象地描绘了
9、具有地描绘了具有3个操作的对象。个操作的对象。图图9.2 对象的形象表示对象的形象表示2023/3/302023/3/308 8l 我们把客观世界的实体称之为问题空间(问题域)的对象。例如,一个人可以是一个对象,一条信息可以是一个对象,一本书可以是一个对象,一家图书馆也可以是一个对象。可见,对象是以初始的对象为基本元素,经过层层组合而成的。因此,整个客观世界可认为是一个最复杂的对象。2023/3/302023/3/309 9l 对象是一个由信息及有关对它进行处理的描述所组成的包。在面向对象的程序设计中,“对象”是系统中的基本运行实体,也就是说,“对象”是具有特殊属性特殊属性(数据)和行为方式行
10、为方式(方法)的实体。u对象的特殊属性就确定了给定时刻对象的状态,用数据值来描述它的状态,例如,用学号、姓名、性别、年龄和专业等数据值描述一个学生对象的状态。u与每一个对象相关的方法定义了该对象上的操作,例如,学生信息登记、学生专业查询等方法定义了学生对象的操作。因此,对象是数据和操作的封装体,如图8.1所示。2023/3/302023/3/301010图9.3 对象 2023/3/302023/3/3011119.2.1 对象 l 定义定义1:对象是具有相同状态的一组操作的集合。这个定义对象是具有相同状态的一组操作的集合。这个定义主要是从主要是从面向对象程序设计的角度看面向对象程序设计的角度
11、看“对象对象”。l 定义定义2:对象是对问题域中某个东西的抽象,这种抽象反映对象是对问题域中某个东西的抽象,这种抽象反映了系统保存有关这个东西的信息或与它交互的能力。也就是了系统保存有关这个东西的信息或与它交互的能力。也就是说,对象是对属性值和操作的封装。这个定义着重说,对象是对属性值和操作的封装。这个定义着重从信息从信息模拟的角度看待模拟的角度看待“对象对象”。l 定义定义3:对象对象=ID,MS,DS,MI。其中,。其中,ID是对象的标识是对象的标识或名字,或名字,MS是对象中的操作集合,是对象中的操作集合,DS是对象的数据结构,是对象的数据结构,MI是对象受理的消息名集合是对象受理的消息
12、名集合(即对外接口即对外接口)。这个定义是一个。这个定义是一个形式化的定义形式化的定义。2023/3/302023/3/301212 对对象象(Object)Object)是是是是客客客客观观观观事事事事物物物物或或或或概概概概念念念念的的的的抽抽抽抽象象象象表表表表述述述述,即即即即对对客客观观存存在在的的事事物物的的描描述述统统称称为为对对象象,对对象象可可以以是是事事、物物、或或抽抽象象概概念念 ,是是将将一一组组数数据据和和使使用用该该数数据据的的一一组组基基本本操操作作或或过过程封装在一起的实体程封装在一起的实体。对对对对 象象象象 都都都都 存存存存 在在在在 一一一一 定定定定
13、的的的的状状态态(state)state),内内内内 部部部部标标识识(identity)identity),可可可可以以以以给给给给对对对对象象象象定定定定义义义义一一组组运运算算(operation),operation),对对对对象象象象通通通通过过过过其其其其运运运运算算算算所所所所展展展展示示示示的的的的特特特特定定定定行行行行为为为为称称称称为为为为对对象象行行为为(behavior),behavior),对对对对象象象象本本本本身身身身的的的的性性性性质质质质称称称称为为为为属属性性(attribute)(attribute),对对对对象象象象将将将将它它它它自自自自身身身身的的
14、的的属属属属性性性性及运算及运算及运算及运算“包装起来包装起来包装起来包装起来”,称为,称为,称为,称为“封装封装”(encapsulation).encapsulation).对象的最基本的特征是封装性和继承性。对象的最基本的特征是封装性和继承性。9.2.1 对象 2023/3/302023/3/3013139.2.1 对象图图9.4 用自动机模拟对象用自动机模拟对象2023/3/302023/3/3014149.2.1 对象对象具有如下一些基本特点:对象具有如下一些基本特点:l以数据为中心。以数据为中心。l 对象是主动的。对象是主动的。l本质上具有并行性。本质上具有并行性。l 模块独立性好
15、。模块独立性好。l实现了数据封装。实现了数据封装。2023/3/302023/3/3015159.2.1 对象.封装u 在面向对象的程序中,把数据和实现操作的代码集中起在面向对象的程序中,把数据和实现操作的代码集中起来放在对象内部。一个对象好像是一个不透明的黑盒子,来放在对象内部。一个对象好像是一个不透明的黑盒子,表示对象状态的数据和实现操作的代码与局部数据,都被表示对象状态的数据和实现操作的代码与局部数据,都被封装在黑盒子里面,从外面是看不见的,更不能从外面直封装在黑盒子里面,从外面是看不见的,更不能从外面直接访问或修改这些数据和代码。使用一个对象的时候,只接访问或修改这些数据和代码。使用一
16、个对象的时候,只需知道它向外界提供的接口形式,无须知道它的数据结构需知道它向外界提供的接口形式,无须知道它的数据结构细节和实现操作的算法。细节和实现操作的算法。u 对象具有封装性的条件如下:对象具有封装性的条件如下:(1)有一个清晰的边界。所有私有数据和实现操作的代码有一个清晰的边界。所有私有数据和实现操作的代码都被封装在这个边界内,从外面看不见更不能直接访问。都被封装在这个边界内,从外面看不见更不能直接访问。(2)有确定的接口(即协议)。这些接口就是对象可以接有确定的接口(即协议)。这些接口就是对象可以接受的消息,只能通过向对象发送消息来使用它。受的消息,只能通过向对象发送消息来使用它。(3
17、)受保护的内部实现。实现对象功能的细节(私有数据受保护的内部实现。实现对象功能的细节(私有数据和代码)不能在定义该对象的类的范围外访问。和代码)不能在定义该对象的类的范围外访问。2023/3/302023/3/301616类类类类(ClassClassClassClass)类类又又称称对对象象类类(Object Object ClassClass),是是是是一一组组具具有有相相同同属属性性和和相相同同操操作作的的对对象象的的集集合合。在在一一个个类类中中,每每个个对对象象都都是是类类的的实实例例(instance),它们都可以使用类中提供的函数。,它们都可以使用类中提供的函数。类类具具有有属属
18、性性,用用数数据据结结构构来来描描述述类类的的属属性性,类类具具有有操操作作,它它是是对对象象的的行行为为的的抽抽象象,操操作作实实现现的的过过程程称称为为方方法法(method),方法,方法有方法名,方法体和参数。有方法名,方法体和参数。由于对象是类的实例,在进行分析和设计时,通常把注由于对象是类的实例,在进行分析和设计时,通常把注意力集中在类上,而不是具体的对象上意力集中在类上,而不是具体的对象上。9.2 概念9.2.2 9.2.2 9.2.2 9.2.2 其它概念其它概念其它概念其它概念2023/3/302023/3/3017179.2 概念 实例:实例:实际上类是建立对象时使用的实际上
19、类是建立对象时使用的“样板样板”,按,按照这个样板所建立的一个个具体的对象,就是类的实际例照这个样板所建立的一个个具体的对象,就是类的实际例子,通常称为子,通常称为实例实例。当使用。当使用“对象对象”这个术语时,既可以这个术语时,既可以指一个具体的对象,也可以泛指一般的对象,但是,当使指一个具体的对象,也可以泛指一般的对象,但是,当使用用“实例实例”这个术语时,必然是指一个具体的对象。这个术语时,必然是指一个具体的对象。2023/3/302023/3/301818几何对象几何对象颜色颜色位置位置移动(移动(delta:矢量):矢量)选择(选择(P:指针型)指针型):布尔型布尔型旋转旋转(角度角
20、度)l l图图图图9.5 9.5 9.5 9.5 对象类的描述对象类的描述对象类的描述对象类的描述人人姓姓 名名:字符串字符串年年 龄龄:整整 型型改换工作改换工作改换地址改换地址文件文件文件名文件名文件大小文件大小最近更新日期最近更新日期打印打印(人人)里斯里斯28绘图员绘图员人民路人民路8号号(人人)张山张山24程序员程序员无无l l图图图图9.6 9.6 9.6 9.6 对象的描述对象的描述对象的描述对象的描述对象和类的描述对象和类的描述对象和类的描述对象和类的描述对象和类一般采用对象和类一般采用对象和类一般采用对象和类一般采用“对象图对象图对象图对象图”和和和和 “类图类图类图类图”来
21、描述。来描述。来描述。来描述。类名类名属性属性运算运算 对象图对象图 类图类图2023/3/302023/3/301919消息消息消息消息(Message)Message)消消消消息息息息就就就就是是是是向向向向对对对对象象象象发发发发出出出出的的的的服服服服务务务务请请请请求求求求(互互相相联联系系、协协同同工工作作等等)。对对象象之之间间的的联联系系可可表表示示为为对对象象间间的的消消息息传传递递,即即对象间的通讯机制。对象间的通讯机制。一一个个消消息息应应该该包包含含以以下下信信息息:消消息息名名、接接收收消消息息对对象象的标识、服务标识的标识、服务标识 、消息和方法、输入信息、回答信息
22、。、消息和方法、输入信息、回答信息。注注注注意意意意:在在在在并并并并发发发发系系系系统统统统中中中中,多多多多个个个个控控控控制制制制线线线线程程程程(Thread Thread Thread Thread of of of of Control)Control)Control)Control)并并并并发发发发执执执执行行行行,情情情情况况况况就就就就复复复复杂杂杂杂得得得得多多多多,消消消消息息息息可可可可以以以以是是是是发发发发出出出出服服服服务务务务请请请请求求求求、提提提提交交交交数数数数据据据据、发发发发布布布布事事事事件件件件信信信信息息息息、或或或或是是是是传传传传递递递递同同
23、同同步步步步控控控控制制制制信信信信息。息。息。息。在在对对象象的的操操作作中中当当一一个个消消息息发发送送给给某某个个对对象象时时,消消息息包含接收对象去执行某种操作的消息。包含接收对象去执行某种操作的消息。2023/3/302023/3/302020l l消息消息(Message)Message)属性:姓名属性:姓名 年龄年龄 单位单位 职称职称 工资工资状态:李立状态:李立 25 计算机系计算机系 讲师讲师 900方法:调工资方法:调工资 (计算公式)(计算公式)评职称评职称 (步骤、条件)(步骤、条件)李立,调工资(李立,调工资()数数据据结结构构数数据据值值人事处向对象发消息人事处向
24、对象发消息执行执行的的操作操作方方法法体体类:教师类:教师对象:李立对象:李立抽象抽象实例实例抽象抽象实例实例抽象抽象方法名(参数)方法名(参数)图9.7 对象、类和消息传递2023/3/302023/3/3021219.2 概念l 方法:方法:就是对象所能执行的操作,也就是类中所定义就是对象所能执行的操作,也就是类中所定义的服务。方法描述了对象执行操作的算法,响应消息的方的服务。方法描述了对象执行操作的算法,响应消息的方法。在法。在C+语言中把方法称为成员函数。语言中把方法称为成员函数。l 属性:属性:就是类中所定义的数据,它是对客观世界实体就是类中所定义的数据,它是对客观世界实体所具有的性
25、质的抽象。类的每个实例都有自己特有的属性所具有的性质的抽象。类的每个实例都有自己特有的属性值。在值。在C+语言中把属性称为数据成员。语言中把属性称为数据成员。2023/3/302023/3/302222 继承继承继承继承 (InheritanceInheritanceInheritanceInheritance)继继承承是是使使用用现现存存的的定定义义作作为为基基础础,建建立立新新定定义义的的技技术术。是是父父类类和和子子类类之之间间共共享享数数据据结结构构和和方方法法的的机机制制,这这是是类类之之间间的的一一种种关关系系。在在定定义义和和实实现现一一个个类类的的时时候候,可可以以在在一一个个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程软件工程软件工程 9 软件工程
限制150内