




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面
象技术与C++程序设计第1章C++面象程序设计概述高文超2015年4月TIOBE编程语言社区榜TOP
10C++应用系统级架构高性能实时计算应用程序平台其他多应用CADCAECAM1.开发应用角度看:面向系统、应用、系统工具)系统:OS、DBMS、操作系统:Windows
:汇编->C->C++Apple
MacOS
:主要为C,部分为C++Symbian
OS
:主要为C++
(诺基亚
RIM
BlackBerry
OS
4.x
:黑莓C++数据库:Oracle
:主要为C++MySQL
:C++SQL
Server
:汇编->C->C++应用:商务、网络、信息管理、通信、图形图象处理办公:Office
:汇编->C->稳定在C++Adobe
Systems
Acrobat
Reader/Distiller
:C++浏览器:Internet
Explorer
:C++Mozilla
Firefox
:
C++Safari
:(2003年1月发布)C++Chrome
:(2008的发布)C++Opera
:C++
(邮件客户端:搜索引擎:上占用率比较大)Outlook
:
C++:主要为C++图形界面层:Windows
UI
:C++Apple
MacOS
UI(Aqua):C++KDE(Linux图形界面)
:C++图形处理:Adobe
Photoshop&
ImageReady
:C++Maya:蜘蛛人、指环王的电脑特技制作著名::C++
和PHP:使用C++程序开发大型电子商务开发集成环境:Visual
Studio
:C++Eclipse
:Java
(其图形界面SWT基于C/C++)虚拟机:.Net
CLR
(.NET的虚拟机):C++Java
Virtual
Machine(JVM):Java
虚拟机:C++编译器:Visual
C++编译器:C++Visual
Basic
解释、编译器:C++Visual
C#编译器:C++Perl
:
C++从教学上看:数据结构、算法设计都用的C和C++从设计方法上看:支持面
象从就业上看:C++程序员、
工程师仍有较大的需求C++
工程师职位描述:(1)负责项目的开发、
;能够理解用户需求,完成项目分析、设计、编码、测试和
工作;负责完成技术文档的编写;完成团队安排的其它工作。任职要求:计算机相关专业,本科及以上学历;精通C++编程,熟悉OO分析及设计方法,了解设计模式,能熟练使用UML交流程序设计;熟悉计算机网络协议,有网络编程经验;扎实的C/C++语言基础,对算法和数据结构有深入理解;精通Windows平台下的系统级开发,熟悉网络和多线程编程;熟练掌握Oracle等数据库开发技术;责任心强,有良好的沟通能力和团队合作精神;良好的系统设计能力、文档能力和沟通能力,能很好地融入团队工作;良好的代码编写
,有较强的学习能力和解决问题的能力。华北计算技术事业单位C/C++研发工程师学历要求:本科及以上专业要求:计算机、通信工程及相关专业岗位要求:1、熟练掌握C、C++编程语言;2、熟悉Linux/Unix/Solaris等操作系统,并熟练掌握系统操作命令;3、熟悉网络编程,多线程编程,熟悉数据结构及常用的算法;
4、具有基于Oracle、SQLServer、Mysql等关系数据库项目开发经验;5、优秀的职业素养,能够承受工作压力,富有进取心;6、具有良好的沟通能力、语言及文字能力、应变能力。公司电力科学电力控制系统国有企业C/C++高级工程师/资深工程师工作内容:负责系统架构设计或程序开发工作任职要求:两年以上的开发经验,计算机相关专业,本科及以上学历;熟悉C/C++,能熟练在linux环境进行代码编写、编译、和调试;具备良好的程序数据结构、算法设计能力,能快速、高效、高质量进行程序设计、开发与调试;有地理信息系统开发经验者优先。有互联网项目架构设计经验者优先。阿里巴巴合资企业Windows环境下C++客户端开发工程师&
linux环境下C++服务器开发工程师;任职要求1、师出名门——应届统招本科及以上学历,计算机相关专业, 优先;2、孜孜不倦——热爱技术,认真踏实,喜欢阅读英文原版技术文档和书籍;3、海纳百川——具有较强的团队意识与良好的沟通能力,较强的学习能力以及快速解决问题的能力。完美世界()网络技术外企独资
世界上第一个程序员是女的
学习开车,首先要学习交通规则,然后才能驱车上路
千里之行,始于足下!态度决定一切!培养
(没
,收效小,多看
发展的人物)脚踏实地,不要找捷径
(想一下成高手很难)手脑勤(多动手实践)多参考程序代码(了解别人程序设计思想,有助于自己)注意提高英文阅读能力资源h参考书籍《C++
Primer》
--
中国电力,
StanleyB.Lippman
著,潘爱民,
译《C++Primer》Stanley
B.Lippman《C++Primer
Plus》《C++程序设计语言》--机械工业版社,BjarneStroustrup
著,
译《The
C++
ProgrammingLanguage》BjarneStroustrup《C++
Howto
Program》FifthEditionH.
M.
Dei本章主要讲述:计算机程序设计语言发展程序设计方法的发展历程面
象的程序设计语言C++语言的发展历史C++程序的开发过程人与计算机交流的鸿沟计算机硬件仅知道0和1有问题需要计算机解决的人交流的鸿沟计算机硬件仅仅知道0和1有问题需要计算机解决的人程序设计语言硬
件
软件=程序+文档计算机的工作是用程序来控制的程序是指令的集合指令是计算机可以识别
令机器语言指令就是指计算机能够识别
令,它们是一些由0和1组
的二进制编码。指令系统计算机硬件系统能够识别的所有指令的集合。机器语言最早的程序设计语言,它由计算机能够识别的二进制指令系统构成。例如1011
1111
1101缺点:难懂,不易修改,移植性差汇编语言1、汇编语言用一些便于的符号代替机器语言中的二进制指令代码,就将二进制的机器语言转换成了一种便于的符号语言,这就是汇编语言。2、与机器语言的比较汇编语言编程比机器语言简单。例如ADDCX,DX缺点:汇编语言与自然语言的差距较大。不能立即执行,需要汇编,变成目标程序。移植性差,效率低。汇编语言源程序汇编程序系统机器语言目标程序结果汇编执行汇编语言的汇编与执行高级语言高级语言的概念及特征高级语言了与机器硬件相关的细节,采用具有一定含义名符号和容易理解的程序语句进行程序设计,不仅大大降低了程序设计的难度,而且也使程序易们理解。例如:if
y<1z=x+y;优点:与人们自然思维很接近,编程更容易、简单高级语言程序的通用性和可移植性更高源程序初始数据解释程序运行结果编译程序目标程序源程序目标程序运行结果初始数据解释方式编译方式交互性好,运行效率低运行效率高本节主要介绍程序设计方法的发展历程:面向过程->面向结构->面
象过程最早的程序程序目的:用于数学计算主要工作:设计求解问题的过程缺点:对于庞大、复杂的程序难以开发和过程
结构化设计思路:自顶向下、逐步求精。采用模块分解与功能抽象,自顶向下、分而治之。程序结构:按功能划分为若干个基本模块,形成一个树状结构。各模块间的关系尽可能简单,功能上相对独立;每一模块
均是由顺序、选择和循环三种基本结构组成。其模块化实现的具体方法是使用子程序。机制:将数据与操作数据的函数分开。围绕功能实现或操作流程来设计程序。程序=数据结构+算法形式:主模块+若干个子模块优点:有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和
。缺点:可重用性差、数据安全性差、效率低、难以开发大型
图形界面的应用
。struct
{charname[10];char
addr[20];char
phone[11];}p[100];int
n=0;void
InputData(){
......}void
SearchAddr(char
*name){void
SearchPhone(char
*name){……}void
PrintData(){……}void
main(){……//调用前面编写的函数,完成
数据处……}结构化程序的案例——个人程序定义数据结构定义全局数据定义操作数据的函数主函数控制程序流程局部变量函数A局部变量函数B只有函数A才能只有函数B才能全局变量
全局变量可被任何函数结构化程序的问题——数据与算法分离,程序数据和操作数据的函数是分离的。大型程序中,有很多全局数据和全局函数,这导致了函数和数据之间数目巨大的潜在连接!若全局数据有所改动,可能会导致所有
这个数据的全部函数重写.全局数据全局数据全局数据函数函数函数函数结构化程序设计范型象1、设计观点将数据及对数据的操作方法封装在一起,作为一个相互依存、不可分离的整体——对象。对同类型对象抽象出其共性,形成类。类通过一个简单的外部接口,与外界对象与对象之间通过消息进行通信。2、设计目的实现
设计的
。。3、设计方法:使用面仿并处理现实问题。象的观点来描述模程序=对象+消息要求:高度概括、分类和抽象。4、优点:程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障。通过继承与多态性,可以大大提高程序的可重用性,使得
的开发和
都更为方便。5、基本概念对象客观存在的实体称为对象属性描述对象的特征的数据行为对象自身的行为,对现实世界某些信息的响应.对象之间通过传递消息相互影响属性行为对象由属性和行为构成char
name[10];charaddr[20];char
phone[11];public:voidInitData(){……}void
SearchAddr(char
*name){……};…void
SearchPhone(char
*name){……};};6、classprivate:程序在C++中的类代码形式{将客观事物的属性和行为抽象成数据和操作数据的函数,并把它们组一个不可分割的整体(即对象)的方法能够实现对客观世界的真实模拟,反映出世界的本来面目。从客观世界中抽象出一个个对象,对象之间能够传递消息
.数据成员函数成员函数数据成员函数成员函数数据成员函数成员函数对象1对象2对象3消息消息消息7、面象模型面象的程序设计语言本节主要介绍类与对象的基本概念,以及面
象程序设计的主要特征对象是现实世界中实际存在的事物。将现实中的对象经过抽象,
为中的对象。1对象?对象:
客观存在的实体称为对象。一个对象具有一组属性和行为属性:红色,车牌对象的基本概念行为:加速、、刹车....类:是具有相同属性和行为的一组对象的集合,它为属于该类的全部对象提供了抽象的描述,包括属性和行为两个主要部分。类的基本概念青花瓷器这个概念是类还是对象?这个概念是类还是对象?,是由类定义所对象是实际存在的该类事物的产生出来的实例类和对象的关系?类类似于蓝图对象是类的实例类和对象的关系:类
对象抽象定义
实例类对象举例学生
学生课程
面象技术与C++程序设计类型
变量,如C
语言中的int
和int
x类是一种用户自定义类型,class类名称{public:形式:公有成员(外部接口)private:私有成员protected:保护型成员};类的
形式公有类型成员:在关键字public后面外部的接口,任何外部函数都可以函数。,它们是类与公有类型数据和私有类型成员:在关键字private后面,只允许本类中的函数 ,而类外部的任何函数都不能。私有成员,则关键字如果紧跟在类名称的后面private可以省略。保护类型成员:与private类似,其差别表现在继承与派生时对派生类的影响不同。对象的
形式类名 对象名;类中成员互访直接使用成员名类外使用“对象名.成员名”方式的成员public
属性抽象是对具体对象(问题)进行概括,抽出这一类对象的公共性质并加以描述的过程。数据抽象:描述某类对象的属性或状态(对象相互区别的物理量)。代码抽象:描述某类对象的共有的行为特征或具有的功能。抽象的实现:通过类的
。抽象数据抽象:Hour,
Minute,
Second代码抽象:run()
,dispTime()
,setHour(),setMinute(),setSecond()class
Clock{int
Hour,Minute,Second;void
setHour(int
h);
void
setMinute(int
m);void
setSecond(ints);void
dispTime();
void
run();};将抽象出的数据成员、代码成员相结合,将它们视为一个整体。目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只需要通过外部接口,以特定的权限,来使用类的成员。实现封装:类
中的{}封装class
Clock{private:int
Hour,Minute,Second;void
run();public:void
setHour(int
h);void
setMinute(int
m);void
setSecond(int
s);void
dispTime();边界};特定的权限外部接口public
成员1public
成员2public
成员nprivate直接private是的抽象与封装形成了程序接口与实现的分离void
setHour(int
h)void
setMinute(int
m)void
setSecond(int
s)void
dispTime()int
hour;int
minute;int
second;void
setHour(int
h){…}void
setMinute(int
m)
{…}void
setSecond(int
s)
{…}void
dispTime()
{…}void
run()
{…}用户接口,对用户可见实现细节,对用户不可见,用户不知道这些【例】Clock类及其对象的完整例程。#include<iostream>#include<string>using
namespace
std;class
Clock{public:void
setHour(int
h) {
hour=h;
}void
setMinute(int
m)
{
minute=m;
}void
setSecond(int
s)
{
second=s;
}void
dispTime(){cout<<"Now
is:
“<<hour<<":“<<minute<<":“<<second<<endl;}private:int
hour,minute,second;};int
main(){Clock
aClock,
bClock;aClock.setMinute(12);aClock.setHour(16);aClock.setSecond(27);bClock=aClock;aClock.dispTime();bClock.dispTime();}继承1、继承的基本概念继承:对象之间的相互关系,使得某类对象可以继承另外一类对象(祖先)的特征和功能。类间具有继承关系的特性:类间具有共享特征:遗传类间具有细微差别或新增部分:变异类间具有层次结构(同人类通过继承构成了关系一样)保持已有类的特性而构造新类的过程称为继承。在已有类的基础上新增自己的特性而产生新类的过程称为派生。被继承的已有类称为基类(或父类)。派生出的新类称为派生类(或子类)。【例】一个继承的例子2、继承分类从继承源上划分:单继承(一个派生类只有一个基类)、多继承(一个派生类有多个基类)3、继承目的实现代码重用code
reuse4、派生的目的当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程序进行改造。1、多态对象根据所接受的消息而做出动作,同样的消息为不同的对象接受时可导致完全不同的行动,该现象称为多态性。1.3.5
多态2、多态性的实现运行时多态性:虚函数编译时多态性:重载举例:sqrt_i
(int
i),sqrt_f
(float
f)sqrt
(int
i),sqrt
(float
f)作用:减轻程序员负担降低程序员出错机率3、多态的一个案例图中同名函数area()作用在Circle、Triangle等不同类上时,将执行不同的“计算面积”的方法,这就是多态。面象的三大特征是封装性、继承性和多态性。
封装性:将客观事物抽象成类,每个类对自身的数据和方法实行protection(private,protected,public)。继承性:对象之间的相互关系,使得某类对象可以继承另外一类对象(祖先)的特征和功能。多态性:对象根据所接受的消息而做出动作,同样的消息为不同的对象接受时可导致完全不同的行动,该现象称为多态性。1960年出现了一种面向问题的高级语言ALGOL
60。1963年,英国的
大学推出了CPL(CombinedProgrammingLanguage)语言,后来经简化为BCPL语言。1970年,Bell
的KenThompson又以BCPL语言为基础,设计出更加简单并接近硬件的语言,取其第一字母B,称为B语言。C语言的产生1972年,
Dennis
M.
Ritchie,
贝尔M.Ritchie为克服B语言的诸多不足,在B语言的基础上重新设计了一种语言,取其第二字母C,故称为C语言。与Ken
Thompson用C语言重写了UNIX系统。因此,他还是名副其实的UNIX之父。·C++的产生20世纪80年代初,Bjarne
Stroustrup,贝尔/~bs/本
·对c增加了面 象部分,叫带类的c,1983年正式命名c++1998年,ANSI/ISO
C++标准建立C++的特点兼容C,支持面向过程的程序设计class
C{};class
CPlusPlus
:
public
C
{};支持面
象的机制具有高效性、灵活性、可移植性丰富的数据类型C++C++语言是一种高级程序设计语言,它的开发过其他高级语言程序开发过程类似,一般要经过四个步骤:编辑edit
编译compile
link
执行build编辑把按照C++语
则编写的程序代码通过编辑器输入计算机,并存盘。在存盘时,C++源文件的扩展名为.CPP。编译将编辑好的C++源程序通过编译器转换为目标文件(OBJ文件)。即生成该源文件的目标代码。将用户程序生成的多个目标代码文件(.obj)和系统提供的库文件(.lib)中的某些代码连接在一起,生成一个可执行文件(.exe)。执行把生成的可执行文件运行,在屏幕上显示运行结果。用户可以根据运行结果来判断程序是否出错。(.OBJ)文件(.CPP
.h)文件C++库文件(.EXE)文件编辑工程文件执行编译器器存盘出错出错al.cppa2.cppa3.cppb1.hb2.h翻译单元1翻译单元2翻译单元3A1.obja2.obja3.obj.libC++的标准库函数标准类库.exe可执行文件编译(Compile)预处理(Link)#include#include测试和调试bug:程序中的错误。Debug(调
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年湖南省茶陵三中新高考物理试题适应性训练(二)含解析
- 酒泉职业技术学院《数学解题方法》2023-2024学年第一学期期末试卷
- 鹤壁汽车工程职业学院《第二外语德语》2023-2024学年第二学期期末试卷
- 湖南工学院《程序设计基础理论》2023-2024学年第二学期期末试卷
- 毕节工业职业技术学院《装饰设计基础》2023-2024学年第二学期期末试卷
- 扬州大学《现代分析》2023-2024学年第二学期期末试卷
- 古人对时间的总结
- 公司投资的基本理念及方法论
- 公共交通车辆性能检测制度
- 公共交通车辆调度管理制度
- 2025年上海青浦新城发展集团有限公司招聘笔试参考题库含答案解析
- 四年级组数学教学质量提升计划
- 园林绿化企业的职能与工作流程
- Unit 2 Expressing yourself Part A Lets learn Listen and chant(说课稿)-2024-2025学年人教PEP版(2024)英语三年级下册
- 水利水电工程(水电站、泵站)运行危险源辨识与风险评价导则
- 2025年中煤集团新疆能源有限公司招聘笔试参考题库含答案解析
- 2024年全国职业院校技能大赛(新材料智能生产与检测赛项)考试题库(含答案)
- 妊娠期糖尿病患者的个案护理
- cmis北京市中小学学籍管理云平台
- 《你当像鸟飞往你的山》读书分享读书分享笔记
- 小学生播音员课件
评论
0/150
提交评论