面向对象编程

来源:互联网 发布:鼎泰物业管理源码 编辑:程序博客网 时间:2024/05/18 01:51

1.面向对象:

一切事物皆对象,通过面向对象的方式,将现实世界中的事物抽象为对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模。

2.对象:

人们所要研究的任何事物,它可以是具体的事物,也可以是抽象的事件、计划、规则等。

3.抽象:

决定事物性质的概念,从众多的事物中抽取共同的、本质性的特征。

4.对象具有状态和行为。

状态:对象用数据来描述它的状态。

行为:对象拥有操作,操作用于改变对象的状态,对象及其操作就是对象的行为。

5.类:

具有相同特性(数据元素)和行为(功能)的对象的抽象。

6.对象的抽象为类,类的实例为对象。

7.类间的关系:

组合:“has a”(有一个)的关系,一个类包含另一个类。

继承:“is a”(是一个)的关系,一个类继承另一个类。

不管是组合还是继承,其目的都是为了复用类。

8.对象的方法调用:

一个对象通过向另外一个对象发送消息进行方法调用。

消息:对象之间进行的通信结构。

比如,在一个对象b中调用了a.f();代码,代表对象b向对象a发出一条消息:对象a你调用你的f()方法来处理一些事情。

9.面向对象的三大特性:

封装:把数据和方法包装进类中,以及对具体实现的隐藏。(考虑将不变的部分与变化的部分区别开来。)

继承:子类共享父类的数据和方法的机制,这是类间的一种关系。

多态:接口的多种不同的实现即为多态,同一操作作用于不同对象有不同的表现。

重载:类中多个方法使用相同的方法名,而形参形式不同。

重写:子类重写父类中的方法,用于实现不同的功能,在某处调用父类的该方法时使用不同子类对象即可表现出多态。

10.面向对象设计与机构化设计的区别:

a.审视问题域的视角的不同

在现实世界中存在的客体是问题域中的主角,所谓客体是指客观存在的对象实体和主观抽象的概念,他是人类观察问题和解决问题的主要目标。

通常人类观察问题的视角是这些客体,客体的属性反应客体在某一时刻的状态,客体的行为反映客体能从事的操作。这些操作附在客体之上并能用来设置、改变和获取客体的状态。任何问题域都有一系列的客体,因此解决问题的基本方式是让这些客体之间相互驱动、相互作用,最终使每个客体按照设计者的意愿改变其属性状态。

结构化设计方法所采用的设计思路不是将客体作为一个整体,而是将依附于客体之上的行为抽取出来,以功能为目标来设计构造应用系统。这种做法导致在进行程序设计的时候,不得不将客体所构成的现实世界映射到由功能模块组成的解空间中,这种变换过程,不仅增加了程序设计的复杂程度,而且背离了人们观察问题和解决问题的基本思路。另外,再仔细思考会发现,在任何一个问题域中,客体是稳定的,而行为是不稳定的。

b.抽象级别的不同

抽象主要包括过程抽象和数据抽象。结构化设计方法应用的是过程抽象。所谓过程抽象是将问题域中具有明确功能定义的操作抽取出来,并将其作为一个实体看待。这种抽象级别对于软件系统结构的设计显得有些武断,并且稳定性差,导致很难准确无误地设计出系统的每一个操作环节。一旦某个客体属性的表示方式发生了变化,就有可能牵扯到已有系统的很多部分。而数据抽象是较过程抽象更高级别的抽象方式,将描述客体的属性和行为绑定在一起,实现统一的抽象,从而达到对现实世界客体的真正模拟。

c.封装体的不同

封装是指将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内。该逻辑单元负责将所描述的属性隐藏起来,外界对客体内部属性的所有访问只能通过提供的用户接口实现。这样做既可以实现对客体属性的保护作用,又可以提高软件系统的可维护性。只要用户接口不改变,任何封装体内部的改变都不会对软件系统的其他部分造成影响。结构化设计方法没有做到客体的整体封装,只是封装了各个功能模块,而每个功能模块可以随意地对没有保护能力客体属性实施操作,并且由于描述属性的数据与行为被分割开来,所以一旦某个客体属性的表达方式发生了变化,或某个行为效果发生了改变,就有可能对整个系统产生影响。

d.可重用性的不同

可重用性标识着软件产品的可复用能力,是衡量一个软件产品成功与否的重要标志。当今的软件开发行业,人们越来越追求开发更多的、更有通用性的可重用构件,从而使软件开发过程彻底改善,即从过去的语句级编写发展到现在的构件组装,从而提高软件开发效率,推动应用领域迅速扩展。然而,结构化程序设计方法的基本单位是模块,每个模块只是实现特定功能的过程描述,因此,它的可重用单位只能是模块。例如,在C语言编写程序时使用大量的标准函数。但对于今天的软件开发来说,这样的重用力度显得微不足道,而且当参与操作的某些数据类型发生变化时,就不能够再使用那些函数了。因此,渴望更大力度的可重用构件是如今应用领域对软件开发提出的新需求。

以上内容参考百度百科的面向对象。

0 0
原创粉丝点击