版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《C++语言教程》刘强地表空间信息研究所主楼中418室电话:832033021淘花/baidu专用第1页第一章
引
论
C++语言是一种面向对象语言,它所支持面向对象概念容易将问题空间直接映射到程序空间,为程序员提供了一种与传统构造程序设计十分不一样思维方式。2淘花/baidu专用第2页因此,学习C++语言面临两个问题,如何建立面向对象思维方式?如何用C++语言编程?亦即需要学习面向对象设计办法和使用C++语言编程办法。
3淘花/baidu专用第3页1.1面向对象目标传统程序设计办法是模块化(或构造化)程序设计办法,步骤为:(1)整个软件系统功能逐渐细化为多种小功能—功能划分;(2)多种小功能对应由一种模块(如函数,过程,分程序,子程序等)来实现;4淘花/baidu专用第4页(3)多种模块合作完成较大功能,所有模块合作完成整个软件系统功能。对于传统程序设计,在设计和实现(编程)阶段考虑是模块,程序本身也是由模块组成,称之为面向模块(面向过程)。
5淘花/baidu专用第5页面向对象目标归纳为:对试图利用计算机进行问题求解和信息处理领域,尽可能使用对象概念,将问题空间中现实模型映射到程序空间,由此所得到自然性可望克服软件系统复杂性,从而得到问题求解和信息处理更高性能。6淘花/baidu专用第6页1.2面向对象语言关键概念数据类型是一个抽象概念,包括有一组数据定义和一组对该组数据操作定义。数据类型分为三种:简单数据类型,用户定义数据类型,抽象数据类型。7淘花/baidu专用第7页简单数据类型:语言本身提供,如整型,包括有所有整数和对整数操作,对于一个整数成分(二进制表示)是不可见,也不可直接操作。8淘花/baidu专用第8页内部类型基本类型:char,int,float,void派生类型:格式:<类型修饰符>基本类型类型修饰符:short,long,singed,unsigned,double例:long(int),double(float),longdouble(float),…bool类型9淘花/baidu专用第9页顾客定义数据类型:以简单数据类型为基础,它包括数据成份是多种简单数据类型数据,能够对数据成份进行直接操作。10淘花/baidu专用第10页自定义类型使用typedef格式:typedef<已申明类型><新类型名>例如:typedefunsignedcharUCHAR
typedefunsignedlongDWORD枚举类型格式:
enum<枚举类型名>{<枚举值表>}[<枚举变量表>];例:
enumweekday{
MON=1,TUR,WED,THU,FRI,SAT,SUN
}nowday,oldday;class,struct,union11淘花/baidu专用第11页在高级程序设计语言程序中,对于简单和顾客定义数据类型,数据定义和操作是分开,只是在对数据进行操作时,需检查该操作是否符合对应类型允许操作(即类型检查)。12淘花/baidu专用第12页对于类型使用,必须通过类型实际例子(简称实例或实体,即本来所说变量或常量)使用来体现。
例如:intnum;13淘花/baidu专用第13页抽象数据类型:在定义数据时,必须同步定义对数据操作;它成份(简单或顾客定义数据类型数据)是不可见,也不可直接操作,必须通过类型提供操作进行访问。14淘花/baidu专用第14页面向对象语言中对象是“将某组数据和使用该组数据一组基本操作或过程封装在一起,而成一种实体”。事实上就是抽象数据类型一种实例。15淘花/baidu专用第15页对象和抽象数据类型关系,就像整型变量和整型数据类型关系。16淘花/baidu专用第16页作为克服软件复杂性伎俩,在面向对象中,利用了如下对象性质:(1)将密切有关数据和操作封装起来定义为一种实体。(2)定义了一种实体后,虽然不懂得此实体功能是如何实现,也能使用它们(这一点类似于库函数)。17淘花/baidu专用第17页1.2.1数据封装面向对象程序设计语言,最关键概念是数据封装、继承性和多态性。18淘花/baidu专用第18页抽象是指对于一种系统简化描述。对于使用系统人员,不会去关怀该系统组成和工作原理;他们所关怀是该系统具有什么样功能,如何去使用该系统(既系统提供什么样接口,让人们使用)。19淘花/baidu专用第19页抽象标准,利用在计算机领域,称之为“信息隐蔽”标准;在面向对象程序设计语言中,使用数据封装机制实现信息隐蔽。20淘花/baidu专用第20页数据封装将一组数据和与这组数据有关操作集合封装在一起,形成一种能动实体,称为对象。21淘花/baidu专用第21页顾客无须懂得对象行为实现细节,只需根据对象提供外部特性接口访问对象。22淘花/baidu专用第22页例classCircle{floatr;//半径intx,y;//圆心有关半径、圆心和圆操作;};23淘花/baidu专用第23页类概念将一组数据和这组数据有关操作集合封装在一起,建立了一种定义良好接口,人们只关怀其使用,不关怀其实现细节。这反应了抽象数据类型思想。24淘花/baidu专用第24页类本身还是一组对象共同属性和操作抽象。类代表了一般性,而该类每一种对象代表了详细性。25淘花/baidu专用第25页1.2.2继承继承是面向对象语言另一种主要概念。在客观世界中,存在着整体和部分关系(apartof)、一般和特殊关系(isa或akindof),实现了重用性和扩充性。26淘花/baidu专用第26页Aisapartof
B.AisakindofB.27淘花/baidu专用第27页例:人与学生关系(继承)点与圆(心)关系(包括)点与多边形(顶点)关系28淘花/baidu专用第28页将一种人当成对象,对于人定义(如名字、年纪、性别等等)和对人操作(取名字、打印一种人多种信息等等)已经封装在Person类中了;下面将学生当成对象,学生是一类特殊人,基本信息和操作已经Person中定义过了,为了避免反复定义C++允许顾客将学生类Student说明为Person类继承类。29淘花/baidu专用第29页personstudent30淘花/baidu专用第30页这样,Student类就能够无须在考虑对于人基本信息定义和操作了,继承机制允许学生类从人类中继承人所有数据和操作,学生类只需要考虑学生特殊信息定义和对学生本身操作即可。31淘花/baidu专用第31页1.2.3多态性面向对象另外一种关键概念是多态性。所谓多态,是指一种名字(或符号)具有多种含义。利用超载(或称为重载overload)方式实现多态性。有函数和运算符超载。32淘花/baidu专用第32页函数名字有两个作用:
1)代表了该函数函数体(那段代码);
2)代表了该函数功能。33淘花/baidu专用第33页在传统语言中,不允许函数有同名情况,考虑是函数名第一种作用;而在面向对象程序设计语言中,假如发觉多种函数功能是一致,尽管他们确实是不一样函数,但允许它们具有相同函数名字,即存在同名函数。
34淘花/baidu专用第34页对于函数重载,若函数调用(界面)与哪一种函数体(函数实现)相匹配,是在编译时确定,称为早期匹配(或静态联编)。假如函数调用与哪一种函数体匹配是在运行时动态进行,称之为晚期匹配(或动态联编)。35淘花/baidu专用第35页一般来说,早期匹配执行速度比较快,晚期匹配提供灵活性和高度问题抽象。
36淘花/baidu专用第36页1.3按对象方式思维
面向对象CRC办法从下列三个方面来表述对象。⑴Classname(对象取名)对象取名实质上就是将系统功能进行划分。37淘花/baidu专用第37页⑵Responsibilities(责任)每个对象只负责完成设计中一种小目标功能。⑶Collaborators(合作者)每个对象也许会依赖其他对象来完成其责任。这个对象所依赖对象集合称为它合作者。38淘花/baidu专用第38页对象合作关系有:
包括、继承、友元、使用39淘花/baidu专用第39页如何判定“是否已经找到合适对象”,没有一定准则。
40淘花/baidu专用第40页1.4面向对象思想和办法
1.4.1面向对象是一种认知办法学认知办法:从一般到特殊演绎办法从特殊到一般归纳办法。41淘花/baidu专用第41页面向对象提供了从一般到特殊演绎伎俩,又提供了从特殊到一般归纳形式,从而说明它是一种较好认知办法。这种分类、归纳办法在面向对象设计技术中是很主要。42淘花/baidu专用第42页1.4.2面向对象与软件IC“软件IC”:一种软件集成机制,能够将已经成熟软件单元制成一种相对独立实体,使它们能够不加改动或很少改动就能够应用于新软件系统中。“软件IC”是一种可重用模块。
43淘花/baidu专用第43页类概念支持
“软件IC”
技术:在面向对象语言中,类充当了系统构造单元,这是由于它具有下列特点:
44淘花/baidu专用第44页类是一类对象统一模板,它具有很强模块性。类功能代码实现只通过外部接口与外界联系,具有很强独立性。
45淘花/baidu专用第45页类可靠性体现在一种类犯错不会传输到其他类中,一种系统类假如犯错,能够将其删除,作为一种降级系统使用,而不会使整个系统瘫痪。46淘花/baidu专用第46页类是对象一级抽象,它将一类对象数据构造和功能实现封装起来,使得外界无须清楚其内部实现,只要从它说明中理解其基本功能就能够使用它。
47淘花/baidu专用第47页类之间连接只有继承性描述和一组外协消息,因而清楚、明了。48淘花/baidu专用第48页1.4.3面向对象办法与构造程序设计办法1.模块与对象
构造化程序设计中,模块是对功能抽象。而对象是包括数据、操作整体,将数据和功能抽象和统一。能够说,对象包括了模块。49淘花/baidu专用第49页2.过程调用与消息传递
在构造化程序设计中,过程为一独立实体,显式地被它使用者所见,并且,对于相同输入参数,每一次过程调用,其输出成果是相同。50淘花/baidu专用第50页在面向对象程序设计中,对象是一台自动机,对象状态只能由对象操作变化它。C++语言用函数实现操作。每当需要变化状态时候,只能由其他对象向该对象发送消息(在C++中,借助于组员函数调用来实现消息发送)。51淘花/baidu专用第51页对象响应消息后,按照消息模式找出匹配操作,并执行该操作。应当注意,发送消息和过程调用意义是不一样,发送消息只是触发自动机,同样输入参数,也许因自动机状态不一样,其输出成果也不一样。52淘花/baidu专用第52页1.4.4对象是抽象数据类型实现抽象是一种系统简化描述,它强调了系统某些特性而忽视了其他特性。对于顾客来说,所关怀是程序能做什么,而不是它实现细节。53淘花/baidu专用第53页而抽象正好能够用来对顾客所关怀主要信息给予强调,而忽视不主要信息。54淘花/baidu专用第54页整个程序设计语言发展过程就是抽象层次不停提升过程。55淘花/baidu专用第55页抽象数据类型在程序中是一封闭单位。它包括信息有:外部可见:处理数据各个操作界面外部不可见:数据和操作实现细节56淘花/baidu专用第56页于是,将数据类型抽象为提供应外部世界数据和操作集。使用了抽象数据类型描述,不再关怀数据构造是什么,而仅仅关怀它具有些什么功能可用。这与信息隐藏标准很符合。57淘花/baidu专用第57页
1.6面向对象程序设计语言将面向对象概念正式作为语言成份是Simula67。Simula语言在ALGOL60语言基础上发展起来,引入了类、对象、继承和共行子程序等概念。当今面向对象程序设计基本思想起源于Simula
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度大数据中心建设与运营服务合同规范3篇
- 二手房交易合同模板2024一
- 2024物业租赁合同中的违约金计算方式
- 二零二五版船舶环保技术改造项目股份投资合同3篇
- 关于2025年度环保设施运营维护的详细合同
- 专用面粉生产与供应合同2024
- 2024淘宝天猫京东电商客服团队激励考核合同3篇
- 2025年校园物业管理与服务保障合同书6篇
- 2025年度船舶建造与船员培训服务合同3篇
- 2024版公证处借款合同范文
- 2024高考复习必背英语词汇3500单词
- 消防控制室值班服务人员培训方案
- 《贵州旅游介绍》课件2
- 2024年中职单招(护理)专业综合知识考试题库(含答案)
- 无人机应用平台实施方案
- 挪用公款还款协议书范本
- 事业单位工作人员年度考核登记表(医生个人总结)
- 盾构隧道施工数字化与智能化系统集成
- 【企业盈利能力探析文献综述2400字】
- 2019年医养结合项目商业计划书
- 2023年店铺工程主管年终业务工作总结
评论
0/150
提交评论