面向对象是一种的程序设计方法,或者说它是一种程序设计范型,其基本思想是使用对象,类,继承,封装,消息等基本概念来进行程序设计。
它是从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以问题域(现实世界)中的事物为中心来思考问题,认识问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的对象,作为系统的基本构成单位(而不是用一些与现实世界中的事物相关比较远,并且没有对应关系的其它概念来构造系统)。这可以使系统直接地映射问题域,保持问题域中事物及其相互关系的本来面貌。
它可以有不同层次的理解:
- 从世界观的角度可以认为:面向对象的基本哲学是认为世界是由各种各样具有自己的运动规律和内部状态的对象所组成的;不同对象之间的相互作用和通讯构成了完整的现实世界。因此,人们应当按照现实世界这个本来面貌来理解世界,直接通过对象及其相互关系来反映世界。这样建立起来的系统才能符合现实世界的本来面目。
- 从方法学的角度可以认为:面向对象的方法是面向对象的世界观在开发方法中的直接运用。它强调系统的结构应该直接与现实世界的结构相对应,应该围绕现实世界中的对象来构造系统,而不是围绕功能来构造系统。
- 从程序设计的角度来看,面向对象的程序设计语言必须有描述对象及其相互之间关系的语言成分。这些程序设计语言可以归纳为以下几类:系统中一切皆为对象;对象是属性及其操作的封装体;对象可按其性质划分为类,对象成为类的实例;实例关系和继承关系是对象之间的静态关系;消息传递是对象之间动态联系的唯一形式,也是计算的唯一形式;方法是消息的序列。
例说 面向过程 和 面向对象 在程序设计时的区别
- 面向过程 是一种以 事件 为中心的编程思想。
- 面向对象(Object Oriented,简称OO) 是一种以 事物 为中心的编程思想
下面以公共汽车为例,分别讲述 面向过程 和 面向对象 在程序设计时的区别。
面向过程 就是汽车启动是一个事件,汽车到站是另一个事件。在编程序的时候我们更关心的是某一个事件。而不是汽车本身。我们分别对启动和到站编写程序。类似的还有修理等等。
编写程序就是:
- public class 运营
- {
- void 汽车启动
- {
- }
- void 汽车到站
- {
- }
- }
面向对象 需要建立一个汽车的实体,由实体引发事件。我们更关心的是一个汽车实体而不是汽车的每个事件。
编写程序就是:
- public class 汽车
- {
- void 到站()
- {
- }
- void 启动()
- {
- }
- }