程序设计方法

网站制作的一个程序就像一部电影,编得好与不好相差很大,一部好电影可以让人看了还想看.而一部差的电影很少会被人看完。好的程序不但能解决间题,而且还有容易被看懂、运行效率高、容易修改等特点。那么.如何才能编写一个好的程序?这是程序员在进行程序编码之前必须考虑的问题,就是需要选取合适的程序设计方法.    随着计算机硬件技术的不断发展,程序设计方法也随之不断发展。最早的程序设计方法称为个体化方法,每个程序员都按照自己的习惯和风格来编写程序,其结果是程序很难维护。特别是规模较大的程序.个体化方法导致程序的寿命缩短。成本提高,不能满足需要.经过计算机工作者的努力.程序设计方法持续改进,在过去的几十年中,程序设计方法主要经历了两次革命性的飞跃:结构化方法和面向对象方法.相对应地产生了面向过程程序设计和面向对象程序设计。下面介绍结构化方法(Structured Method)和面向对象方法(Object-OrientedMethod). 曾被称誉为“程序设计方法的革命”的结构化程序设计.使程序设计从主要依赖于程序员个人的自由活动变成为有章可循的一门科学。它的主要贡献,是推动了程序设计风格从“追求技巧与效率”到“清晰第一、效率第二”的转变。从而提高了程序的易读性和可靠性。1976年.瑞士的沃斯((Nikiaus Wirth)教授在其经典名著《算法十数据结构二程序,的序言中指出:“程序就是在数据的某些特定表示形式和结构的纂础上.对于抽象算法的具体描述。”、“不了解施加于数据上的算法,就无法决定如何构成数据;反之,算法的结构和选掸,却常常在很大程度上依翰于作为基础的数据结构。简而言之。程序的构成与数据结构是两个不可分割地联系在一起的问题.” 沃斯的论述.精辟地概括了算法与数据结构在当时程序设计中的地位与相互关系.“算法+数据结构二程序”.影响和指导了一代又一代的程序员。从早期的程序设计语言Fortran,Cobol,ADA,Pascal到现代的C语言,全是面向过程的,都有一个特点:当对软件进行分析或设计时.开发人员总是遵循“程序二数据结构十算法”的思路.把程序理解为由一组被动的数据和一组能动的过程所构成,这样的程序设计方法就称为面向过程的程序设计方法。 结构化程序设计的普及促进了软件生产的工业化,也缓解了当时的软件危机。然而它的面向过程的程序设计思路,不适合日益复杂应用系统。实践表明用结构化技术处理5000行以下代码的软件的确是十分有效的,但面对当今的大规模软件产品的复杂性。却仍旧无能为力。可是在客观事物中,实体的内部“状态态,’(可用数据表示)和“运动”(加于数据的操作)却是结合在一起的.这就使采用传统范型开发的软件模型(称为“解空间” Solutiondomain)被人为地偏离客观实体本身的模型(称为“间题空间”,Problem domain).于是,面向对象的方法就应运而生了。 在面向对象的程序设计中,数据及其操作被封装在一个个称为“对象”(Object)的统一体中,对象之间则通过“消息”(Message)相互联系,‘对象+消息”的机制取代了“数据结构+算法”的思路,因而较好地实现了一解空间”与“问题空间,的一致性,为解决软件危机带来了新的希望,从结构化程序设计到面向对象的程序设计,是程序设汁方法的又一次飞跃,在软件开发和维护中正日益显露其优越性。 面向对象的思想最初起源于20世纪60年代中期的仿真程序设计语言Simula 67。 20世纪纪80年代初出现的Smalltalk语言和90年代推出的C++,Java语言及其程序设计环境先后成为面向对象技术发展的重要里程碑。从80年代末开始,面向对象的程序设计和面向对象的需求分析都得到快速发展,特别是90年代中期,lBooch, Rumbaugh和Jacoson共同提出了统一建模ig言(Unified Modeling Language, CML),把众多面向对象方法综合成一种标准,使面向对象的方法成为主流的程序设计方法。  (1)对象((Object),对象是现实世界中个体或事物的抽象表示,是它的属性和相关操作的统一封装体。属性表示对象的性质,属性值规定了对象所有可能的状态。对象的操作是指该对象可以展现的外部服务。例如。若将卡车视为对象。则它具有位置、速度、颜色、容量等属性。对于该对象可施行启动、停车、加速、维修等操作,这些操作将或多或少地改变卡车的属性值。 (2)类(Class)。类用于表示某些对象的共同特征(属性和操作),对象是类的实例。例如,汽车类可包含位置、速度、颜色等属性,以及启动、停车、加速等操作。卡车是汽车类的一个实例。 (3)继承(Inheritance)类之间可以存在继承关系,它是现实世界中遗传关系的直接模拟,可用来表示类之间的内在联系以及对属性和操作的共享。子类可以沿用父类(被继承类)的某些特征,同时子类也可以具有自己独有的属性和操作,对于一个类的修改能自动反映到它的所有子类中。例如,飞行器、汽车和轮船都是交通工具类的子类,它们都可以继承交通工具类的某些属性和操作。除继承关系外,现实世界中还大量存在着“部分和整体”关系。例如,飞机可由发动机、机身、机械控制系统、电子控制系统等构成。这种关系在面向对象方法学中可表示为类之间的聚集(Aggregation)关系。在聚集关系下,“部分”类的对象“整体”类对象的一个组成部分。 (4)消息(Message)。消息传递是对象与其外部世界相互关联的唯一途径。对象可以向其他对象发送消息以请求服务,也可以响应其他对象传来的消息,完成自身固有的某些操作,从而服务于其他对象.例如。直升飞机可以响应轮船的海难急救信号,起飞,加速,飞赴出事地点并实施救援作业。 对象的操作主要是用来响应外来消息并为其他对象提供服务的,所以它们也被称作“外部服务”。Coad和Yourdon认为。采用上述4种概念进行开发的软件系统可以认为是面向对象的。为此,他们把面向对象方法归结为一个简单的公式,即面向时象二对象+分类(Classification) +继承+消息通信(Communication withmessages)。
返回新闻列表