面向对象概述ppt课件

上传人:58****5 文档编号:244388671 上传时间:2024-10-04 格式:PPT 页数:33 大小:495.50KB
返回 下载 相关 举报
面向对象概述ppt课件_第1页
第1页 / 共33页
面向对象概述ppt课件_第2页
第2页 / 共33页
面向对象概述ppt课件_第3页
第3页 / 共33页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,NIT Spring 200,7, Liuqiyu,Object-Oriented Programming,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,*,01-面向对象概述,01-面向对象概述01-面向对象概述课程目标与要求学习目标,掌握用C+进行面向对象编程的思想与方法;,培养良好的编程风格和习惯;,掌握 Visual C+ 编程环境(IDE)的使用。,教学要求,平时作业和大作业不允许抄袭,否则记成0分;,考勤和作业记入平时成绩。,考核,综合成绩期末成绩50平时成绩20实验成绩30,平时成绩考勤(迟到、早退、旷课) 态度(课堂纪律),注:旷课一次扣 4 分,迟到一次扣 2 分(若不够从总成绩扣),实验成绩程序50 文档10 答辩40,NIT Spring 2007, Liuqiyu2Object-Oriented Programming,1.预测未来的最好方法,就是创造未来。,2.再烦,也别忘微笑;再急,也要注意语气;再苦,也别忘坚持;再累,也要爱自己。,3.再长的路,一步步也能走完,再短的路,不迈开双脚也无法到达。,4.相信别人不如相信自己,相信自己不如战胜自己。,5.心简单,世界就简单,幸福才会生长;心自由,生活就自由,到哪都有快乐。,6.心量要大,自我要小。,7.炫耀是需要观众的,而炫耀恰恰让我们失去观众。,8.学习时的苦痛是暂时的,未学到的痛苦是终生的。,9.眼睛里没有追求的时候,一定是心如死灰的时候。,10.要仅仅满足于自己伸手就可以拿到的东西,踮起脚尖,你会发现,自己的天空有多宽广。,11.要克服生活的焦虑和沮丧,得先学会做自己的主人。,12.一个成功的人是以幽默感对付挫折的。,13.一个人成功要懂得放弃和选择的智慧。,14.一千个人就有一千种生存方式和生活道路,要想改变一些事情,首先得把自己给找回来。,15.一时的挫折往往可以通过不屈的搏击,变成学问及见识。,16.以锻炼为本,学会健康;以修进为本,学会求知。以道德为本,学会做人;以适应为本,学会生存。,17.毅力可以征服任何一座高峰。,18.勇敢地面对现实,逃避解决不了任何问题。,19.把人生一分为二,前半生不犹豫,后半生不后悔。,20.保持乐观积极地情绪,逆着阳光,一路向前!,21.比别人多一点志气,你就会多一份出息。,22.不管别人的嘲笑,我要走自己想走的路。,23.这世界不单单是靠聪明伶俐支撑起来的,还有天道酬勤。,24.正如恶劣的品质可以在幸运中暴露一样,最美好的品质也是在厄运中被显示的。培根,25.考验人的才能不在于他是否拿到一副好牌,而在他能打好一副坏牌。,26.靠山山会倒,靠人人会跑,只有自己最可靠。,27.了解过去,活在当下,为将来做好准备!,28.有些人因为贪婪,想得更多的东西,却把现在所有的也失掉了。伊索,29.有志者,事竟成。,30.愚昧者怨天尤人,无能者长吁短叹,儒弱者颓然放弃。,31.与其相信依靠别人,不如相信依靠自己。,32.昨天已逝,明日是谜,面对今朝,尽力而为!,33.留一片空白,随时浓墨重彩。,34.流过泪的眼睛更明亮,滴过血的心灵更坚强!,35.漫漫长路,荆棘丛生,待我用双手踏平。,36.没有口水与汗水,就没有成功的泪水。,37.没有实力的愤怒毫无意义。,38.没有所谓幸运或厄运,每件事情有因必有果。,39.努力造就实力,态度决定高度。,40.瀑布对悬崖无可畏惧,所以唱出气势磅礴的生命之歌。,41.其实根本就没有什么假如,每个人的人生都不可重新设计。,42.勤奋的含义是今天的热血,而不是明天的决心,后天的保证。,43.让珊瑚远离惊涛骇浪的侵蚀吗?那无异是将它们的美丽葬送。,44.人的一生,想要幸福,就要有预知未来的能力。,45.人的欲望不可能都实现,不能的事情不可太强求;学会控制自我,明白自己的理想、人生价值、需求生活方式,面对现实,把握自己,珍惜人生。,46.人生的一切变化,一切魅力。一切美都是由光明和阴影构成的。托尔斯泰,47.人生在世,两种事应该少干:用自己的嘴干扰别人的人生;靠别人的脑子思考自己的人生。,48.人生只有必然,没有偶然。,49.人生自有其沉浮,每个人都应该学会忍受生活中属于自己的一份悲伤。,50.人往往拿已知的东西来判断未知的事物;人往往拿着错误的推论当正确的结论。,51.自律可以帮助你做你不想做但又必须做的事情。,52.自以为聪明的人往往是没有好下场的。世界上最聪明的人是最老实的人,因为只有老实人才能经得起事实和历史的考验。周恩来,53.最怕自己平庸碌碌还安慰自己平凡可贵。,54.昨天下了雨,今天刮了风,明天太阳就出来了。,55.如果可恨的挫折使你尝到苦果,朋友,奋起必将让你尝到人生的欢乐。,56.不要乱说话。话说出去之前你还是话的主人,话说出去之后你就成了话的奴隶。,57.不要忘记最初那颗不倒的心。,58.不要在你的智慧中夹杂着傲慢。不要使你的谦虚心缺乏智慧。,59.不知道明天干什么的人是不幸的!,60.成功便是站起比倒下多一次。,61.成功的方法多种多样,别不接受你看不惯的方法。,62.成功的关键在于相信自己有成功的能力。拿破仑?希尔,63.用放大镜去看人生,人生则是一场悲剧;而用望远镜去看人生,人生则是一场喜剧。,64.有了梦想,就应该迅速有力地实施。坐在原地等待机遇,无异于盼天上掉馅饼。毫不犹豫尽快拿出行动,为梦想的实现创造条件,才是梦想成真的必经之路。,65.有无目标是成功者与平庸者的根本差别。,66.我讨厌什么都不做,却有所期待的自己!,67.无论何时,都要做好独自生活的准备。,68.现在的努力,是为了小时候吹过的牛逼!,69.如果你觉得现在走的辛苦,那就证明你在走上坡路!,70.如果你足够努力,再加上一点点运气,你就会成功。,71.没有一个朋友比得上健康,没有一个敌人比得上病魔,与其为病痛暗自流泪,不如运动健身为生命添彩。,72.每天晚上疲惫地坐到椅子上时,才觉得真真切切地过了一天。,73.美丽属于自信者,从容属于有备者,奇迹属于执着者,成功属于顽强者。,74.命运一半掌握在上帝手中,另一半掌握在自己手中。成功就是用自己手中的一半去赢得上帝手中的另一半。,75.弱者才会诉苦,强者永远找方法!,76.善用内在潜能,你就是走运的人。,77.生活不是单行线,一条路走不通,你可以转弯。,78.生活总会给你答案的,但不会马上把一切都告诉你。只要你肯等一等,生活的美好,总在你不经意的时候,盛装莅临。,79.时间并不会真的帮我们解决什么问题,它只是把原来怎么也想不通的问题,变得不再重要了。,80.世界会向那些有目标和远见的人让路。,81.世上的事,只要肯用心去学,没有一件是太晚的。,82.所有成功的人都是把握先机,所有失败的人都是守株待兔。,83.天才就是无止境刻苦勤奋的能力。,84.我的青春不要留白,我敢异想就会天开。,85.我还年轻,从不服输。,86.我们不能做到青春活得不留遗憾,但要做到在青春里活得心安。,87.我死了吗?没有,所以我不能活得像死了一样!,88.不宽恕众生,不原谅众生,是苦了你自己。,89.不要被任何人打乱自己的脚步,因为没有谁会像你一样清楚和在乎自己的梦想。,90.不要幻想自己成为招聘会上的宠儿,当你明白百分之七十的初中生都可以上大学时,你应该明白人们不会去崇拜一个群体的大多数的。,91.成功的秘诀,是在养成迅速去做的习惯,要趁着潮水涨得最高的一刹那,不但没有阻力,而且能帮助你迅速地成功。劳伦斯,92.当你无法从一楼蹦到三楼时,不要忘记走楼梯。要记住伟大的成功往往不是一蹴而就的,必须学会分解你的目标,逐步实施。,93.当你知道迷惑时,并不可怜;当你不知道迷惑时,才是最可怜的。,94.当我们眺望远方的时候,近处的风景便看不清了。,95.凡事要三思,但比三思更重要的是三思而行。,96.成功的人永远只有办法,失败的人永远只有理由。,97.成功者说:虽然这个很困难,但它是可能的;失败者说:那是可能的,但它太困难。,98.当你不能成就伟业,请你把握住平凡的幸福;当你不能让自己辉煌灿烂,请保持恒久的微笑。,99.当你的才华还撑不起你的野心时,那你就应该静下心来学习。,100.成功和失败最大的差别在于想法。,课程目标与要求,学习目标,掌握用,C+,进行面向对象编程的思想与方法;,培养良好的编程风格和习惯;,掌握,Visual C+,编程环境(,IDE,)的使用。,教学要求,平时作业和大作业,不允许抄袭,,否则记成,0,分;,考勤和作业记入平时成绩。,考核,综合成绩期末成绩,50,平时成绩,20,实验成绩,30,平时成绩考勤(迟到、早退、旷课) 态度(课堂纪律),注:旷课一次扣,4,分,迟到一次扣,2,分(若不够从总成绩扣),实验成绩程序,50, 文档,10, 答辩,40,NIT Spring 200,7, Liuqiyu,2,Object-Oriented Programming,面向对象的产生背景,软件危机与程序设计方法,两种流行的程序设计方法,面向过程的程序设计,面向对象的程序设计(,Object-Oriented Programming,),NIT Spring 200,7, Liuqiyu,3,Object-Oriented Programming,面向过程的程序设计,始于,20,世纪,70,年代的结构化分析设计(,Structured Analysis and Design, SAD,)方法。,把一个系统看作是功能的集合,可以进行分解。,程序数据结构算法,软件程序由很多模块组成,这些模块就是,过程,,,C,语言中称为,函数,。,在面向对象的程序设计语言,中,这样的函数称为,方法,(,Method,)。,int,getMax,(int num1,int num2) ,if (num1num2),return num1;,else,return num2;,NIT Spring 200,7, Liuqiyu,4,Object-Oriented Programming,面向过程的程序设计,自顶向下的设计方法,把解决的问题同一个过程关联,,自顶向下功能分解,,直到子问题足够简单,可以在相应的子过程中解决。,结构化程序设计的结果是一个程序最终由若干过程组成,每一过程完成一个明确的功能。,Main Problem,BuildAPart,BuildBPart,BuildFPart,main(),BuildA(),BuildB(),BuildF(),问题,过程,NIT Spring 200,7, Liuqiyu,5,Object-Oriented Programming,面向过程的程序设计,存在的缺陷:,数据与过程分离,靠直觉和顺序化,难以把复杂事物表达清楚;,系统测试、调试和升级维护困难。,后果,数据结构变化 处理该数据的算法修改(重写),过程的修改 子过程修改 波及到分解层,最痛苦的事情不是开始的编程,而是在以后修改它。,NIT Spring 200,7, Liuqiyu,6,Object-Oriented Programming,面向对象的程序设计(OOP),发源于,20,世纪,60,年代,,Simula,语言中引入了类(,Class,)的概念;,真正的面向对象程序设计是,Smalltalk,语言奠定基础的,“面向对象”一词也是,Smalltalk,首先采用的;,C+,的问世促进面向对象技术的发展,也使之成为标准化的面向对象程序设计,(,Object Oriented Programming,),语言。,OOP,使程序能够比较直接地反问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。,面向对象的程序设计和问题求解力求符合人们日常,自然的思维习惯,,降低分解问题的难度和复杂性,提高整个求解过程的可控制性,可监测性和可维护性。,NIT Spring 200,7, Liuqiyu,7,Object-Oriented Programming,面向对象的程序设计,面向对象程序的基本元素为,对象,(,Object,)。,程序结构一般由类的定义和类的使用两部分组成。,程序中的一切操作都是通过向,对象,发送相应的消息来实现:对象接收到消息后,启动有关的方法完成相应的操作。,Coad,和,Yourdon,给出了一个定义:,面向对象,=,对象,+,类,+,继承,+,通信,如果一个软件系统是使用这些概念设计和实现的,则我们认为这个软件系统是面向对象的。,在面向过程软件开发中优先考虑的是,过程抽象,,在面向对象软件开发中优先考虑的是,实体,(问题论域的,对象,)。,NIT Spring 200,7, Liuqiyu,8,Object-Oriented Programming,面向对象的程序设计,优点,对象的,封装性,彻底消除了传统结构方法中,数据与操作,分离所带来的种种问题,提高了程序的可复用性和可维护性;,直观性;,可增加程序的模块性(,Modularity,),可提高程序的可复用性(,Reusability,),增加可扩展性(,Extendibility,),可改善程序的可维护性(,Maintainability,;,可控制程序的复杂性,可改进质量,降低成本,NIT Spring 200,7, Liuqiyu,9,Object-Oriented Programming,面向对象的程序设计,需要注意的地方,面向对象需要完全改变每个人的思想以及开发文化 ;,面向对象不仅仅是编程;,面向对象需要更关注于需求、分析和设计;,开发人员必须和用户紧密合作;,面向对象的许多优点要经过较长的时间才能显示出来;,面向对象技术不能保证你能构建出正确的系统。,面向对象语言:,C+,(混合型),Java,(纯粹的面向对象语言),NIT Spring 200,7, Liuqiyu,10,Object-Oriented Programming,面向对象的基本概念,对象,对象是问题域中事物的抽象(对现实事物的逻辑描述),对象不能完全代表事物,只是对于现实事物的逻辑表达,或者可看作是一个符号。,在面向对象程序设计中,对象是属性及其操作的封装体。,对象的特性:,唯一标识名,区别其他对象;,属性(域),成员变量,静态特征;,方法(操作、服务),描述对象执行的功能,动态特征。,对象的成员仍然可以是一个对象,对象之间通过消息传递进行通信。,NIT Spring 200,7, Liuqiyu,11,Object-Oriented Programming,面向对象的基本概念,对象,现实生活中,的对象,计算机中,的对象的原型,class Car ,private:,int color_number;,int door_number;,int speed;,public:,void brake() ,void speedUp() ;,void slowDown() ,NIT Spring 200,7, Liuqiyu,12,Object-Oriented Programming,面向对象的基本概念,类,类(,class,)是对,对象,(,object,)的抽象和归纳,是一组具有相同数据结构和相同操作的对象的集合 。,对象是类的实例,类是创建对象的模板。,类的成员:,属性,(,域,),:封装在类中的变量;,方法,(,操作,),:函数成员;,构造函数,:与类名相同,用来在创建对象时初始化。,NIT Spring 200,7, Liuqiyu,13,Object-Oriented Programming,面向对象的基本概念,类,类成员,:同类本身相关;用,static,修饰;可用类直接调用,无须实例化。,实例成员,:同特定实例相关;没有,static,修饰;构造函数总是实例成员。,Person pp;,/,声明一个对象,pp.setName,(“zhang”);,/,通过方法改变对象的属性,pp.setAge,(20);,cout “Age is ” pp.getAge() endl;,cout “Name is ” pp.getName() endl;,cout “He is ” Person.nation endl;,NIT Spring 200,7, Liuqiyu,14,Object-Oriented Programming,类的客户,大部分应用中一个类往往是为其他类提供服务的,这些类被称为该类的“客户”。,注意:,这里的客户不是现实中的关系,如:客户这个类,A,可以不是服务提供商这个类,B,的客户,而服务提供商这个类,B,是客户这个类,A,的客户,原因:,B,这个类的方法需要客户类,A,提供处理的数据。,虽然类可相互服务,但应该尽最大努力避免这种情况,否则会在代码管理与系统稳定性中造成问题。,NIT Spring 200,7, Liuqiyu,15,Object-Oriented Programming,面向对象的基本概念,消息,客户,/,服务器模型,:提供服务的类及实例是,服务器,,在接口中公布其提供的服务,隐藏实现细节,使用服务的程序是,客户,。,消息,:一个对象请求另一个对象服务的要求。,消息,内容,:接受者名、调用方法名、必要参数。,s,tring str = “Hello World”;,/新建一个,s,tring对象,i,nt len =,str,.length(),;,/通过调用str的length()方法,传递消息,str =,str,.,substr,(,0,11,),;,/直观的方法名,if (str,=,“Hello”) ,NIT Spring 200,7, Liuqiyu,16,Object-Oriented Programming,面向对象的基本概念,封装,封装是一种,信息隐藏,机制,制利用抽象数据类型将数据和基于数据的操作封装在一起,组成一个不可分割的独立实体。,外界要改变一个对象的状态,也就是对它所包含的数据进行操作,只能向该对象发出请求消息,然后由该对象的对应方法来改变其自身的状态。,面向对象系统的封装单位是对象。类概念本身也具有封装意义,因为对象的特征由它所属的类说明来描述,但对象的封装比类的封装更具体化。,封装的结果:,隐藏了复杂性,提高了易维护性,有利于代码复用和信息隐藏,。,NIT Spring 200,7, Liuqiyu,17,Object-Oriented Programming,面向对象的基本概念,信息隐藏,(,Information hiding,),如果一个类想获取另一个类的信息,必须先征得同意,而不是直接拿来就用;,意味着类模块中除了向外界提供的接口以外,还有大量不为外界所知的用以支持这些接口实现的属性和方法。,NIT Spring 200,7, Liuqiyu,18,Object-Oriented Programming,面向对象的基本概念,继承,通过继承机制,,派生类,(子类)可以继承,基类,(父类)的数据和操作,实现代码重用。,子类可从父类继承所有非,private,成员。,子类中可添加特有的属性和方法,也可重写父类的行为和修改状态,以体现其个性。,继承关系是传递的,。,即如果有类,C,继承,B,,,B,(间接)继承,A,,则,C,(间接)继承,A,。,一个类实际上继承了层次结构中在其上面的所有类的全部描述。,单继承,:一个父类,多继承,:多个父类,NIT Spring 200,7, Liuqiyu,19,Object-Oriented Programming,面向对象的基本概念,继承,C+,支持多继承,,Java,只支持单继承,单,Java,通过接口来实现多继承的功能。,A,B1,B2,B3,C1,C2,NIT Spring 200,7, Liuqiyu,20,Object-Oriented Programming,面向对象的基本概念,多态,相同的消息,产生不同的行为方式。,同一个方法名的操作不仅仅定义一种行为,因此有比较强的表达能力和更多的用途。,多态为描述客观事物提供了极大的能动性。,重载,(,Overload,),:同一类中有多个同名的方法,但这些方法的参数表不同(个数、类型),覆盖,(,Override,)形式:子类中重新定义父类中具有相同,署名,(名字、参数)的方法。,例,NIT Spring 200,7, Liuqiyu,21,Object-Oriented Programming,面向对象的基本概念,不同人对 play() 请求的响应,NIT Spring 200,7, Liuqiyu,22,Object-Oriented Programming,面向对象的基本概念,多态,class Alpha ,public,:,int,print,(,String s,) ,int,print,(,char c,) ,重载,class Alpha ,public,:,int,print,(String s) ,class Beta,: public,Alpha ,public,:,int,print,(String s) , /实现的具体内容可能不一样,覆盖,NIT Spring 200,7, Liuqiyu,23,Object-Oriented Programming,面向对象的软件工程,面向对象的软件工程是面向对象方法在软件工程领域的全面应用。它包括:,面向对象的分析(,OOA,),面向对象的设计(,OOD,),面向对象的编程(,OOP,),面向对象的测试(,OOT,),面向对象的软件维护(,OOSM,),NIT Spring 200,7, Liuqiyu,24,Object-Oriented Programming,面向对象的软件工程,系统分析,系统分析阶段应该扼要精确地抽象出系统必须做什么,但是不关心如何去实现。,面向对象的系统分析,直接用问题域中客观存在的事物建立模型中的对象,对单个事物及事物之间的关系,都保留他们的原貌,不做转换,也不打破原有界限而重新组合,因此能够很好地映射客观事物。,设计,针对系统的一个具体实现运用面向对象的方法。其中包括两方面的工作:,把,OOA,模型直接搬到,OOD,,作为,OOD,的一部分,针对具体实现中的人机界面、数据存储、任务管理等因素补充一些与实现有关的部分。,NIT Spring 200,7, Liuqiyu,25,Object-Oriented Programming,面向对象的软件工程,编程,OOP,工作就是用一种面向对象的编程语言把,OOD,模型中的每个成分书写出来,是面向对象的软件开发最终落实的重要阶段。,测试,测试的任务是发现软件中的错误。,在面向对象的软件测试中继续运用面向对象的概念与原则来组织测试,以对象的类作为基本测试单位,可以更准确的发现程序错误并提高测试效率。,维护,将软件交付使用后,工作并没有完结,还要根据软件的运行情况和用户的需求,不断改进系统。,使用面向对象的方法开发的软件,其程序与问题域是一致的,因此,在维护阶段运用面向对象的方法可以大大提高软件维护的效率。,NIT Spring 200,7, Liuqiyu,26,Object-Oriented Programming,面向对象概述,C+ HelloWorld,C+语言概述,C+,是由,C,发展成为的以面向对象为主要特征的语言。作为,C,语言的超集,,C+,继承了,C,的所有优点,又对数据类型做了扩充,使得编译系统可以检查出更多类型错误。,C+,支持面向对象程序设计,通过类和对象的概念,把数据和对数据的操作封装在一起,,通过派生、继承、重载和多态性等特征实现了软件重用和程序自动生成,使得大型复杂软件的构造和维护变得更加有效和容易。,兼容性:,C+,与,C,完全兼容,很多用,C,编写的库函数和应用程序都可以为,C+,所用。,但正是由于与,C,兼容,使得,C+,不是纯正的面向对象的语言,它既支持面向对象程序设计,也支持面向过程设计。但我们应当注意用面向对象的思想进行设计,以发挥出,C+,的优势。,NIT Spring 200,7, Liuqiyu,28,Object-Oriented Programming,程序的开发过程,编辑,将源程序输入到计算机中,生成后缀为,cpp,的磁盘文件。,编译,预处理过程:执行源程序中的预处理命令,如:,include,将头文件加入到源程序中。,编译:进行词法和语法分析,生成目标代码文件,(.obj,文件,),。,连接,将多个源程序文件以及库中的某些文件连在一起,生成一个后缀为,exe,的可执行文件。,运行调试,NIT Spring 200,7, Liuqiyu,29,Object-Oriented Programming,C+ HelloWorld,/2_1.cpp,#include ,using namespace std;,int,main,(),coutHello!n;,cout=j),return,i;,else,return j;,int,main(,void,) ,/B,coutij;,/,从键盘上输入变量值,coutmax number is:max(i, j), n ;,/,输出提示和结果,return,0;,程序组成:,注释,编译预处理指令,程序体,由若干函数组成,其中有且仅有一个主函数,main,(),这是程序的执行入口。在,Windows,编程中定义为,winmain,()。,NIT Spring 200,7, Liuqiyu,31,Object-Oriented Programming,上机实践,NIT Spring 200,7, Liuqiyu,32,Object-Oriented Programming,谢谢大家,请批评指正!,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!