软件工程课本讲解第9章 面向对象基础

上传人:xy****7 文档编号:94168141 上传时间:2019-08-03 格式:PPT 页数:36 大小:419KB
返回 下载 相关 举报
软件工程课本讲解第9章 面向对象基础_第1页
第1页 / 共36页
软件工程课本讲解第9章 面向对象基础_第2页
第2页 / 共36页
软件工程课本讲解第9章 面向对象基础_第3页
第3页 / 共36页
软件工程课本讲解第9章 面向对象基础_第4页
第4页 / 共36页
软件工程课本讲解第9章 面向对象基础_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《软件工程课本讲解第9章 面向对象基础》由会员分享,可在线阅读,更多相关《软件工程课本讲解第9章 面向对象基础(36页珍藏版)》请在金锄头文库上搜索。

1、第9章 面向对象基础,9.1 面向对象程序设计语言的发展 9.2 面向对象程序设计模式 9.3 面向对象的概念 9.4 面向对象的开发方法 9.5 小结 习题,9.1 面向对象程序设计语言的发展,9.1.1 Simula语言 Simula 67是一种真正的多功能程序设计语言,仿真是其中的一个应用。,9.1.2 Smalltalk语言 Smalltalk是一种纯面向对象程序设计语言,它强调对象概念的归一性,引入了类、子类、方法、消息和实例等概念术语,应用了单继承性和动态联编,成为面向对象程序设计语言发展中一个引人注目的里程碑。,9.1.3 Eiffel语言 Eiffel它是继Smalltalk

2、80之后又一个纯面向对象的程序设计语言。它的主要特点是全面的静态类型化、全面支持面向对象的概念、支持动态联编、支持多重继承和具有再命名机制可解决多重继承中的同名冲突问题。,9.1.4 C+语言 C+是一种混合型的面向对象的强类型语言,C+是C语言的超集,融合了Simula的面向对象的机制,借鉴了ALGOL 68中变量声明位置不受限制、操作符重载,形成一种比Smalltalk更接近于机器但又比C语言更接近问题的面向对象程序设计语言。,9.1.5 面向对象程序设计语言 目前已有几十种面向对象语言出现,这些语言分为两大类:第一类是纯面向对象的程序设计语言,它们是Smalltalk-80,Eiffel

3、,SELF,Java等;第二类是混合式面向对象程序设计语言,它们是C+,Simula,CLOS,CommonLoops,Objective-C,objective Pascal等。,9.2 面向对象程序设计模式,9.2.1 软件能力面临的问题(略) 1. 软件能力 2. 制约软件发展的主要因素 3. 传统软件工程的局限性 4. 软件形式化开发至今尚未真正实用 5. 必然的选择采用新的程序设计模式,9.2.2 程序设计基本模式 程序设计模式是人们在程序设计时所采用的基本方式模型,它是以一类程序设计语言为基础,体现了一类语言的主要特点,这些特点能用以支持应用领域所希望的设计风格。从第一个程序设计语

4、言产生以来,有如下的基本程序设计模式。 1. 过程程序设计 例如FORTURN语言。 2. 结构化程序设计 这种模式的程序设计语言有Modula,Ada,C和PASCAL等。 3. 函数程序设计 函数程序设计语言的代表是LISP等语言。 4. 逻辑程序设计 逻辑程序设计模式的语言代表是PROLOG等语言 5.面向对象程序设计 9.2.3 程序设计模式的转换 (略),9.2.4 面向对象程序设计模式的机制 1. 基本特征 面向对象的程序设计将计算看作是一个系统的开发过程,系统由对象组成,经历一连串的状态变化以完成计算任务。 面向对象程序设计对体系结构和支撑软件系统没有突变要求,因而不存在难以应用

5、现有资源的问题。 2. 基础构件 面向对象程序的基础构件是对象和类。 从程序设计角度来看,对象是一种不依赖于外界的模块,对应着存储器中的一块被划分的区域。它包含数据,在逻辑上也包含作用于这些数据的过程,这些过程称为方法。,杭 州,北 京,Message,Send by method,对象Object,Object,= 数据Attribute,Attributes: location; employee; ,+ 操作Method,Methods: send; sell; ,注意:Object内部的attributes不允许外部用户直接改动,只有当它提供了相应的服务method时,用户才能通过发送

