1. 结构化 v.s. 面向对象
结构化程序设计方法是一种模块化程序设计方法,解决问题时以功能为中心,一定的功能模块虽然也作用于特定的数据,但它们没有被封装在一起。
面向对象程序设计方法则是以对象为中心来解决问题,属于同种对象的属性和服务被抽象出来封装到一起。
2. 面向对象方法的特定
2.1. 数据抽象
类是一组相似对象的抽象描述,抽取了这些对象的共性组成一个共同的概念,而ADT是一组相似类的抽象,一个类是ADT的具体实现。
2.2 封装
指软件的组成部分(模块、子程序、方法等)应互相独立或者隐藏设计的细节。传统的方法中,封装通常局限于将功能和数据分开封装;而面向对象方法中,封装是将功能和数据同时装入对象中。
2.3 继承
子类自动继承父类中的一些属性和行为,不必再进行定义,从而实现代码的复用。
2.4 多态
程序中同一符号或名字在不同情况下具有不同解释的现象称为多态性,由程序员设计的多态性有两种基本形式:编译时多态和运行时多态。后者是面向对象的一大特点。
编译时多态是指在程序编译阶段即可确定下来的多态性,主要通过使用重载机制获得,重载又包括函数重载和运算符重载。
运行时多态是指必须等到程序动态运行时才可确定的多态性,主要通过继承结合动态绑定获得。
2.5 动态绑定
1.https://blog.youkuaiyun.com/qq_37050329/article/details/82800422
2.https://blog.youkuaiyun.com/yutouqian/article/details/40783373
虚函数的限制:
- 仅适用于有继承关系的类对象,所以只有类的成员函数才能说明为虚函数
- 不能为静态成员函数
- 不能为内敛函数
- 构造函数不能是虚函数但是析构函数可以是
3. C和C++
C的优点:
- 硬件无关,可移植性强
- 简洁方便
- 运算符和数据类型丰富
- 可直接访问内存地址
- 位操作
- 运行效率高
C的缺点:
- 检查机制弱,编译时不能发现编程错误
- 不支持代码复用机制
- 难以控制大规模程序的复杂性
C++语言:
- C的超集,兼容C
- 继承了C的灵活性和高效性
- 扩充了对面向对象程序设计和高层次问题抽象方法的支持
- 完善了C的类型检查、代码复用、数据抽象机制,便于大规模程序开发
- 既反映了结构化程序设计方法,又反映了面向对象程序设计方法
C++程序结构:
为防止重复包含和嵌套包含,应在头文件加上如下的预编译命令:
#ifndef __INCLUDE_类名_H__
#define __INCLUDE_类名_H__
...
#endif
欢迎扫描二维码关注微信公众号 深度学习与数学[每天获取免费的大数据、AI等相关的学习资源、经典和最新的深度学习相关的论文研读,算法和其他互联网技能的学习,概率论、线性代数等高等数学知识的回顾])