跳至主要內容

OOP思想

LincZero大约 3 分钟

OOP思想

类的设计

思想与设计

面向对象编程(OOP)

  • 是什么
    • 是一种特殊的、设计程序的概念性方法,是“思想”
    • C也能用(用结构来模拟类)
    • C++改进(引入类和一些类的特性)C语言,使这种方法更容易
  • 重要的OOP特性(封装并只是OOP的特性之一,并不是其全部或内核)
    • 抽象:体现于抽象数据类型、抽象基类
    • 封装和数据隐藏:体现于私有成员
    • 多态:体现于继承多态、模板类
    • 继承
    • 代码的可重用性:体现于各种继承、包含、嵌套
  • OOP特性的具体表现
    • 封装的具体表现
      • 数据隐藏(防止直接访问数据,用户无需了解数据是如何被表示的)
      • 将类函数定义和类声明放在不同的文件中
    • 隐藏机理、强调实质
      • 多态 - 运算符重载

设计过程和程序结构(设计过程和程序结构分别对应)

  • 设计过程
    • 从用户角度考虑对象——描述所需数据和与数据交互的操作(类声明头文件)
    • 然后确定如何实现这些接口和数据存储(类实现代码)
    • 最后使用设计方案创建出程序(客户代码)
  • 程序结构:可以分成三部分(原型、定义、调用,三者分离),这种组织方法模块设计与OOP设计一致
    • 头文件:包含结构声明和使用这些结构的函数的原型
    • 源代码文件1:包含与结构有关的函数的定义代码
    • 源代码文件2:包含调用与结构相关的函数的代码
  • 头文件设计
    • 详细参见模块系统一章
    • 函数/类模板声明:不能放实现文件,其不能被独立编译
    • 内联函数定义:不能放实现文件,其不能被独立编译
  • 工具包思想
    • 哪怕是自己设计类给自己使用,也应当做是两个人——类编写者和类使用者,两者拥有不同的权限
    • 类编写者:类设计者,能操作类的私有和隐藏部分
    • 类使用者:自己或者其他使用类库的别人,只能操作类的公有部分

类与结构不同的是

  • 类成员默认是私有的,结构成员默认是公有的
  • 通常用类来实现类描述
  • 用结构用来只表示纯粹的数据对象(常被称为老式数据(POD,Plain Old Data)结构)

其他

  • 规范
    • 类名首字母大写
  • 技巧
    • 使用状态成员

简概

类似于strut、enum,需要先声明类名

  • struct关键字:声明结构名,再用结构名定义结构变量
  • enum关键字:声明枚举名(以及枚举量),再用枚举名(和枚举量)定义枚举变量
  • class关键字:声明类名,再用类名定义类变量(一般不叫类变量,叫类对象/类实例