电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

面向对象程序设计吴迪毛琛

23页
  • 卖家[上传人]:san****019
  • 文档编号:70829565
  • 上传时间:2019-01-18
  • 文档格式:PPT
  • 文档大小:637.31KB
  • / 23 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、面向对象程序设计 吴迪 毛琛,1.类与对象,对象(Object)是类(Class)的一个实例(Instance),重点是类的设计,而不是对象的设计。 类提供关键字public、protected 和private ,这样可以达到信息隐藏的目的,即让类仅仅公开必须要让外界知道的内容,而隐藏其它一切内容。但不要滥用封装。 两种人:“以数据为中心”、“以行为为中心”,2.继承,继承:public继承:所有域都继承 private继承:public域的内容成private域 protected继承:public域的内容成protected域的 逻辑关系: B继承A那么逻辑上一定是B从属于A,不能为了让B拥有A的一些功能,就滥用继承。,公鸡为什么追打一只下了蛋的母鸡?!,因为母鸡下了一个鸭蛋,3.虚函数和多态,除了继承外,C+的另一个优良特性是支持多态,即允许将派生类的对象当作基类的对象使用。 加上虚函数和抽象基类后,“多态”的好处就体现出来了。 抽象基类只管定义纯虚函数的形式,具体的功能由派生类实现。,例如:XXXX的几何形体系列问题,“抽象基类”和“多态”有如下突出优点:,应用程序不必为每一

      2、个派生类编写功能调用,只需要对抽象基类进行处理即可。可以大大提高程序的可复用性。 派生类的功能可以被基类指针引用,这叫向后兼容。,良好的编程风格,1.命名约定 有不少人编程时用拼音给函数或变量命名,这样做并不能说明你很爱国,却会让用此程序的人迷糊,程序中的英文一般不会太复杂,用词要力求准确。,Microsoft提倡的匈牙利命名法,new、delete 与指针,在C 语言中,函数malloc 用于申请内存,函数free 用于释放内 存。由于C+兼容C 语言,所以new、delete、malloc、free 都有可能一起使用。 malloc - free new - delete 在用delete 或用free 释放p 所指的内存后,应该马上显式地将p 置为NULL,以防下次使用p 时发生错误。 预防“野指针” (1)指针没有初始化。 (2)指向已经释放了的内存地址。eg.,Const的使用,1.强制保护函数的参数值不发生变化 void f(String s); / pass by value void g(String / name 的值可能改变 ,void g(const String

      3、 / name 的值不会改变,2.强制保护类的成员函数不改变任何数据成员的值 class Stack public: void push(int elem); void pop(void); int Count(void) const; / const 类型的函数 private: int num; int data100; ; int Stack:Count(void) const + num; / 编译错误,num 值发生变化 pop(); / 编译错误,pop 将改变成员变量的值 return num; ,一点其他的小体会,1.不要写过复杂的语句。 2.不要写功能很多很复杂的函数,程序要尽 量的模块化,每个函数执行比较单一的功能,便于理解和修改。,什么是面对对象? 是一种思维方式 是看待世界的方法,传统的: 程序 = 算法 + 数据结构 面对对象的 程序 = 对象 + 消息,面对过程 VS 面对对象 早期 :全局变量+goto 面对过程:顺序、选择、循环 面对对象:对象、消息,面对对象的特点 1、符合人们对客观世界的认识规律 2、对需求变化具有很强的适应性 3、支持软件复用 4、

      4、可维护性好,C+ VS C Question: 看着这么多人心甘情愿地花大几十,甚至上百元买书研究C+和面对对象,我搞不明白为什么非要研究面对对象,直接用C语言的方法来写程序不是也可以吗?而且程序更直观,容易看懂,我对C+和面对对象就不那么感冒,总感觉面对对象太复杂了,各种概念太多,程序写起来不好控制,大家和我有同感吗? FROM TOPIC.CSDN.NET,Answer: 我现在被老板要求写一个大程序,偶是做语音识别的,懂行的都知道这类程序有多么地庞大,另外可能也知道剑桥出的一个语音识别的toolkit-HTK。这个非常成功的toolkit就是用c写的,可以说,c用来写庞大的复杂程序是完全行得通的。但是,遗憾的是,这样一个工具,我们只能够用,却不能够用来做深入的开发,因为我们发现,要想改动中间一个地方,牵涉改动的地方太多太多了,大量的全局变量,在十几个模块的头文件及其实现文件中被调用来调用去的,除非你彻底吃透这个程序(只有原作者才能达到这个要求),才能动手更改。而老板给我的任务居然是要我修改其中的关键性代码。,说了这么多,大家也知道我什么意思了,不错,c是可以完成很多工作,也可以做

      5、得很优秀,但是它做出来的东西,尤其是大的复杂的程序,不具备良好的可重复开发性。这使得后来者们要浪费非常多的时间和精力在阅读冗长的代码和猜测作者的意图上。而一个严格按照面向对象标准开发的c+程序,我们对它其中众多的功能模块几乎不要彻底看懂它,就能够直接拿过来供我们开发的时候使用。当我们调用某个模块的某个函数的时候,也不用担心会影响到其他模块的功用。 我现在就是在做这方面的工作,所以对C+和C相比的优越性有着切身的体会。我想我实在无法完成老板对我的要求,所以我正准备发信给HTK的作者们,询问他们这个工具的C+版能不能尽快出来。,Advice: Thinking in C+! 写C+程序,功夫全在程序外。如果事先你能分析好你要实现的目标,把各模块的关系基本弄清,那么你会觉得用C+很顺手。,继承 VS 组合 继承 is a 组合 has a 继承削弱了封装(Peter Coad 和 Mark Mayfield ),使用建议:,官方: 只要有可能的时候就应该使用组合,而继承只有在必要时才使用 实际: 根据使用场合而定,继承并非有害的,面对对象设计注意事项 1、尽可能向用户提供最少的接口 2、在设计时考虑到重用/扩展 3、提供复制和比较对象的方法 4、尽可能使作用域最小 谢谢!,class A public: void Func(void) ; void Test(void) A *p; A a; p = back,

      《面向对象程序设计吴迪毛琛》由会员san****019分享,可在线阅读,更多相关《面向对象程序设计吴迪毛琛》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.