《面向对象程序设计C--PPT.ppt》由会员分享,可在线阅读,更多相关《面向对象程序设计C--PPT.ppt(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、面向对象程序设计C+本课程学什么?有什么用本课程学什么?有什么用?教材:教材:面向对象程序设计:面向对象程序设计:面向对象程序设计:面向对象程序设计:C+C+语言描述语言描述语言描述语言描述作者:作者:(美)约翰逊鲍尔(美)约翰逊鲍尔 等等 著著 蔡宇辉,李军义李军义 译译 出出 版版 社:社:机械工业出版社机械工业出版社VC+6.0 作业软件作业软件在上海大学的乐乎网络硬盘中的下载地址http:/ 雷电雷电上海大学上海大学 雷电雷电计算机的发展n n计算机发展的速度、性能的极限 1.1.“摩尔定律”:微处理器的速度会每18个月翻一倍。2.2.“吉尔德定律”:主干网的宽带将每6个月增加一倍。3
2、.3.“麦特卡尔夫定律”:网络的N个联结能够创造N平方的效益。4.4.“比尔盖茨定律”:软件的发展无极限,它只受人的想象力的限制。世界工业现状中国经济转型。发达国家制造业回归,西方强国“再工业化”。世界上很多国家都在制定制造业发展战略。当前,信息技术、新能源、新材料、生物技术等重要领域和前沿方向的革命性突破和交叉融合,正在引发新一轮产业变革,将对全球制造业产生颠覆性的影响,并逐渐改变着全球制造业的发展格局。特别是新一代信息技术与制造业的深度融合,将促进制造模式、生产组织方式和产业形态的深刻变革。以德国工业4.0、美国工业互联网、新工业法国为代表,主要发达国家围绕建立制造竞争优势,加快在信息基础
3、设施、核心技术产业、以智能制造为核心的经济体系等方面进行战略部署,谋求在技术、产业方面继续领先优势,占据高端制造领域全球价值链的有利位置。上海大学上海大学 雷电雷电国家战略国家战略20152015年年年年5月月19日,国务院正式印发了我国实施制造日,国务院正式印发了我国实施制造强国战略第一个十年的行动纲领强国战略第一个十年的行动纲领中国制造中国制造2025。工信部部长苗圩说:工信部部长苗圩说:1.一个目标:制造业大国向制造业强国去转变2.就是通过两化融合发展来实现这个目标3.“三步走”3个十年,四项原则,五条方针,十个领域(新一代信息技术产业,新能源,总理李克强说:上海大学上海大学 雷电雷电中
4、国制造中国制造2025可简单概括为可简单概括为“一二三四五五十一二三四五五十”中国制造中国制造2025的的“要害要害”:实现中国:实现中国“智智”造。造。“智”从哪里来?就是要集众人之智。权威解读权威解读中国制造中国制造2025:1.对新一轮科技革命和产业变革的战略高度做出的一项重大战略决策。50多位院士和100多位专家参加制定。德国工业4.0主要体现产业界的意图,中国制造中国制造2025体现国家战略意图。2.中国制造2025将智能制造作为主攻方向。上海大学上海大学 雷电雷电国家战略国家战略2015年07月04日国务院发布国务院关于国务院关于积极推进积极推进“互联网互联网+”行动的指导意见行动
5、的指导意见工信部部长苗圩说:工信部部长苗圩说:我说:我说:上海大学上海大学 雷电雷电我认为我认为“互联网互联网+”是一个很大是一个很大的概念,互联网的概念,互联网+社会就变成社社会就变成社会信息化,互联网会信息化,互联网+环保,就可环保,就可以绿色化发展。但是我认为最以绿色化发展。但是我认为最具备条件的,还是互联网具备条件的,还是互联网+先进先进制造业,这将成为制造业,这将成为“互联网互联网+”最先突破的一个领域。最先突破的一个领域。互联网企业互联网企业+制造业制造业Google+无人汽车。阿里巴巴+智能机器人。百度+人工智能。传统企业传统企业+互联网互联网GE+互联网(工业互联网)你所在的企
6、业+互联网国家战略国家战略具体化1.智能制造就是要研发出一批智能化的产品。比如机器人。2.整个生产过程的智能化或者叫信息化。3.旨在通过物联网、云计算、大数据等新一代信息技术,与已有的信息化、自动化技术结合在一起,把制造系统的各元素联结起来,形成信息物理系统,实现相互协同、遥相呼应。实例:全无人驾驶交通体系。上海大学上海大学 雷电雷电如何实现机器的智能化智能的机理是什么?是程序。见下页机器的能够实现智能化吗?1.1.离开语言还会有智能吗?世界可以用语言描述(自然,数学语言),可以用符号标识,与媒介无关,中文英文阿拉伯文都可以,关键是标准统一,映射统一。人用语言工具可以推理,计算智能。2.2.只
7、有0,1两个符号的机器可以描述世界吗?可以计算和推理吗?图灵机。上海大学上海大学 雷电雷电上海大学上海大学 雷电雷电程序程序软件软件智能智能智慧智慧生命体生命体用计算机语言编写的命令序列的集合与计算机系统有关的程序、规程、规则,以及文件、文档及数据代码数据01010101000000010010101语言智能、数学逻辑智能、空间智能、身体运动智能、音乐智能人际智能、自我认知智能、自然认知智能硬件的灵魂C/C+C#JavaJavaScript汇编语言BasicObjective-CFortran宇宙的法则是很简单的,但结构是很复杂的。不是庐山真面目,只缘身在此山中。本课程的本质特征天下不会掉馅饼
8、,实现智能制造、互联网+其实就是要设计程序。如何用如何用0101数字来描述世界,分析计算变换驱动世数字来描述世界,分析计算变换驱动世界,即如何设计出智能电脑程序。界,即如何设计出智能电脑程序。越来越智能,程序越来越复杂,设计决定了其成越来越智能,程序越来越复杂,设计决定了其成败,败,8080年代就开始出现软件危机了。见下页年代就开始出现软件危机了。见下页本课程介绍的程序设计方法的精髓是:按照人对本课程介绍的程序设计方法的精髓是:按照人对世界的认识的方法来设计程序。世界的认识的方法来设计程序。只有想不到,没有做不到只有想不到,没有做不到!上海大学上海大学 雷电雷电上海大学上海大学 雷电雷电软件危
9、机n n计算机硬件的性价比不断提高,促使把更多更复杂的问题交给计算机去解决。计算机硬件的性价比不断提高,促使把更多更复杂的问题交给计算机去解决。上海大学上海大学 雷电雷电n n编程是重要的,但更具有决定意义的是系统设计(好比建筑设计图等)。n n软件危机:系统的复杂性超出了所能驾御的程度。85%的错误是在需求分析和设计时犯的。人们一直在寻求更先进的软件方法与技术而奋斗。n n面向对象的方法是当前软件领域(分析、设计、编程、测试)的主流技术。面向对象的程序设计是使计算机向有表述能力的媒体发展的思想方法,解决方案。我们为什么比美欧落后那么多?中国是制造业大国,却不是强国,前面的分析已知道了,就是软
10、件落后。起步相同,为什么那么落后?中国是仿冒强国,却是原创弱国。同样,我们这门课,很难学习,常常是不理解为什么要这么做,于是就是生搬硬套。有人问金庸在剑桥大学读到了什么好书,金庸说:上海大学上海大学 雷电雷电在中国的文化里,理性思维似乎是一直受抑制的,中国文人传统都是非理性思考者。所谓非理性思考,主要是形象思维,包括联想、比方等形式,这些思维方式作为人类与生俱来的思维方式的一种,一方面当然具有它的好处(如,联想启发新思路,类比也有助于用新的方式解决既有问题),然而,这样的思维方式同样也充满了各种各样的谬误,随处可见的不靠谱的类比和文字游戏。在科学上满足于司空见惯,想当然,浮躁,缺乏逻辑分析,所
11、以很难深入下去。上海大学上海大学 雷电雷电例:宇宙有边界吗?形象思维中,有!没有!有!没有!只有诡辩理性的思维,程序设计的思维方法:什么是边界?先要定量或数字化的定义,即要先建立模型-非欧几何、空间弯曲、相对论。非欧几何、空间弯曲、相对论。又如2=1.4142135623730950488016887242097有人问金庸在剑桥大学读到了什么好书,金庸说:上海大学上海大学 雷电雷电读到好书并不重要,重要的是学到了英国与中国完全不同的研究学问的方式。“中国人写文章大致有个方向,高屋建瓴地写;英国教授则要求,写文章每一句话都要有根据,要拿出证据,否则不成立。做学术必须有根有据。软件定义网络软件定义
12、数据中心软件定义硬件软件定义服务。软件定义世界人类发展出高等数学和电脑程序来解决复杂的事物关系,成人类发展出高等数学和电脑程序来解决复杂的事物关系,成为现代文明高速发展的核心动力,而文学家艺术家哲学家等为现代文明高速发展的核心动力,而文学家艺术家哲学家等就退出了人类文明推动力的核心群体,逐步边缘化。就退出了人类文明推动力的核心群体,逐步边缘化。软件定义一切,软件驱动世界上海大学上海大学 雷电雷电上海大学上海大学 雷电雷电面向对象面向对象的程序设计总要落脚到一种语言来的程序设计总要落脚到一种语言来描述描述.学习那种计算机语言最好?学习那种计算机语言最好?学习那种计算机语言最好?学习那种计算机语言
13、最好?n nPCPC机上:上百种计算机语言机上:上百种计算机语言 大浪淘沙大浪淘沙 FORTRAN(FORTRAN(最古老的高级语言最古老的高级语言)BASIC-QBASIC-Visual BASIC-Visual BASIC.NET BASIC-QBASIC-Visual BASIC-Visual BASIC.NETPASICALPASICAL-Delphi-Delphi;Object-C(Object-C(苹果苹果)Java Java C C-C+-C+-Visual C+Visual C+-C#C#(最新的计算机(最新的计算机语言)语言)Visual C+.NET.(Visual C+.
14、NET.(见见 01-01-客观认识客观认识C+.ppt)C+.ppt)n n其他机种其他机种各种硬件驱动程序、单片机、数字信号处理器等:各种硬件驱动程序、单片机、数字信号处理器等:汇编语汇编语言(与机器有关)、言(与机器有关)、C C语言语言 、C+C+语言语言n n客观认识客观认识C+.C+.pptppt最大的优点:全能,高效、最大的优点:全能,高效、专业专业。最大的缺点:开发效率低最大的缺点:开发效率低自动化专业的学生当然是学习自动化专业的学生当然是学习自动化专业的学生当然是学习自动化专业的学生当然是学习C/C+C/C+语言最好!语言最好!语言最好!语言最好!上海大学上海大学 雷电雷电系
15、统编程C+C+是一种倾向系统编程的通用程序设计语言:是一种倾向系统编程的通用程序设计语言:是更好的是更好的C C 支持数据抽象支持数据抽象 支持面向对象的编程支持面向对象的编程 支持泛型编程支持泛型编程系统编程是指,传统上与操作系统和基础工具有关系统编程是指,传统上与操作系统和基础工具有关的任务。包括:操作系统内核、设备驱动程序、的任务。包括:操作系统内核、设备驱动程序、系统工具、网络、字处理工具、编译器、某些种系统工具、网络、字处理工具、编译器、某些种类的图形学和类的图形学和GUIGUI、数据库系统、游戏引擎、数据库系统、游戏引擎、CAD/CAMCAD/CAM、电信系统等等。这类工作很好地代
16、表、电信系统等等。这类工作很好地代表了当前的了当前的C+C+用户。用户。上海大学上海大学 雷电雷电支持面向对象程序设计的通用语言:C+(Visual C+),Java,Delphi,Visual BASIC.NET C+指的是面向对象C语言。C+被奉为一门激动人心的语言,它利用了对象的最受欢迎的特征并尽可能避免运行时刻的缺点和开销,而且使在C语言中已有的大量投资不会浪费。所以它最适合开发服务器软件。本课程介绍C+面向对象程序设计最重要概念类,及其对象之间的相互作用。为什么C+会成功上海大学上海大学 雷电雷电怎样才能学好怎样才能学好C+语言?语言?自然语言:单词、语法、句子、段落、文章自然语言:
17、单词、语法、句子、段落、文章C+C+语言:关键字、语法、语句、函数、类(模块)、文语言:关键字、语法、语句、函数、类(模块)、文件件学外语:听、说、读、写学外语:听、说、读、写学计算机语言:学计算机语言:读、写读、写读、写读、写C+C+语言语言 入门容易得道难!入门容易得道难!最基本的、最死板的是语言本身(语言语法或语言规则)最基本的、最死板的是语言本身(语言语法或语言规则)最难的、最灵活的是用语言工具对应用的设计,无止境。最难的、最灵活的是用语言工具对应用的设计,无止境。最好的学习方法是:阅读(通读教材、多读各类资料、源最好的学习方法是:阅读(通读教材、多读各类资料、源程序),上机实践编程。
18、程序),上机实践编程。目的本课程是一个综合性实践性课程本课程是一个综合性实践性课程面向对象程序设计的理论、原理、概念和技术方法C/C+C/C+语言语言数据结构,数据结构,Visual Visual 开发工具,软件工程开发工具,软件工程电气工程及其自动化应用领域电气工程及其自动化应用领域目标:有能力开发应用软件。目标:有能力开发应用软件。这门课就是一扇门,师傅带进门进了这扇门,要多看看,学学,出门就会感觉不同了,目的也就达到了。上海大学上海大学 雷电雷电示例和就业系统集成:系统集成:http:/ 2.http:/ 上海大学上海大学 雷电雷电第一章 面向对象编程上海大学上海大学 雷电雷电C/C+语
19、言面向对象的基本元素1.见婴儿学对象2.幼儿园学抽象3.中小学学推理和计算4.大学学建模,学程序设计电脑拥有或要学有对象的定义上海大学上海大学 雷电雷电现实世界的认识现实世界的认识C+语言描述语言描述存在性、占有空间地址,内存大小可见性作用域符号标识标识符(变量)类别(特征,行为模式)类对象间信息交流对象访问(通过标识符、地址)函数调用(完成一个过程)为什么需要面向对象思维?为什么需要面向对象思维?软件是由一群有智慧、善传递信息的对象组软件是由一群有智慧、善传递信息的对象组成,富有成,富有“人性人性”-拟人化、人格化拟人化、人格化。例:冰箱赋予人性后,就变得主动积极活生生,智能例:冰箱赋予人性
20、后,就变得主动积极活生生,智能化。化。在面向对象思维下,分析员、设计师、程序在面向对象思维下,分析员、设计师、程序员达到了心心相印的境界。员达到了心心相印的境界。例例:“我的一个朋友结婚了我的一个朋友结婚了”-对象模型的通俗对象模型的通俗理理解解对象高度拟人化是软件设计至高无上的方针对象高度拟人化是软件设计至高无上的方针上海大学上海大学 雷电雷电上海大学上海大学 雷电雷电设计过程例:例:“我的一个朋友结婚了我的一个朋友结婚了”-对象模型的通俗理解对象模型的通俗理解第二步:分析建模第三步:面向对象详细设计通用算法设计类及对象设计类及对象设计消息、接口设计子系统、组件设计第四、五步:编程,写代码;
21、测试第一步:认识现实世界-系统分析上海大学上海大学 雷电雷电软件开发软件开发 n n软件开发是什么软件开发是什么软件开发是什么软件开发是什么?编程本身是一种个体的、富灵感的、逻辑性强的活动,但编程本身是一种个体的、富灵感的、逻辑性强的活动,但现代的软件开发更是一种群体的工程活动。现代的软件开发更是一种群体的工程活动。1)1)教学观教学观2)2)工程观工程观3)3)艺术艺术/工艺观。工艺观。n n开发人员的主要动作是开发人员的主要动作是开发人员的主要动作是开发人员的主要动作是:理解问题空间,并设想出技术上可行的方案来解决问题;理解问题空间,并设想出技术上可行的方案来解决问题;把头脑中的把头脑中的
22、“内部内部”过程用可执行的计算机语言表达出来;过程用可执行的计算机语言表达出来;留下必要的工作标记(留下必要的工作标记(markermarker)以支持首要目标(项目组)以支持首要目标(项目组内的交流)和次要目标(传递这次开发的设计思想)。内的交流)和次要目标(传递这次开发的设计思想)。n n设计方法设计方法设计方法设计方法:面向对象的程序设计。:面向对象的程序设计。中心任务:设计类。中心任务:设计类。上海大学上海大学 雷电雷电第一章 面向对象编程1.1.1 面向过程的编程自顶向下,函数层层调用.基本概念:函数子程序.Main()BuildChassis()BuildEngine()Assem
23、ble()Inspect1000行指令2000行指令500行指令n行指令strcpydoDataInData面向过程的面向过程的编程编程-结构化编程优点:过程的结构化编程、层次化。复杂的过程分解为简单的、有效的分析方法。代码运行高效。go to 指令是害群之马缺点:函数没有进行分类或抽象,大系统将难于驾驭。上海大学上海大学 雷电雷电关联式编程关联式编程优点:数据的标准化程序设计(数学模型的严格支持),于是有了广泛使用的数据库缺点:只限于数据的存储读写访问上海大学上海大学 雷电雷电1.1.2面向对象的编程结构化、关联式概念对软件设计贡献巨大。但是:结构化只限于函数(过程)、关联式只限于数据,各自
24、为政,缺乏整合。面向对象的编程数据与相关函数整合起来,高效组织软件,降低软件的复杂度、提高软件的复用性。一种试图摹仿现实世界类型的程序设计方法(通过类的设计)-程序设计过程是对现实世界的抽象过程。抽象抽象百科名片:抽象抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征。例如苹果、香蕉、生梨、葡萄、桃子等,它们共同的特性就是水果。得出水果概念的过程,就是一个抽象的过程。程序设计的过程程序设计的过程首先是一个抽象的过程。类是对象的集合体。类描述了一组有相同特性(数据元素)和相同行为(函数)的对象。上海大学上海大学 雷电雷电上海大学上海大学 雷电雷电1.2 类与抽象数据类型如何发现
25、对象,抽象出概念(类型)?在我们日常词汇中的几乎每一个名词都表示一类对象,具有一组属性或行为特征,它是对现实世界的概括、分类和抽象。一个类是一种数据类型,是面向对象语言的基本基本模块模块。对象(变量)是类(数据类型)的实例。如何发现对象,抽象出概念(类型)?例:泪水问花花不语,乱红飞过秋千去上海大学上海大学 雷电雷电女主角对象流泪Cry()问Ask()花对象语Say()飞Fly()秋千对象摆荡Swing()上海大学上海大学 雷电雷电1.1.3 1.1.3 对象关系模型对象关系模型has ahas a:组合,包含;组合,包含;is ais a:实例,继承;实例,继承;like alike a:接
26、口,抽象接口,抽象1.31.3对象的行为模型对象的行为模型-客户客户/服务模式服务模式服务器服务器:类和对象类和对象客户客户:使用使用类和对象的模块类和对象的模块(函数、类函数、类)客户通过客户通过请求请求服务而完成其任务,具体如何实服务而完成其任务,具体如何实现的底层细节现的底层细节不必关心不必关心。运行方式:运行方式:1 1)调用式:客户调用服务器函数。)调用式:客户调用服务器函数。2 2)事件驱动(消息传递):)事件驱动(消息传递):客户订阅客户订阅/连接连接服务器定义的事件。服务器定义的事件。上海大学上海大学 雷电雷电1.5.1 接口客户和服务器间的服务协议-类中的函数原型.1.5.2
27、 组件预先创建好的程序模块,它实现了一些标准的接口.上海大学上海大学 雷电雷电面向对象程序设计的基本特征封装封装:把一个数据结构同操作数据的函数(行为:把一个数据结构同操作数据的函数(行为或方法)组合在一起,封装是借助一种新的结构或方法)组合在一起,封装是借助一种新的结构和数据类型机制和数据类型机制类来达到的。类来达到的。继承继承:是建立一个新的派生类。它从一个或多个:是建立一个新的派生类。它从一个或多个先前定义的基类中继承函数和数据,而且可能重先前定义的基类中继承函数和数据,而且可能重新定义或加进新的数据和行为,这样就建立了类新定义或加进新的数据和行为,这样就建立了类的等级。的等级。多态性多
28、态性:给行为取一个名字或符号,它从上到下:给行为取一个名字或符号,它从上到下共享一个类的等级,在这个等级中的每个类都以共享一个类的等级,在这个等级中的每个类都以适合于自己的方式实现这个行为。适合于自己的方式实现这个行为。上海大学上海大学 雷电雷电对象设计的五个阶段对象发现对象发现这个阶段出现在程序的最初分析期间。可以通过这个阶段出现在程序的最初分析期间。可以通过摹仿现实世界类型摹仿现实世界类型摹仿现实世界类型摹仿现实世界类型而而发现对象。如果已经有了一组类库,某些对象是很明显的。类之间的发现对象。如果已经有了一组类库,某些对象是很明显的。类之间的共同性(暗示了基类和继承),可以立刻出现或在设计
29、过程的后期出共同性(暗示了基类和继承),可以立刻出现或在设计过程的后期出现。现。对象装配对象装配我们在建立对象时会发现需要一些新成员,这些新成员在对象发现时我们在建立对象时会发现需要一些新成员,这些新成员在对象发现时期未出现过。对象的这种内部需要可能要用新类去支持它。期未出现过。对象的这种内部需要可能要用新类去支持它。系统构造系统构造对对象的更多要求可能出现在以后阶段。随着不断的学习,我们会改对对象的更多要求可能出现在以后阶段。随着不断的学习,我们会改进我们的对象,系统中其它对象通讯和互相连接的需要,可能改变已进我们的对象,系统中其它对象通讯和互相连接的需要,可能改变已有的类或要求新类。有的类
30、或要求新类。系统扩充系统扩充当我们向系统增添新的性能时,可能发现我们先前的设计不容易支持当我们向系统增添新的性能时,可能发现我们先前的设计不容易支持系统扩充。这时,我们可以重新构造部分系统,并很可能要增加新类。系统扩充。这时,我们可以重新构造部分系统,并很可能要增加新类。对象重用对象重用这是对类的真正的重点测试。如果某些人试图在全新的情况下重用它,这是对类的真正的重点测试。如果某些人试图在全新的情况下重用它,他们会发现一些缺点。当我们修改一个类以适应更新的程序时,类的他们会发现一些缺点。当我们修改一个类以适应更新的程序时,类的一般原则将变得更清楚,直到我们有了一个真正可重用的对象。一般原则将变得更清楚,直到我们有了一个真正可重用的对象。