6、message来提请它执行。,我想把邮局搬到 我家门口,多加几个 邮递员,24小时都开门 ,对不起, 本邮局不提供 此类服务,唉,那就先送束花吧 Post_office.Send (request, payment),软件工程的新途径,面向对象方法学(OOM) 例:,3. 基本机制 面向对象程序设计的基本机制是继承性、消息和方法,还有在特定方面提供更为专门的、灵活的机制,如重置、多态等。,9.3 面向对象的概念,9.3.1 面向对象的基本思想,尽可能模拟人类习惯的思维方式,即问题域与求解域在结构上尽可能一致。与传统方法相反,OOM以数据或信息为主线,把数据和处理结合构成统一体 对象。这时程序不

7、再是一系列工作在数据上的函数集合,而是相互协作又彼此独立的对象的集合。,程序=(对象、对象、对象、对象 ),计算机世界,现实世界,结 构 化 开 发 方 法,结构化 分析,结构化 设计,结构化 编程,OOA,OOD,OOP,面 向 对 象 开 发 方 法,OOM,什么是面向对象,Coad和Yourdon给出了一个定义:“面向对象=对象+类+继承+通信”。 如果一个软件系统是使用这样 4 个概念设计和实现的,则我们认为这个软件系统是面向对象的。 一个面向对象的程序的每一成份应是对象,计算是通过新的对象的建立和对象之间的通信来执行的。,9.3.2 面向对象的基本概念,对象(object),客观世界

8、里的任何实体都可以被看作是对象。对象可以是具体的物,也可以指某些概念。(有形实体、作用、事件、性能说明) 对象是面向对象开发模式的基本成份。 每个对象可用它本身的一组属性和它可以执行的一组操作来定义。 从编程的角度来看,对象=(算法+数据结构) 或 对象=(操作+属性) 即对象实现了数据和操作的结合,使数据和操作封装在对象的统一体内。 属性:属性用来表示对象的状态 操作又称为方法或服务,它描述了对象执行的功能,描述对象行为的过程,若通过消息传递,还可以为其它对象使用。,类(class),类是一组具有相同数据结构和相同操作的对象的集合。 类的定义包括一组数据属性和在数据上的一组合法操作。 类定义

9、可以视为一个具有类似特性与共同行为的对象的模板,可用来产生对象。,在一个类中,每个对象都是类的实例 (Instance),它们都可使用类中提供的函数。 对象的状态则包含在它的实例变量,即实例的属性中。,例:人类是一个类,张三、李四都是人的实例(对象),一个类描述这些事务所应具有的属性,如人有身高、体重、文化程度、性别、年龄等。 一个对象是类的一个实例,它具有确定的属性,如张三的身高180、体重70、大本、男、21 人类只有一个,人类的实例可以有多个。,【例1】基于Visual FoxPro的FORM类生成一个对象,然后访问该对象的一些属性和方法。 Oform=CREATEOBJECT(“For

10、m“) &生成一个空白表单 Oform.show &显示表单 Oform.caption=“演示” &修改表单的标题 ?“这是一个生成对象的演示程序” &在表单上输出字符串 Oform.release &释放表单,对象,类,方法(操作),属性,李杰,李杰 男 广东 软件 1980.4 9#楼129室,看书 实验 上课 运动,杨芳,服务,王辉 男 湖南 计算机控制 1979.1 9#楼320室,杨芳 女 北京 系统结构 1979.12 5#楼418室,姓名 性别 籍贯 专业 出生年月 住址,学生,属性,王辉,属性,属性,属性,看书 实验 上课 运动,服务,看书 实验 上课 运动,服务,看书 实验

