1.面向过程的程序设计
在软件发展的初期,人们习惯于面向过程的程序编写方式,其特点是将问题看作一系列需要完成的任务,将完成任务的要素抽象归纳为多个函数。这种程序设计方式将数据与处理数据的程序分开,这符合人们刚刚进入编写程序领域、处理简单问题的习惯。这符合冯·诺依曼计算机顺序化处理逻辑,易被初学程序设计者接受。
然而,面向过程的程序设计方法在处理较大规模的系统时,很难控制系统的复杂度。在多函数程序中,由于采用了数据与函数分离的方式,整个程序流程中,许多重要的数据被放置在全局数据区,由程序员控制数据在不同函数间传递,这也被称为数据的封装性不够。由于每个函数都可以有它们自己的局部数据,所以完全存在函数内部对全局数据进行无意修改的可能,导致程序的正确性不易保证。
2.面向对象的程序设计
1967年挪威计算中心的Kisten Nygaard和Ole Johan Dahl开发了Simula67语言,在这种语言中引入了数据抽象和类的概念,提供了比函数更高一级的抽象和封装。它被认为是第一个面向对象的程序设计语言。之后,美国Palo Alto研究中心的Alan Kay所在的研究小组开发出的Smalltalk-80,被认为是最纯正的面向对象语言,它对后来出现的面向对象语言,如Object-C、C++等,都产生了深远的影响。
面向对象程序设计,将世界万物看作对象,并对同种对象的共同性质进行抽象,形成一种类别。在程序的实际设计中,将对象作为程序的基本要素,而对象则是行为和属性的结合体。用计算机程序领域中的术语来说,是将数据(对象的属性)和代码(对象的行为)结合为一个整体。这种包装带来的巨大优势是:代码很容易被继承和复用;每个类都可以被当作一个坚固的构件,用于不同系统的搭建,因而非常符合工程建造领域快速搭建的思维方式,系统的复杂度得以很好地分散控制,适用于大型体系的建设。
面向对象程序设计的主要特征包括:(www.daowen.com)
(1)封装性
封装使数据和处理数据的程序组装为一个整体,从而可以实现独立性很强的模块。通过封装技术,很容易将类的使用者和设计者分开,实现信息的隐藏,使得使用者只能见到对象的外部特性,不必知晓行为实现的细节,只须用设计者提供的方法来访问该对象。
(2)继承性
继承性指子类自动拥有父类的数据和方法的机制。一个类可以直接继承其父类的部分或全部特征,同时可进行修改和扩充。其带来的巨大利益是,在支持系统可重复性的基础上,进一步提升了系统的可扩充性。
(3)多态性
多态,是指父类中定义的方法,被不同的子类继承之后,每个子类通过扩充,拥有不同的行为。多态性的实现受到继承性的支持,通常的设计方法是:利用类继承的层次关系,把具有通用功能的特性存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次。这样,在这些低层生成的对象就能给通用的消息以不同的响应。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。