面向对象程序设计(Object Oriented Programming,OOP)是一种计算机编程架构。OOP的一条基本原则是计算机程序由单个能够起到子程序作用的单元或对象组合而成。OOP达到了软件工程的三个主要目标:重用性、灵活性和扩展性。OOP=对象+类+继承+多态+消息,其中核心概念是类和对象。
特点:封装性、继承性、多态性
- 对象(Object) :可以对其做事情的一些东西。一个对象有状态、行为和标识三种属性。
- 类(class):一个共享相同结构和行为的对象的集合。类(Class)定义了一件事物的抽象特点。通常来说,类定义了事物的属性和它可以做到的(它的行为)。举例来说,“狗”这个类会包含狗的一切基础特征,例如它的孕育、毛皮颜色和吠叫的能力。类可以为程序提供模版和结构。一个类的方法和属性被称为“成员”。
- 封装(encapsulation):第一层意思:将数据和操作捆绑在一起,创造出一个新的类型的过程。第二层意思:将接口与实现分离的过程。
- 继承:类之间的关系,在这种关系中,一个类共享了一个或多个其他类定义的结构和行为。继承描述了类之间的“是一种”关系。子类可以对基类的行为进行扩展、覆盖、重定义。
- 组合:既是类之间的关系也是对象之间的关系。在这种关系中一个对象或者类包含了其他的对象和类。组合描述了“有”关系。
- 多态:类型理论中的一个概念,一个名称可以表示很多不同类的对象,这些类和一个共同超类有关。因此,这个名称表示的任何对象可以以不同的方式响应一些共同的操作集合。
- 动态绑定:也称动态类型,指的是一个对象或者表达式的类型直到运行时才确定。通常由编译器插入特殊代码来实现。与之对立的是静态类型。
- 静态绑定:也称静态类型,指的是一个对象或者表达式的类型在编译时确定。
- 消息传递:指的是一个对象调用了另一个对象的方法(或者称为成员函数)。
- 方法:也称为成员函数,是指对象上的操作,作为类声明的一部分来定义。方法定义了可以对一个对象执行那些操作。
多态与多态性
a.多态
多态指的是一类事物有多种形态(一个抽象类有多个子类,因而多态的概念依赖于继承)
比如序列类型有多种形态:字符串,列表,元组
b.多态性
多态性是指具有不同功能的函数可以使用相同的函数名,在面向对象中指对于不同的对象调用相同的函数名实现不同的功能
软件开发:需求定义、制定计划、软件的功能设计、软件的功能实现、验证和确认
C++ 编译器Windows用VS系列的IDE,Linux一般用g++,g++就是将包含了代码的文本文件编译(预处理、编译、汇编、链接)成可执行的文件。然后你才能执行。
gcc是GCC中的GUN C Compiler(C 编译器)
g++是GCC中的GUN C++ Compiler(C++编译器)
编译文件时,g++会自动链接标准库STL,而gcc不会自动链接STL
预处理(Preconditioning):以 # 开头的行都将被预处理器当做预处理命令来解释,插入头文件,替换宏,展开宏。
gcc -E main.c -o main.i //生成.i文件 g++ -E a.cpp
编译(Compilation):把文本中的代码转成汇编代码。
gcc -S main.i –o main.s //会生成一个a.s文件,里面是汇编代码,这一步还是文本文件。 g++ -S a.cpp
汇编(Assembly):把汇编代码转成目标文件的格式
gcc –c main.s –o main.o //会生成一个a.o文件,这一步开始已经是二进制文件了。但还不是可执行文件。 g++ -c a.cpp
链接(Linking):将上一步的目标文件转成可执行文件
gcc main.o –o main ./main //将上一步的目标文件转成可执行文件 g++ a.cpp -o hello_world //默认生成的可执行文件名称就是a.out //不管你的代码文件叫什么,默认可执行文件都是a.out //如果想更改这个名字,可以使用-o参数进行重命名
也可以一次性完成
gcc main.c –o main g++ b.cpp //不管编译的是什么,编译出来的文件都是a.exe g++ b.cpp -o b.exe //重命名