11、 上课 运动,服务,类,对象,消息(Message),消息是一个对象与另一个对象的通信单元,是要求某个对象执行类中定义的某个操作的规格说明。发送给一个对象的消息定义了一个方法名和一个参数表(可能是空的),并指定某一个对象。,消息通信是面向对象的方法中对象之间相互联系的方法。这和Fortran、C等传统编程语言中带参数子程序调用是相似的。,对象间只能通过发送消息进行联系,外界不能处理对象的内部数据,只能通过消息请求它进行处理(如果它提供相应消息的话)。,Message: = object_ID. method_ID (parameter(s),一个对象接收的消息则调用消息中指定的方法,并将形式参

12、数与参数表中相应的值结合起来。 例如:Post_office.Send (request, payment),9.3.3 面向对象的特征 1. 对象唯一性 每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。在对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。在对象建立时,由系统授予新对象唯一的对象标识符,它在历史版本管理中有巨大作用。,2. 分类性 分类性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。每个类是个体对象的可能无限集

13、合,而每个对象是相关类的实例。,3.继承 (Inheritance),继承是使用已存在的定义做为基础建立新定义的技术。是子类自动共享父类数据结构和方法的机制。 新类的定义可以是既存类所声明的数据和新类所增加的声明的组合。新类可以不加修改复用既存类的定义。既存类是父类(基类),新类是子类(派生类)。 可以是单重继承和多重继承。 一个子类的成员一般包括: (1)从其父类继承的属性和方法。 (2)由子类自己定义的属性和方法。,4.多态性,相同的操作或函数、过程可作用于多种不同类型对象上并获得不同结果。即不同的对象,收到同一消息可以产生不同的结果 。,在打印领域,打印程序可以打印字符、数字、图形、图像

14、,打印程序由于知道如何同时打印图文,因而是多态的 。,几何图形的draw方法,可以根据图形不同而画出不同的图形,如MOVE操作,可以是窗口对象的移动操作,也可以是国际象棋棋子的移动操作。,9.3.4 面向对象的要素 面向对象有一些基本要素。虽然这些要素并不是仅为面向对象系统所独有,但这些要素很适合于用来支持面向对象的系统。 1. 抽象 抽象是指强调实体的本质、内在的属性,而忽略一些无关紧要的属性。在系统开发中,抽象指的是在决定如何实现对象之前,对象的意义和行为。使用抽象可以尽可能避免过早考虑一些细节,大多数语言都提供数据抽象机制,而运用继承性和多态性强化了这种能力,分析阶段使用抽象仅仅涉及应用

15、域的概念,在理解问题域之前不考虑设计与实现。合理应用抽象可以在分析、设计、程序结构、数据库结构及文档化等过程中使用统一的模型。,面向对象比其他方法技术有更高的抽象性。对象具有极强的抽象表达能力,对象可表示一切事物,可表达结构化的数据,也可表达非结构化的数据,如工程实体、图形、声音及规则等。而类实现了对象的数据和行为的抽象,是对象的共性的抽象。 2. 封装性(信息隐蔽) 封装性是保证软件部件具有优良的模块性的基础。封装性是指所有软件部件内部都有明确的范围以及清楚的外部边界。每个软件部件都有友好的界面接口,软件部件的内部实现与外部可访问性分离。,面向对象的类是封装良好的模块,类定义将其说明(用户可

16、见的外部接口)与实现(用户不可见的内部实现)显式地分开,其内部实现按其具体定义的作用域提供保护。 对象是封装的最基本单位,在用面向对象的方法解决实际问题时,要创建类的实例,即建立对象,除了应具有的共性外,还应定义仅由该对象所私有的特性。因此,对象封装比类的封装更具体、更细致, 是面向对象封装的最基本单位。 封装防止了程序相互依赖性而带来的变动影响。面向对象的封装比传统语言的封装更为清晰、有力。,3. 共享性 面向对象技术在不同级别上促进了共享, 有以下几种: (1) 同一个类中对象的共享。同一个类中的对象有着相同数据结构,这是由数据成员的类型、定义顺序及继承关系等决定的;也有着相同的行为特征,这是由方法接口和实现决定的。从这个意义上讲,这些对象之间是结构、行为特征的共享关系。进一步,在某些实际应用中还会出现要求这些对象之间有状态(即数据成员值)的共享关系。例如,所有同心圆的类,各个具体圆的圆心坐标值是相同的,即共处于同一状态。,(2) 在同一个应用

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号