6132
备注:
|
6973
|
删除的内容标记成这样。 | 加入的内容标记成这样。 |
行号 18: | 行号 18: |
* 改进的C语言 4 | * 改进的C语言 6 |
行号 57: | 行号 57: |
== 面向对象程序设计的作用 == * 更多模块化单位,更好的组织程序 * 更容易重用旧代码 * 有更多更好的程序库 * 更容易应付需求变化 总之:得到更高的软件开发效率 |
== 面向对象程序设计基本原理 == * 面向对象程序设计的思路和人们日常生活中处理问题的思路相似 * 一个复杂的事物总是有很多部分组成的,比如一辆汽车由发动机、底盘、车身、轮子等等部件组成。 * 人们操作事物的接口而不用关心其构造,比如开车的人只用关心方向盘、油门、刹车等汽车所提供的操作接口。 * 基本概念 * 对象:任何事物都是对象 * 属性:对象的静态特征 * 行为:对象的动态特征 * 消息:指示对象作出某种行为 * 封装:把对象内部实现和操作接口分开 * 抽象:对各种对象进行分类 * 继承:分类的层次结构 * 多态:对于不同类型的对象,可以对同一个消息作出不同的反应。 |
行号 80: | 行号 87: |
== 面向对象程序设计的作用 == * 更多模块化单位,更好的组织程序 * 更容易重用旧代码 * 有更多更好的程序库 * 更容易应付需求变化 总之:得到更高的软件开发效率 |
C++面向对象程序设计 Object Oriented Programming in C++
1. 课程要求
- 掌握面向对象程序设计(OOP)的思想和方法
- 封装Encapsulation, Abstraction
- 继承Inheritance
- 多态Polymorphism
- 掌握用C++进行面向对象程序设计
- 改进的C语言——实现更好的面向过程设计
- 类class——实现封装、继承、多态的基础
- 继承——实现多态的基础
- 虚函数virtual function——实现多态的唯一手段
- 运算符重载operator overload——实现自定义类型的途径
2. 课时
- 面向对象与C++概述 2
- 改进的C语言 6
- 类 6
- 继承 4
- 多态 6
- 运算符重载 4
- 输入输出流 4
3. 基础知识
- C语言程序设计是必须的
- 基本类型、运算符、表达式
- 控制结构
- 函数
- 数组、指针
- 结构体
- 输入输出库
- 其他程序设计语言也是有帮助的(Java、C#、Delphi、Python等)
4. 参考书
- 《Essential C++中文版》,Stanley Lippman
- 《C++编程思想》第二版,Bruce Eckel
- 《C++ Primer中文版》,Stanley Lippman
- 《The C++ Programming Language Special 3rd Edition》,Bjarne Stroustrup
《The C Programming Language第二版》,K&R
5. 如何学习C++和面向对象编程
- 多看书(需要多看参考书)
- 上机编程(实验、大作业)
- 讨论(与同学老师讨论,在网上论坛、讨论组讨论)
6. 结构化的程序设计
- C语言程序设计是典型的面向过程程序设计
- 支持顺序、循环、分支结构
- 基本模块是函数
- 采用自顶向下的设计方法
缺点:
- 旧代码不易重用
- 软件不易维护,需求变化时,程序修改困难
7. 面向对象程序设计基本原理
- 面向对象程序设计的思路和人们日常生活中处理问题的思路相似
- 一个复杂的事物总是有很多部分组成的,比如一辆汽车由发动机、底盘、车身、轮子等等部件组成。
- 人们操作事物的接口而不用关心其构造,比如开车的人只用关心方向盘、油门、刹车等汽车所提供的操作接口。
- 基本概念
- 对象:任何事物都是对象
- 属性:对象的静态特征
- 行为:对象的动态特征
- 消息:指示对象作出某种行为
- 封装:把对象内部实现和操作接口分开
- 抽象:对各种对象进行分类
- 继承:分类的层次结构
- 多态:对于不同类型的对象,可以对同一个消息作出不同的反应。
8. 面向对象的三个特点
- 封装:构造软件集成块
- 所有的东西都是“对象”
- 对具体对象进行概括,描述其公共性质,抽象成“类”
- 同类的不同对象“属性”不同
- 同类对象具有相同的“方法”
- 对象是“属性”和“方法”相结合的整体
- 对象是“数据”和“算法”相结合的整体
- 只留接口,隐藏实现
- 继承:扩展已有集成块
- 类与类之间Is-a的关系
- 重用共同的东西
- 增加接口,实现独特的东西
- 多态:同样的操作,不同的结果
- 相同的方法,作用在不同类型的对象上,产生不同的结果
- 用相同的方法操纵不同的对象
9. 面向对象程序设计的作用
- 更多模块化单位,更好的组织程序
- 更容易重用旧代码
- 有更多更好的程序库
- 更容易应付需求变化
总之:得到更高的软件开发效率
10. 计算机语言的发展
- 机器语言 由01构成的机器指令
- 汇编语言 用符号代替机器指令帮助记忆,与机器指令一一对应
- 高级语言 与人类思维方式更接近,与底层无关
11. 程序设计范式
无范式:最初的ForTran,最初的BASIC等早期高级语言
- 结构化程序设计Structured Programming:PASCAL,C等
- 函数式程序设计Functional Programming:Lisp, Scheme, Haskell等
面向对象程序设计Object Oriented Programming:SmallTalk, Java, C#等
- 泛型程序设计General Programming:C++, Java1.5等
- 其他范式:AOP, DbC等
12. 程序执行方式
- 编译型:由编译器翻译成机器指令执行,比如C, FORTRAN等
- 解释型:由解释器逐条解释执行,比如BASIC, LISP等
- 混合型:由编译器翻译成中间代码,再由解释器逐条执行中间代码,比如Java, .net等
13. 为什么选择C++
- C++兼容C语言
- C语言的程序员多
- C语言的源代码多
- 有C语言基础,较容易学习
- C++是通用的语言,在各种领域都可以使用
- 桌面应用(Office, Photoshop, IE)
- 服务器程序(Apache, IIS, ...)
- 数据库系统(SQL Server, Oracle, ...)
- 操作系统(Windows, ...)
- 编译器(GCC, Microsoft C++, Borland C++, ...)
嵌入式系统(VxWorks, Symbian OS, ...)
- 游戏(Doom, Quake, Halflife, ...)
- 科学计算
- 支持多种程序设计范式
- 支持兼容C语言的结构化程序设计
- 支持基于对象的程序设计
- 支持面向对象程序设计
- 支持泛型程序设计
- 运行效率很高
- 与C语言相比,运行效率±10%
- 开发效率比较高
- 有大量的C/C++库可以使用,提高了开发效率
- wxWindows, QT, gtk+, MFC, boost, MTL, VXL, ACE, ……
- 跨平台较好
- 支持源码级跨平台
- 各种软件硬件平台均可使用(Windows、Linux、Unix、Solaris、MacOS、AIX……)
- 支持各种硬件平台(x86、x86_64、ia64、alpha、arm、sparc、powerpc、m68k、mips)
- 标准开放,不为某个商业公司所有
- 缺点:非常复杂,较难学
14. C++语言的发展历史
- 80年代初贝尔实验室开始研究,主要作者是Bjarne Stroustrup
- 1983年第一个C++诞生
- 1985年The C++ Programming Language完成
- 1990年加入模板和异常特性
- 1990年The Annotated C++ Reference Manual完成
- 1993年加入名字空间和运行时类型特征
- 1998年C++标准完成
15. C++开发环境
- 编辑器——编辑源代码
- 编译器——将源代码变成可执行程序
- 调试器——消除程序中的错误
16. 常用集成开发环境
- vi/emacs + gcc + gdb (Unix平台通用,免费)
- Visual C++ 6/2003/2005(Windows下最好,价格昂贵,调试方便)
- Eclipse + CDT(跨平台,免费,支持多语言,用java写成,运行速度慢)
- Dev-C++(Windows平台,免费,调试不方便)
17. C++程序开发流程
- 分析设计Analyze and Design(需求,设计)
- 编码Code(得到c++源程序)
- 编译Compile(生成obj)
- 连接Link(生成可执行文件)
- 调试运行Debug
- 发布Deploy