面向对象编程(OOP:Object-Oriented Programming) 是一种十分流行的编程思想,他的特点是以 对象(object) 为基本单元来构建代码。
例如:“怎样把大象装进冰箱?”这个问题,直观来说有以下步骤:
打开冰箱门
把大象装进行
把冰箱门关上
开门(冰箱)
存入(冰箱, 大象)
关门(冰箱)
这样的流程在编程中被称为 面向过程编程(POP:Procedure Oriented Programming),以 过程 为基本单元来构建代码。
而以面向对象的思想,上述问题将被分解为:
拥有一个名为“冰箱”的对象和一个名为“大象”的对象,冰箱能够进行开门、关门、存放物品、取出物品等操作。
digraph refrigerator {
// 设置图形属性
graph [rankdir=TB, fontname="SimHei"]; // TB表示从上到下(Top to Bottom)
node [shape=record, style=filled, fillcolor=lightblue2, fontname="SimHei"];
// 定义大象
大象;
// 定义冰箱
冰箱 [label="冰箱 | {
属性: |
内容物 |
方法: |
开门() \n 关门() \n 取出() \n 存入()
}"];
}
面向对象不代表完全没有过程,其流程依然是过程式的:
冰箱.开门()
冰箱.存入(大象)
冰箱.关门()
但面向对象的代码模块是由相关性很强的代码组成,例如 冰箱.开门()
仅为冰箱门负责,不需要考虑处理别的门甚至 开门(电视机)
。
相较而言,面向过程更加简单且符合人类的直觉,而面向对象更加符合物理世界的客观结构。
参考:面向对象编程