- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Chap1 绪论1.doc
面向对象程序设计(C++)
Object-Oriented Programming in C++ Language
教材:
马光志. C++程序设计实践教程. 华中科技大学出版
参考书:
①王燕. 面向对象的理论与C++实践. 清华版②C++ Thinking. 机械工业出版社
Chap1 绪论
一、面向对象思想的由来
1.产生原因:
人们希望能更直接与计算机进行交互 ( 寻求一种更能反映人类解决问题的自然办法
软件系统越来越庞大、复杂,传统的结构化方法无法满足易维护、易扩充、可重用性好等要求( 模拟客观世界的构成法则来构造软件系统(将系统分解成一系列的使能实体)
2.实质:
从现实世界中客观存在的事物(即对象)出发来构造软件系统,追求软件系统对现实世界的直接模拟,尽量将现实世界中的事物直接映射到软件系统的解空间。
二、面向对象方法构造软件系统的步骤
1.系统分析 —— 建立对象模型
发现对象;定义对象属性和服务;分析对象之间的联系;建立系统的对象模型、动态模型和功能模型
2.系统设计 —— 确立对象模型的实现方法
系统分解;设计问题域子系统,确定应用系统的边界;设计人-机交互子系统;设计任务管理子系统(分析系统的并发性、分配处理器的任务);设计数据管理子系统(选择数据存储管理模式);处理全局资源的访问;等等
3.对象设计 —— 三种模型转换成类
对象模型(类的属性:主要考虑对象关联的实现方法
动态模型(类的方法:选用事件驱动的运行环境
功能模型(主控模块或子控模块:顺序执行or事件驱动方式实现流 程控制
4.对象实现 —— 编码
选用合适的面向对象程序设计语言(OOPL)和开发环境(DE),定义类的属性及其方法,编写主控模块及子控模块
三、面向对象的程序设计
1.结构化的程序设计(Structure Programming)
特点:采用模块分解与功能抽象,自顶向下、分而治之的手段,从而将一个较复杂的程序系统的设计任务分成许多易于控制和处理的子任务,这些子任务都是可独立编程的子程序模块。
存在的问题:
面向数据/过程的设计方法,数据和过程分离,导致
1)程序的可重用性差(不同的数据格式即使做相同的处理或对相同的数据格式要做不同的处理都需要编写不同的程序)
2)数据与程序有时不相容(存在错误的数据调用正确的程序模块或正确的数据调用错误的程序模块的可能性)
2.面向对象的程序设计(Object-Oriented Programming-OOP)
特点:
1)将数据及对数据的操作放在一起,作为一个相互依存、不可分割的整体来处理,采用数据抽象和信息隐藏技术。(封装性)
2)将对象及对对象的操作抽象成一种新的数据类型——类,并且考虑不同对象之间的联系和对象类的重用性。(类、对象、消息、继承)
OOP吸收了结构化程序设计的优点,又考虑了现实世界与面向对象解空间的映射关系(追求目标:问题求解空间尽可能简单化)
例:
优点:
1)有希望解决软件工程的两个主要问题——软件复杂性控制和软件生产率的提高;
2)符合人类的思维习惯,能够自然地表现现实世界的实体和问题。
四、面向对象的程序设计语言
1.发展历程:
封装机制:Ada, Modula-2
对象抽象:Simula ——OO锥形
面向对象的语言:Smalltalk-80,C++, Objected Pascal(Delphi), Java, C#, VB .NET
C++:以C为基础的多继承的OOPL
Java:以C++为基础的单继承的OOPL——网络化的OOPL
C#:以C++为基础的单继承的可重载运算符的OOPL
2.SmallTalk —— 第一个真正的OOPL
1976年,SmallTalk-72:有列表和控制结构,但没有类的概念
1978年,SmallTalk-74:引入多窗口界面,有类的概念
1981年,SmallTalk-80:引入和完善了类、方法、实例等概念,应用了继承机制和动态连接,第一个最纯粹的面向对象程序设计语言
3.C++ —— 混合型的OOPL
1986年,美国ATT的贝尔实验室开发
吸收了C、OBJECTIVE-C、SIMULA等语言特点而发展:
1)C的超集,完全兼容C
2)是一种强类型语言:编译阶段就能发现C++程序的潜在错误
3)表达能力强:多继承性、构造函数、虚函数、友元函数提高了其表达能力
4)提供了自动回收和显式回收两种内存管理方式
5)提供了运算符重载机制:对象的运算更易表达且表达更加自然,如 和
6)不是纯面向对象的语言:未提供供所有类继承的祖先类;继承C的函数和模块结构,程序由对象和模块混合构成,而非完全由类和对象构成
7)提供了异常处理机制:程序更易于理解和维护
五、面向对象程序设计范型
1.程序设计范型
概念:程
文档评论(0)