学习Java有一段时间了,但是对面向对象的程序设计语言并不是很懂,在这里记录自己的心得体会。
现在主流的程序开发方法:结构化开发方法和面向对象开发方法。结构化编程语言早于面向对象的开发方法,这里我们先简单了解一下结构化程序设计。
结构化程序设计方法主张按照功能来结构化分析方法对系统进行需求分析,然后使用结构化设计方法对系统进行设计。简单说把系统分成一块一块的,组成这些块的最小单位是函数,这些块之间通过函数之间的调用取得联系,从而组成一个整体。结构化设计需要采用自上向下的设计方式,在设计阶段就是需要考虑每个模块应该分解成哪些子模块,每个子模块又分解成哪些更小的模块。。。。以此类推,知道将模块细化成一个个函数。每个函数都是具有输入、输出的子系统,函数的输入数据包括函数形参、全局变量和常量等,函数的输出数据包括函数返回值以及穿出参数等。结构化程序设计方式有如下两个局限性。
a,设计不够直观,与人类习惯思维不一致。采用结构化程序分析、设计时,开发者需要将客观世界模型分解成一个个功能,每个功能用以完成一定的数据处理。
b,适应性差,可扩展性不强。由于结构化设计采用自顶向下的设计方式,所以当用户需求发生改变,或需要修改现有的实现方式时,都需要自顶向下地修改模块结构,这种方式的维护成本相当高。
面向对象程序设计简介。
面向对象主要特征封装、继承、和多态,三者缺少任何一个都不是面向对象。它从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以现实世界中的事物(即对象)为中心来思考,认识问题,并根据这些事物的本质特点,把他们抽象的表示为系统中的类,作为系统的基本构成单元,这使得软件系统的组件可以直接映像到客观世界,并保持客观世界中事物及其相互关系的本来面貌。
从面向对象的眼光来看,开发者希望从自然的认识、使用角度来定义和使用类。也就是说,开发者希望直接对客观世界进行模拟:定义一个类,对应客观世界的那种事物;业务需要关心这个事物的哪些状态,程序就为这些状态定义成员变量;业务需要关心这个事物的哪些行为,程序就为这些行为定义方法。举个例子简单说面向过程的程序和面向对象程序的区别,比如“猪八戒吃东西”;
在面向过程的程序世界里,一切以函数为中心,函数最大,因此这件事会这样表达: 吃(猪八戒,东西);
在面向对象的程序世界里,一切以对象为中心,对象最大,因此这件事会这样表达: 猪八戒.吃(东西);
两者比较不难发现,面向对象的语句更接近自然语法。
未完待续。。。。。。。。。。。。。。。