面向过程编程是一种以过程为核心的编程方法。使用该方法的关键是,先把问题的过程按照步骤分解出来,然后用函数的形式把这些步骤加以实现,并且依次调用它。
面向过程编程以函数为中心,数据在函数中传递,数据和函数是分开的。
面对对象编程把任务分解成一个个相互独立的对象,通过各对象之间的组合和通信来模拟实际问题。
面向对象和面向过程都是把大问题化解成为小问题:面向对象的小问题的单位是函数,数据在函数之间交互,面向对象的小问题单位是模块,模块不但拥有数据还拥有方法,模块和模块之间通过组合和交互来解决问题。比如经营面馆,用面对对象的方法大致可分解为顾客模块、服务员模块、面条模块、主料模块、佐料模块等。
对象指的是真实世界中具体的东西。它们有各自的属性和相关行为,分别被定义为对象的属性和方法。
类是对各个具体、相似对象共性的抽象。
类规定了一些相似对象的属性、职责和行为,并把它们封装;类提供了将数据和函数结合起来的方式,数据变成了类的属性,而函数变成了类的方法。
例子:把二维坐标中的点当作对象,创建二维点的类。
这些点共同的、抽象的特征:都有x,y坐标
抽象出和这个点相关的行为:例如对点的坐标做归一化的操作
UML(统一建模语言)类图:长方形表示类,分为3个区域,从上到下分别是类名、成员属性和成员方法,属性和方法前面加+(加号)表示它们是公有的。表示对象时,只写对象的名称和属性,不写成员方法
查看对象(t)的属性和方法
>> t = timer;
>> properties(t) %查看对象t的属性
类 timer 的属性:
ud
jobject
>> methods(t)
类 timer 的方法:
ctranspose eq isempty openvar stop timerfind
delete fieldnames isequal set subsasgn timerfindall
disp get isvalid size subsref vertcat
display horzcat length start timer wait
end inspect ne startat timercb waitfor
OOP的优点
- OOP把大问题分解成小问题
- OOP通过组合和信息传递完成任务:可以几个对象组合构成一个新对象
- OOP通过继承达到代码的复用
- OOP修改或者添加模块不会引响其他模块