面向对象编程2

上传人:wt****50 文档编号:45831370 上传时间:2018-06-19 格式:PDF 页数:36 大小:442.61KB
返回 下载 相关 举报
面向对象编程2_第1页
第1页 / 共36页
面向对象编程2_第2页
第2页 / 共36页
面向对象编程2_第3页
第3页 / 共36页
面向对象编程2_第4页
第4页 / 共36页
面向对象编程2_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《面向对象编程2》由会员分享,可在线阅读,更多相关《面向对象编程2(36页珍藏版)》请在金锄头文库上搜索。

1、面向对象的编程(面向对象的编程(面向对象的编程(面向对象的编程(OOPOOPOOPOOP)和)和)和)和面向对象的编程语言(面向对象的编程语言(面向对象的编程语言(面向对象的编程语言(OOPLOOPLOOPLOOPL)主要内容:主要内容:程序设计范型程序设计范型 不同的程序设计范型不同的程序设计范型 面向对象的程序设计范型主要特点面向对象的程序设计范型主要特点 面向对象的编程语言面向对象的编程语言 基本特点、历史、类别基本特点、历史、类别 语言、类库及编程环境的结合语言、类库及编程环境的结合 为实现为实现OOD模型,如何选择编程语言模型,如何选择编程语言 从哪些方面评价编程语言?从哪些方面评价

2、编程语言? 简单介绍几种典型的简单介绍几种典型的OOPL C+Visual C+ Object PascalDelphi Smalltalk Objective-C Eiffel Java一、程序设计范型(programming paradigm)一、程序设计范型(programming paradigm) 关于计算机系统的思考方法。它体现了一类语言的主要特点。 (蔡希尧)关于计算机系统的思考方法。它体现了一类语言的主要特点。 (蔡希尧)人们在程序设计时所采用的基本方式模型。(人们在程序设计时所采用的基本方式模型。(Tello. E. R)程序设计范型(编程范型或编程范式) ,是一类典型的编程

3、风格 ,如过程化编程、面向对象编程、指令式编程等等为不同的编 程范型。编程范型提供了(同时决定了)程序员对程序执行的 看法。例如,在面向对象编程中,程序员认为程序是一系列相 互作用的对象,而在函数式编程中一个程序会被看作是一个无 状态的函数计算的序列。(维基百科)程序设计范型(编程范型或编程范式) ,是一类典型的编程风格 ,如过程化编程、面向对象编程、指令式编程等等为不同的编 程范型。编程范型提供了(同时决定了)程序员对程序执行的 看法。例如,在面向对象编程中,程序员认为程序是一系列相 互作用的对象,而在函数式编程中一个程序会被看作是一个无 状态的函数计算的序列。(维基百科)面向过程的程序设计

4、范型:面向过程的程序设计范型: 中心思想中心思想程序设计主要是过程设计程序设计主要是过程设计 决定所需的过程,设计过程的算法决定所需的过程,设计过程的算法 关键:过程调用关键:过程调用 语言提供向过程传送变元和返回值的设施语言提供向过程传送变元和返回值的设施模块化程序设计范型:模块化程序设计范型: 基本思想基本思想信息隐蔽,需求与求解方法分离,相关 的数据结构与算法结合在一个模块中,与其它模块隔 离,使其它模块不能随便访问信息隐蔽,需求与求解方法分离,相关 的数据结构与算法结合在一个模块中,与其它模块隔 离,使其它模块不能随便访问有了封装的思想有了封装的思想 例如:例如:Modula-2其它程

5、序设计范型:其它程序设计范型: 结构化程序设计,函数式程序设计,逻辑程序设计等结构化程序设计,函数式程序设计,逻辑程序设计等面向对象是一种新的程序设计范型面向对象是一种新的程序设计范型 是在上述范型基础上发展起来的是在上述范型基础上发展起来的 增加了类和继承,用类创建对象实例增加了类和继承,用类创建对象实例思想方法思想方法 从客观存在的事物出发构造软件系统从客观存在的事物出发构造软件系统 运用人类日常思维方式运用人类日常思维方式主要特点主要特点 使用对象、类、继承、封装、聚合、关联、消息、 多态性等基本概念来进行程序设计。使用对象、类、继承、封装、聚合、关联、消息、 多态性等基本概念来进行程序

6、设计。二、面向对象的编程语言(二、面向对象的编程语言(OOPL)1、基本特性:、基本特性:语言元素能够支持语言元素能够支持 类的定义类的定义 对象的静态声明或动态创建对象的静态声明或动态创建 属性和操作的定义属性和操作的定义 继承、聚合、关联和消息的表示继承、聚合、关联和消息的表示语言机制语言机制 类机制类机制 封装机制封装机制 继承机制继承机制高级特性:高级特性: 多态、多继承的表示和支持机制多态、多继承的表示和支持机制2、发展历史及语言谱系、发展历史及语言谱系AlgolAlgolSimulaSimulaSmalltalkSmalltalkLISPLISPFlavorsFlavorsLOOP

7、SLOOPSCLOSCLOSEiffelEiffelActorActorC+C+C CObjective-CObjective-CPascalPascalAdaAdaModula-2Modula-2JavaJava1960197019801990Object PascalObject PascalVisual C+Visual C+DelphiDelphi3、类别3、类别纯面向对象语言纯面向对象语言 例如:Smalltalk、 Eiffel例如:Smalltalk、 Eiffel 较全面地支持OO概念较全面地支持OO概念 强调严格的封装强调严格的封装混合型面向对象语言混合型面向对象语言 例如:

8、C+、Objective-C、Object Pascal例如:C+、Objective-C、Object Pascal 在一种非OO语言基础上扩充OO成分在一种非OO语言基础上扩充OO成分 对封装采取灵活策略对封装采取灵活策略结合人工智能的面向对象语言结合人工智能的面向对象语言 例如: Flavors、LOOPS、CLOS例如: Flavors、LOOPS、CLOS4、语言、语言+类库类库+编程环境编程环境编程语言编程语言对编程形成更 强有力的支持类库类库提供各种常用的类,如: 定义共同协议的一般类 定义基本数据结构的类 界面对象类提供各种常用的类,如: 定义共同协议的一般类 定义基本数据结构

9、的类 界面对象类编程环境编程环境 工具工具 工具工具 工具工具 工具工具提供方便易用的人机界面 和各种常用工具,如: 编辑工具、可视化编程工 具、调试工具、浏览器等提供方便易用的人机界面 和各种常用工具,如: 编辑工具、可视化编程工 具、调试工具、浏览器等1、一般原则、一般原则 * 基本原则基本原则语言的选择完全从实际出发语言的选择完全从实际出发 主要考虑成本、进度、效率等实际因素主要考虑成本、进度、效率等实际因素 * OOPL是实现是实现OOD的理想语言的理想语言 它使源程序能很好的对应它使源程序能很好的对应OOD模型。模型。 * 带有类库、编程环境、权限管理的带有类库、编程环境、权限管理的

10、OOPL更好。更好。 *用非用非OO语言也能实现语言也能实现OOD模型模型 缺乏缺乏OO机制的保证和支持,机制的保证和支持, 但若自觉遵循一定的原则,可以保持某些但若自觉遵循一定的原则,可以保持某些OO风格。风格。三、为实现OOD模型选择编程语言三、为实现OOD模型选择编程语言 在在OOD完成之后,选择什么编程语言实现完成之后,选择什么编程语言实现OOD模型?模型?着眼点:着眼点: 语言捕捉问题域语义的能力, 即对OO概念的表达能力 对OOD模型的实现能力语言捕捉问题域语义的能力, 即对OO概念的表达能力 对OOD模型的实现能力目标:目标:一致性:分析、设计和编程 各个阶段都能采用一致的基本表

11、示 概念、术语、风格都一致,形成良好的映射可复用性: 可维护性:一致性:分析、设计和编程 各个阶段都能采用一致的基本表示 概念、术语、风格都一致,形成良好的映射可复用性: 可维护性:2、编程语言的评价标准、编程语言的评价标准(1)能否描述类和对象(1)能否描述类和对象 是否提供封装机制?是否提供封装机制? 对封装有无可见性控制?对封装有无可见性控制? (2)能否实现一般-特殊结构(2)能否实现一般-特殊结构 支持多继承、单继承还是不支持继承?支持多继承、单继承还是不支持继承? 支持多继承时,是否能解决命名冲突?支持多继承时,是否能解决命名冲突? 是否支持多态?是否支持多态?职员专业 职员专业

12、在职学员在职学员学员专业 学员专业 什么是命名冲突职员类的职员类的“专业专业”是该 职员从事的专业;是该 职员从事的专业; 学员类的学员类的“专业专业”是该 学员学习的专业。是该 学员学习的专业。 问题: “在职学员在职学员”类同时继 承了两个类同时继 承了两个“专业专业”属性 ,引用时无法判断指 的是哪一个。属性 ,引用时无法判断指 的是哪一个。(3)如何实现整体-部分结构(3)如何实现整体-部分结构 用什么实现?如何表示多重性?用什么实现?如何表示多重性? (4)如何实现属性和操作(4)如何实现属性和操作 用什么表示属性?用什么描述操作?用什么表示属性?用什么描述操作? 有无可见性控制?有

13、无可见性控制? 能否描述约束?能否描述约束? 是否支持是否支持动态绑定(dynamic binding动态绑定(dynamic binding) ?) ? (5)如何实现关联和消息通讯(5)如何实现关联和消息通讯 用什么实现关联?如何表示多重性?用什么实现关联?如何表示多重性? 如何实现消息通讯?如何实现消息通讯?(6)其它可考虑的因素(反映于具体的语言版本)其它可考虑的因素(反映于具体的语言版本) 是否带有可视化编程环境是否带有可视化编程环境 是否带有类库是否带有类库 能否支持对象的永久存储能否支持对象的永久存储14在计算机语言中有两种主要的绑定方式? 静态绑定和动态绑定. 静态绑定发生于数

14、据结构和数据结构间,程序执行之前. 静态 绑定发生于编译期, 因此不能利用任何运行期的信息. 它针对 函数调用与函数的主体,或变量与内存中的区块. 动态绑定则针对运行期产生的访问请求,只用到运行期的可用 信息. 在面向对象的代码中,动态绑定意味着决定哪个方法被 调用或哪个属性被访问,将基于这个类本身而不基于访问范围.绑定:一个对象(或事物)与其某种属性建立某种联系的过 程。如:一个变量与其类型或值建立联系,一个进程与一个 处理器建立联系等。计算机科学技术百科全书(第二 版)注释:四、几种典型的面向对象的编程语言简介四、几种典型的面向对象的编程语言简介C+Visual C+ Object Pas

15、calDelphi Smalltalk Objective-C Eiffel Java重点:重点: C+, Smalltalk, Eiffel ,Java1、C+由由AT&T的的Bell试验室开发,试验室开发,1988年推出产品年推出产品是在是在C语言的基础上扩充语言的基础上扩充OO特征而得到的特征而得到的 是是C语言的超集语言的超集是一种混合型的是一种混合型的OOPL 保持保持C语言的高效率、可移植,与语言的高效率、可移植,与C兼容兼容 使广大程序员容易接受使广大程序员容易接受采用强类型机制采用强类型机制支持动态绑定支持动态绑定是目前使用最广的是目前使用最广的OOPL封装机制:有 可见性控制

16、:private、protected、public、friend 对象的创建和删除: 提供构造函数(constructor)封装机制:有 可见性控制:private、protected、public、friend 对象的创建和删除: 提供构造函数(constructor) 类名()类名() (C+规定,每个类必须有默认的构造函数,没有构造函数就不能创建对象。 )规定,每个类必须有默认的构造函数,没有构造函数就不能创建对象。 ) 和析构函数(destructor)和析构函数(destructor) 类名()类名() (析构函数的定义析构函数的定义:析构函数也是特殊的类成员函数,它没有返回类型,没有参数 ,不能随意调用,也没有重载,只有在类对象的生命期结束的时候,由系统自动调 用。析构函数也是特殊的类成员函数,它没有返回类型,没有参数 ,不能随意调用,也没有重载,只有在类对象的生命期结束的时候,由系统自动调 用。 ) 静态对象(从

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

当前位置:首页 > 行业资料 > 教育/培训

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