版本7和8间的区别
于2006-07-15 22:20:28修订的的版本7
大小: 6132
编辑: czk
备注:
于2006-07-18 14:07:34修订的的版本8
大小: 6973
编辑: czk
备注:
删除的内容标记成这样。 加入的内容标记成这样。
行号 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语言 4
  • 类 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

The End

C++概述 (2008-05-08 15:33:45由czk编辑)

ch3n2k.com | Copyright (c) 2004-2020 czk.