首页 理论教育 面向对象编程的基本概念

面向对象编程的基本概念

时间:2023-06-23 理论教育 版权反馈
【摘要】:弄清面向对象的认识,将要有助于弄清面向对象分析、设计及编程。由于面向对象编程的可重用性好,可以在应用程序中大量采用成熟的类库,从而提高编程效率,缩短开发时间。而如果使用组态软件,如世纪星、组态王、力控等,也是用面向对象编程,但对用户用不到类、对象、封装、继承及多态等这些概念,编程要简单得多。OOD是用面向对象的方法进行系统设计。

面向对象编程的基本概念

1.面向对象认识

对象(Objective),指的是事物,是很广泛的概念。可以说,凡是事物都是对象。如数字8是对象,一张桌子也是对象,等等。

“物以类聚”,所有事物总是按一定特征归入一个相应的类(Class)中。因而,可以这么说,类是对象的抽象,而对象则是类的实例。

如上述8,可归入数学自然数类。自然数是很多与8类似的事物的抽象,而8则是自然数这个类的一个实例,也具有自然数的特征。再如上述桌子,可归入日常生活用品家具类。家具是很多与桌子类似的事物的抽象,而桌子则是家具这个类的一个实例,也具有家具的特征。

在实际生活中,谁见过抽象的“自然数”、抽象的“家具”?没有。见过的,只能是具体的“8”、具体的“桌子”。但停留对具体的“8”、具体的“桌子”的认识,够不够?不够,还得提高到“自然数”、“家具”这样抽象的认识。

对象抽象为类后,将有其特性及处理方法。如8,代表数量,就是它的一个特性,8可与其同类的数相加,就是处理它的一个方法。掌握了对象的特性、方法,显然也就容易驾驭它了。

这里的“对象”与“类”反映的是个别(具体)与一般关系,是正确认识事物方法的精髓。正确认识事物,总是先认识“个别”、“具体”,后认识“一般”、“抽象”,再进一步认识新的“个别”、“具体”。从个别到一般、具体到抽象,又从一般到个别、抽象到具体,循环往复,以至无穷。才使得人们对事物的认识不断提高、不断深化。所以,把事物用这种“对象”的方法去分析、理解,也就是说用这样“面向对象”去认识,是很合乎正确的认识事物的方法的。

很显然,这个“类”也是相对的。一个“类”可能还属于外延更大的“另一个类”中。这“另一个类”一般称为“父类”。而这个“类”则是“另一个类”的“子类”。当然,这“父类”之上,也可能还有“父类”。而“子类”之下,也可能还有“子类”,等等,形成一个类的长链。

正如人类父子之间有继承关系一样,在类的长链中,“父类”、“子类”也都有继承关系。“父类”的特征往往在“子类”中有所体现,而对“子类”说,则是对“父类”的特征有所继承。

应强调的是,“子类”对“父类”的继承绝不是简单的重复,正如人类的继承一样,总是有发展的。而且,一个“子类”也不仅只有一个“父类”继承。而有时还有多个“父类”的特征,等等。

因此,面向对象认识有三个要点:归类地认识事物,继承地认识事物及发展地认识事物。这三个要点说明,对事物必须是联系起来看,历史地看,发展地看。方法论与认识论历来是统一的。弄清面向对象的认识,将要有助于弄清面向对象分析、设计及编程。

关于面向对象,有人说,早在20世纪50年代,诸如“对象”和“对象的属性”这样的概念,就出现在人工智能的著作中。OO(Object-oriented,面向对象)的实际发展却是始于1966年。当时Kisten Nygaard和Ole-JohanDahl开发了Simula语言。Simula提供了比子程序更高一级的抽象和封装;为仿真一个实际问题,引入了数据抽象和类的概念。大约在同一时期,AlanKay正在尤他大学的一台个人计算机上努力工作,他希望能在其上实现图形化和模拟仿真。尽管由于软硬件的限制,Kay的尝试没有成功,但他的这些想法并没有丢失。20世纪70年代初期,他加入了PaloAlto研究中心(PARC),再次将这些想法付诸实施。

面向对象与面向过程相比,面向对象更合乎人认识世界的规律的,是较为切合实际的认识世界与改造世界的方法。有人讲,这是小孩也都是这么认识事情的,没有什么神秘的地方。既然如此,计算机编程、PLC编程完全应该与可以运用它。

2.面向对象编程(OOP)(www.xing528.com)

OOP(Object-oriented Program,面向对象编程),是用面向对象认识与方法进行的编程,是计算机编程最先进的方法。可把它与结构化编程相比较,在比较中认识。

SP(StructureProgram,结构化编程),是从系统的功能入手,将系统分解为若干功能模块,而系统则是这些模块的集合。它强调功能,认为,程序=算法+数据结构,而数据与代码则是分离的。SP的优点是,系统是由简单部分组成,可使编程简化。但由于用户需求的变化和软、硬件技术的发展,划分的模块将不稳定。这样,开发出来的模块可重用性不可能高。

OOP则是以数据为中心,并把数据、代码封装在一起。强调的是数据,即对象及对象间的关系。它认为,程序=对象+对象之间的关系。数据相对于功能,更稳定些。所以,它的程序可重用性要好得多。由于面向对象编程的可重用性好,可以在应用程序中大量采用成熟的类库,从而提高编程效率,缩短开发时间。此外,它的封装,也可使数据的安全得以保证。它的继承和多态还使应用程序的修改带来的影响更加局部化,更易于维护、更新和升级。

OOP一般要用到面向对象的编程软件,如JAVA、VC、DELPHI、VS.NET等。在编程过程中,可使用编程软件提供的类库(如MFC)、WINDOWSAPI函数、各种控件,以及导向模板,编程可得到很大简化,但要用到类、对象、封装、继承及多态这些概念。而如果使用组态软件,如世纪星、组态王、力控等,也是用面向对象编程,但对用户用不到类、对象、封装、继承及多态等这些概念,编程要简单得多。

3.面向对象方法

20世纪80年代末以来,OOP的发展促使OOD(Object-oriented design,面向对象设计),进而OOA(Object-Oriented Analysis,面向对象分析)的出现与发展。

OOA是用面向对象的方法去分析程序所要服务的系统,要从问题域词汇中,通过发现的类和对象,来考察需求的分析方法。OOA的结果是一系列从问题域导出对象,还要确定基本的对象行为。它的侧重点是业务领域分析,与程序所要应用的行业领域相关,一般由用户方的专家进行。

OOD是用面向对象的方法进行系统设计。目的是为真实世界建立一个计算机中的虚拟模型。它以OOA的成果为基础,结合实际情况出发,而且没有一定的不变的步骤。也不存在界限分明的OOD阶段。事实上,OOD还与OOP交织在一起的,没有编程作基础,无法进行OOD,也无法改进OOD。

OOD的精髓就在于锻炼一种计算机式的解决问题的思维方法,这是开发软件的一把万能钥匙,不同的开发工具只带来实现效率的不同。负责OOD工作的人被称为系统架构设计师的任务是:

(1)确定系统的总体框架———大多采用已有的领域框架;

(2)正确理解需求分析得出的领域模型,用面向对象的思想设计出软件体系结构———系统概要设计;

(3)分析现实的可获取的技术资源,分解出程序的各个组件,安排好开发任务流程———系统详细设计。

怎么处理OOA、OOD及OOP间的交互关系,及安排它们具体进程,诞生了几十种的软件开发的面向对象方法。只是这些与PLC编程关系不大,在此略。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