




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于C++的面向对象编程教程于芹芬2003年春5/7/2023Dr.HaiinZhu关于课程(1)目标
进一步学会面向过程编程理解面向对象思想以对象的方式思考熟悉C++(P)利用C++编程5/7/2023Dr.HaiinZhu在本课程中:C++是一个学习面向对象概念的工具运用面向对象模式进行程序设计5/7/2023Dr.HaiinZhu采用面向对象方法的效果(OOA/OOD)可维护性可扩展性可靠性5/7/2023Dr.HaiinZhu如何实现课程目标阅读和记忆阅读书籍,记住语言特点思考以对象和类的方式思考实践多编程5/7/2023Dr.HaiinZhu参考课本C++程序设计教程(钱能),清华大学出版社C++程序设计教程,H.M.Deitel,P.J.Deitel著,机械工业出版社C++大学教程(第二版),HarveayM.Deitel著,电子工业出版社
C++Primer(第三版),StanleyB.lippmanJoseeLajoie著,中国电力出版社C++编程思想(ThinkinginC++),BruceEckel著,机械工业出版社5/7/2023Dr.HaiinZhu1从C语言到C++语言C语言以其如下独有的特点风靡了全世界:(1)语言简洁、紧凑,使用方便、灵活。C语言只有32个关键字,程序书写形式自由。(2)丰富的运算符和数据类型。(3)可以直接访问内存地址,能进行位操作,使其能够胜任开发操作系统的工作。5/7/2023Dr.HaiinZhu(4)生成的目标代码质量高,程序运行效率高。(5)可移植性好。5/7/2023Dr.HaiinZhu局限性:(1)数据类型检查机制相对较弱,这使得程序中的一些错误不能在编译阶段被发现。(2)C本身几乎没有支持代码重用的语言结构,因此一个程序员精心设计的程序,很难为其它程序所用。(3)当程序的规模达到一定程度时,程序员很难控制程序的复杂性。5/7/2023Dr.HaiinZhu发展1980年,贝尔实验室的BjarneStroustrup开始对C进行改进和扩充。1983年正式命名为C++。在经历了3次C++修订后,1994年制定了ANSIC++标准的草案。以后又经过不断完善,成为目前的C++。C++仍在不断发展中。美国微软公司现已推出C#(CSharp)语言,来代替C++语言。5/7/2023Dr.HaiinZhu编译器VC++6.0或其它(TurborC3.0,BorlandC++)5/7/2023Dr.HaiinZhu有关面向对象编程的网站5/7/2023Dr.HaiinZhuC++的网站5/7/2023Dr.HaiinZhuObject-Oriented编程简介5/7/2023Dr.HaiinZhu内容方法学编程技术面向对象语言5/7/2023Dr.HaiinZhu1.方法学5/7/2023Dr.HaiinZhu思考问题的方法归纳从特殊到一般从不同的dogs到词汇“dog”Dog5/7/2023Dr.HaiinZhu思考问题的方法演绎从一般到特殊从词汇“dog”,你可以区别出一个动物是还是不是一条狗DOG5/7/2023Dr.HaiinZhu面向对象它是一种思考方法世界上的任何东西都是一个对象;任何系统都是由对象构成的(当然系统也是一个对象);系统的演化和开发就是通过系统内外的对象进行交互完成的。5/7/2023Dr.HaiinZhu世界上的任何东西都是一个对象花,树,动物学生,教授桌子,椅子,教室,建筑大学,城市,国家世界,宇宙学科,如计算机,信息系统,数学,历史…5/7/2023Dr.HaiinZhu任何系统左都是由对霜象构成的法律系统文化系统教育系统经济系候统信息系兰统计算机系泼统4/27洪/202冲3Dr.裳Haii隐nZh馆u系统开昏发就是很定义对间象间的同交互浙江林学贱院是由下代列对象的闹交互构成面的:学生教授职员浙江省盟政府中国政尊府….膝..林院内部林院外肥部4/27吼/202缸3Dr.隶Haii截nZh眯u设计方散法学面向对象候首先是一邻种设计方趁法学(O泛OA/O辫OD)对象是事程序的袍构成模扛块(纯接口对豪象(存edi置tor咏,m御enu诵,f脱ile暑,e根tc)环,数虚据管理崇对象债(db框),缸etc缓.).对象代表征了在应用膨中对现实献世界的抽症象.4/27期/202学3Dr.闹Haii笼nZh桂u设计方法朗学面向对释象支持归纳:走对象-吨>类需要O舱OA/财OOD隙工具.演绎:米类->对脱象编程者需鸦要学习有遭关类库的圣知识4/2板7/2管023Dr.亩Ha窗iin贴Zh件u设计方法蓝学面向对象匆支持Top眨-do莫wn:砌从超崭类到子盯类Bot防tom世-up循:从舱子类到腥超类4/2膝7/2闻023Dr.厚Ha耕iin舅Zh野u面向对象拢编程的基苹础*对象*封装*继承一般说陪来,对舞象是根披据类来勤定义的渡。我们勇也可以吩用一个加类来定砖义另一巩个类。巡寿例如,聋山地车个、赛车绣和双座央自行车横都是自扮行车的碰一种。变用面向泽对象的宜术语来干说,它肿都是自型行车类往的子类净或派生找类,而浸自行车话类是它集们的超躁类或父竹类或基土类。它畅们的关房诚系如下台图所示底:自行车每一个射子类继清承了超捡类的数盆据和操破作,但港是,子杀类并不纲是局限案于超类晓的数据赞和操作袋。例如同,双座豆自行车妙有两个宁坐垫,飞山地车绑有一个斧额外的舅低速齿泪轮。继娘承的主慕要益处每是可以壳复用超骡类的程鼻序代码*多态赛车三地车双座自名行车4/2涂7/2固023Dr.萝Haii龙nZh绵u面向对搏象“世界是垃面向对象哄的”---喜-Al辉an冬Kay券sa矮id.如果你剥对世界怨了解,质那么你虚就了解桃了面向帽对象.所以,面内向对象是丸容易的.4/2府7/2后023Dr.千Haii脆nZh预u2.编丢程4/2茶7/2症023Dr.茧Ha把iin粥Zh刑u编程就像坚写作.如果你蹈能够描风绘一样犁东西,所你就可邻以写一端个程序区.所以,找编程也稼是容易尺的.所以,拔面向对喇象的编失程等于谢容劲易+券容易勉,得皆到“缎too种(2)誓ea碗sy”婆.编程4/27剧/202液3Dr.丛Ha纳iin移Zh提u编程但是,蹄实际上源,编程闷并不那皂么容易筝。因为呆编一个菜真正的酒好的程饿序是不笛容易的西。它需露要编程贴者的智侨慧,知黎识和经逐验.就象写阔作一样秒,要成是为一个旧好的作定家,就爬需要很物多的经忘验和对倚这个世缎界的大号量知识亭。学习和练姐习就必不态可少。4/2待7/2咳023Dr.催Haii注nZh址u编程技堡术非结构均化编程过程编户程模块化矿&张结构化羽编程抽象数据摊类型面向对刘象编程4/27惑/202锯3Dr.趴Haii漆nZh生u非结构堤化编程我们经常猜将一个简丽单的程序晃写成一个挎主程序.故此处,吹主程序代咏表了命令贫和声明的统一个序列连,这个系械列在整个俯程序中对锁全局数据姿进行修改刊.Main绑Pro招gramDat队a4/2背7/2招023Dr.古Ha轮iin钢Zh册u缺点这种技芦术只能刮用于很塘小的程貌序中.例如,如门果相同的需声明序列咽在不同的趁地方要多德次出现时填,我们就只不得不拷颤贝这些序雪列。如果却其中发生狠了一个错瓶误,我们欢就需要对籍每一个拷欠贝进行修颂改.这就导工致了我逆们将这早些序列垄抽取出灶来,单汁独命名倚,并通妈过调用准和返回瞒值的方桑法来实尘现多处耽复用的叮方法。4/27输/202族3Dr.贼Ha变iin挠Zh赢u过程编吹程在过程编府程中,你物可以将序炒列归在一发个地方过程调用础可以被用同于调用过嘱程。在调袍用完成后备,控制流钉继续往下榨。MainPro幸gra济mPro沾ced卖ure4/27害/202场3Dr.梢Haii宪nZh途u过程通过参数曲和子过程顿(过程念的过程)行,程异序就可以皂写得更有蓄结构并且萝可以减少禁错误.例如,孙如果过吵程是正友确的,笛那么每筛一次使与用它必甲然可以诞获得正货确的结吸果因而,爱为了查秀找错误指,你就窑可以缩蔬小查找也的范围践.4/27稻/202遣3Dr.恒Haii串nZh券u模块化编西程在模块化矮编程中,桨具有公共吩功能的过您程被集中晋在不同的尺模块中一个程序顷就不再是惠一个单一供整体构成传的了,它文被分解成勤多个小的精部分,这吊些小的部逃分之间通纽奉过调用相繁互交互,废构成了整苍个程序.4/27鞭/202恳3Dr.驴Haii都nZh轧uMai闪nP廉rog杨ram惜(Al理so括am泪odu红le)DataDat晓aData1Mod芦ule2+DataData2Mod帐ule1+DataDat末a1Pro作ced猫ure1Proc挣edur苏e2主程序协灭调多个模铲块之间的塑调用,并砖进行数据筛的传送Proc作edur访e34/2来7/2割023Dr.唯Haii岩nZh恩u模块化编剂程每一个模锄块都可以铲有自己的于数据。这沟将允许每磁一个模块径来管理内咬部状态,助这些状态购可以在调醒用这些模游块中的过潮程时得到症修改.因此,每唱一个模块屯都有一个桂状态,每互一个模块寻在整个程饿序中通常弦也最多存政在一次4/2览7/2缸023Dr.黑Ha隐iin狡Zh涨u结构化编蛙程结构化利程序中饿的三种汽结构顺序(s1,糊s2,托…,s矮n)分支(退if-絮the做n-e晶lse朵)循环Lo揭op(f炉or,d她o,a皆ndw祝hile极loo醉ps)程序中拴有多少倡结构?4/2腾7/2铃023Dr.麦Ha掏iin萍Zh较u抽象数据构类型(A糟DTs)抽象模型抽象数据搞类型属性4/27担/202崭3Dr.散Ha旦iin缎Zh殊u抽象识--问跪题处理森手段为了理匙解问题毛,需要担将不必绿要的细径节分离照出去:你将构喉造你自停己针对斩问题的霉抽象视咳图,抽豆象模型这个建模微过程称为令抽象abst刺ract野ion.4/27栗/202榨3Dr.重Ha瞎iin闸Zh蹦u问题模型抽象4/27冤/202宏3Dr.软Haii档nZh蛋u模型模型定亩义了一悉个抽象庄的视图坏,该视惕图只关稿注于与呀问题和随求解者斥相关的道部分。躲你需要弓定义下舍列属性毁:影响的卷数据;识别出述来的操三作;ADT文就是一种室模型.4/27贷/202膊3Dr.雕Haii罩nZh走uInt笛erf票aceOpe侮rat吴ion革sAbst上ract级Dat这aSt耀ruct术ureAbs鞭tra测ct承Dat放aT萌ypeADT4/2坝7/2牺023Dr.蒸Ha斗iin辣Zh畅u定义(疤ADT)ADT剃有下剥列一些良特性:1.仗它提供每了一种颈类型.2.禁它提供汗了操作候的集合惊.该假集合被仪称为接灵口.3.接庙口的操作截是类型数樱据结构的翻唯一访问率途径.4.原锈理和前提必定义了类砍型的应用汪领域.4/27现/202游3Dr.讽Ha罩iin侦Zh臂u例子:消AD肥TL少ist类型List.类型li匙st实例榨的接口由假接口定义敲文件定义操作:杆in散ser欢t,彼get片,a臂ppe有nd,体de夹let横e,s粉ear峡ch,竟…4/27圆/202捎3Dr.浑Haii和nZh蚕u面向对饮象的编护程对象是由伟抽象数据粮类型来的面向对象螺编程是对胀象交互的悟一个网络集,每一个经对象保存欣自己的状抵态程序中禁的对象世通过发冈送消息厌进行交歌互4/27志/202谢3Dr.吃Haii词nZh奏uObje贫ct1Data1+Pr粉oce擦dur倦es1DataData1Obj胶ect3Data3+Proc绕edur核es3Obje挑ct2Dat姑a2+Pro细ced等ure刺s2Obj案ect4Data4+Pro售ced株ure尿s44/2伍7/2蜓023Dr.倦Ha驻iin饰Zh虹u面向对象枪编程在面向品对象编复程中,旋我们直示接发送肿一个消揭息,而恋不是去拍调用一妹个程序竿来实现崭一个功热能.粗略地用说,每犯一个对封象实现口了自己私的模块4/2距7/2糠023Dr.者Ha熟iin捕Zh电u面向对象酱编程每一个对清象负责正塌确地初始侨化和销毁贷自身.相应地,帮对对象而侦言,我们帖就不需要施显式地创效建和生成洪过程4/27乡丰/202蜘3Dr.治Ha凑iin棵Zh煮u模块信息隐壳藏数据封装抽象数障据类型对象面向对至象的演换化4/27蒙/202匹3Dr.积Haii祥nZh三u记住封装(章Dat辆a&很Op酒era倘tio口ns)闹---顿信息礼隐藏的兵技术—诉—对象爬的用户呈不能看劳到对象喜的数据拍和操作耀的细节.数据抽边象-难---从对象中疏发现类的云过程抽象数猾据类型泽---铺-类4/2陆7/2圈023Dr.益Haii昼nZh杠u3.编码星语言4/2贡7/2吵023Dr.扮Haii刑nZh共u面向对暂象语言面向对蹄象编程桂语言就酷是能够括很方便酱地支持括面向对针象概念林的语言Smal械ltal眨k:19黎72-1生980.C++:报1986排.Java芽:199国2(S暗mall棉talk起+疮C++)纳.其它:Eff艺ile永,O捷bje军cti诞ve-录C,丧Ada复,.坑..4/2崭7/2饮023Dr.考Haii乱nZh颈uSmal嫂ltal盒kSmal对ltal眉k是一尚个纯的面总向对象语叼言.多数人认影为Sma母llta龄lk程求序比C键++程君序开发起绞来更快.4/2帆7/2载023Dr.恰Haii缎nZh酷uSma淋llt险alk丰富的榴类库,疾通过继孔承实现聚重用Smal客ltal僻k拥有既动态开发疤环境。它接不是编译呆的,但是肢C++合是编译烧的.这使得雄开发过丈程更可东变,你墙可以方没便地对扎类和各剩种情形抬进行修誓改4/2抚7/2两023Dr.赵Haii未nZh随uSmal聪ltal蜂k编程者妥并不能渣象在C政++中泥那样立柜即掌握概o-o通概念.酱正因模为如此本,掌握迟Sma妹llt看alk解需要更匪多地时乡丰间.拳但是多方数时间特是花在油学习面裕向对象壶方法学线和技术铁上,而笋不是编偶程语言苹上的。烘实际上踏,Sm耕all舟tal葵k比奋C和C睡++更仿为简单钳.4/27宾/202心3Dr.同Haii特nZh植uC++C++我是队C的面马向对象眠版本.烤它与搜C是缴一致的草(它卧实际上兽是C的揉超集)哀,所昌以现存安的C盲代码庙能够包探含在伸C++使程序盼中.C++手程序违速度快夫,效率杜高.这些特携性已经画使C成吉为很流楚行的语旦言.4/27嚷/202谦3Dr.微Ha俗iin牢Zh访uC++它牺牲了客一些灵活岔性以提高裳效率.C++大采用编译番时绑定的回方法。这步使得程序矩运行时的融效率很高恭,代码也盐较小,但惊是它影响胀了重用类兵的某些能洗力.4/2芬7/2皂023Dr.绵Haii路nZh汽uC++C++泡已经棒非常流峡行,绝旧大多数裤新的滤C编教译器实嘱际上是高C/散C++译编译响器.肯但是,宇如果想凝进行面穷向对象捉编程,伐你必须习用C+甚+编程照(思考甩),而雁不是C兼.这些都将月对有经验出的C编程武者带来挑镰战。他们游认为他们销是在运用龟C++编棚程,但实滨际上只用亭了很少的三面向对象给特点。4/27窜/202遣3Dr.临Haii裂nZh桐uC++C++分是一个优辈秀的语言骆.利用它,你可罚以编出世乞界上最好迹的程序!C++轻是一里个差的奸语言.使用它阅,你也盗可能编叙出世界田上最差塘的程序所以,在禽学习和使屈用它时,系注意它的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论