注:本人也是一位新手,刚踏入编程不久。想将一些自己的学习过程记录下来。
目前关于软件开发主要有两种比较主流的开发方法:结构化开发和面向对象开发。
结构化开发,也称为面向功能开发,主要是按照功能来分析一个系统的需求,开发的原则主要是:自上而下,模块化等。
这种设计的最小的程序单元是函数,每个函数都负责完成一个功能,用以接受一些输入数据,函数对这些输入数据进行处理,处理结束后输出一些数据。整个软件系统由一个个函数组成,其中程序的入口的函数称为主函数,也就是我们常说的main()函数,主函数依次调用其他普通函数,普通函数之间依次调用,从而完成整个软件系统的功能。由此可见,在设计阶段就需要考虑每个模块应该分解成哪些子模块,每个子模块有分解成哪些更小的模块。。。以此类推,直到将模块细化为一个一个函数为止。很显然,通过上述描述,可以想到该设计方法的局限性:1,设计不够直观,与我们的习惯思维很不一样,在设计阶段就要将客观模型分解成一个个功能,每个功能用以完成一定的数据处理。2,适应性差,扩展性也很差,如果需要修改现有的实现方式,就需要从上到下的修改整个模块结构,也就意味着整个软件系统都需要修改。。。
面向对象开发就方便多了。面向对象程序设计是从现实世界中客观存在的食物出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以现实世界中的事物为中心来考虑,并根据这些事物的本质特点,把他们抽象地表示为系统中的类,作为系统的基本构成单元。
这种设计的最小程序单元是类,这些类可以生成系统中的多个对象,而这些对象则直接映像成客观世界的各种事物。类代表了客观世界中具有某种特征的一类事物,这类事物往往有一些内部的状态数据,但有没有必要记录所有的状态数据,只需要记录跟业务相关的状态数据即可。类的定义:成员变量(状态数据)+方法(该类所具有的行为)。
我们可以来模拟一下:
定义一个类,对应客观世界的某个事物;业务需要关心这个事物的哪些状态,这个类就定义哪些成员变量;业务关心这个事物的哪些行为,这个类就定义哪些方法。
例如:一只狗,公的,高1米,毛是金色的;可以啃骨头,可以叫;
定义一个类,类名叫狗;业务关心狗的性别,高度,毛发的颜色,则定义这个类中的成员变量为,性别,高度,毛发颜色;业务关心狗的行为有啃骨头和叫,则定义啃骨头和叫两个方法。
通过上面的模拟,可以发现,面向对象更接近于人的思维方法,对开发也降低了难度,可读性也提高了。
面向对象有三大基本特征,也是最重要的三个特征:封装、继承、多态。封装其实就是将对象的实现细节隐藏起来,然后通过一些公用的方法来暴露该对象的功能;继承是为了实现代码的复用,一个子类继承父类后,子类可以直接获取父类的成员变量和方法;多态是指子类对象(子类实例对象)可以直接赋值给父类变量,在使用中依然表现出子类的特征,也就是说,同一个类型的对象在执行同一个方法的时候,可以表现出多种行为特征。
或许很多人在刚接触的时候,会对“基于对象”和“面向对象”这两个概念混淆。“基于对象”也使用对象,但无法利用现有的对象模板去产生新的对象类型,从而产生新的对象,也就是说不存在继承这个特点,那么多态就无从谈起了。例如,就像JavaScript就是基于对象的,你只能使用一些现有的封装好的对象,调用对象的方法,设置对象的属性,但无法派生新的类。面向对象方法的三大基本特征缺一不可,判断一门语言是否是面向对象,可以通过继承和多态来判断。
目前关于软件开发主要有两种比较主流的开发方法:结构化开发和面向对象开发。
结构化开发,也称为面向功能开发,主要是按照功能来分析一个系统的需求,开发的原则主要是:自上而下,模块化等。
这种设计的最小的程序单元是函数,每个函数都负责完成一个功能,用以接受一些输入数据,函数对这些输入数据进行处理,处理结束后输出一些数据。整个软件系统由一个个函数组成,其中程序的入口的函数称为主函数,也就是我们常说的main()函数,主函数依次调用其他普通函数,普通函数之间依次调用,从而完成整个软件系统的功能。由此可见,在设计阶段就需要考虑每个模块应该分解成哪些子模块,每个子模块有分解成哪些更小的模块。。。以此类推,直到将模块细化为一个一个函数为止。很显然,通过上述描述,可以想到该设计方法的局限性:1,设计不够直观,与我们的习惯思维很不一样,在设计阶段就要将客观模型分解成一个个功能,每个功能用以完成一定的数据处理。2,适应性差,扩展性也很差,如果需要修改现有的实现方式,就需要从上到下的修改整个模块结构,也就意味着整个软件系统都需要修改。。。
面向对象开发就方便多了。面向对象程序设计是从现实世界中客观存在的食物出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以现实世界中的事物为中心来考虑,并根据这些事物的本质特点,把他们抽象地表示为系统中的类,作为系统的基本构成单元。
这种设计的最小程序单元是类,这些类可以生成系统中的多个对象,而这些对象则直接映像成客观世界的各种事物。类代表了客观世界中具有某种特征的一类事物,这类事物往往有一些内部的状态数据,但有没有必要记录所有的状态数据,只需要记录跟业务相关的状态数据即可。类的定义:成员变量(状态数据)+方法(该类所具有的行为)。
我们可以来模拟一下:
定义一个类,对应客观世界的某个事物;业务需要关心这个事物的哪些状态,这个类就定义哪些成员变量;业务关心这个事物的哪些行为,这个类就定义哪些方法。
例如:一只狗,公的,高1米,毛是金色的;可以啃骨头,可以叫;
定义一个类,类名叫狗;业务关心狗的性别,高度,毛发的颜色,则定义这个类中的成员变量为,性别,高度,毛发颜色;业务关心狗的行为有啃骨头和叫,则定义啃骨头和叫两个方法。
通过上面的模拟,可以发现,面向对象更接近于人的思维方法,对开发也降低了难度,可读性也提高了。
面向对象有三大基本特征,也是最重要的三个特征:封装、继承、多态。封装其实就是将对象的实现细节隐藏起来,然后通过一些公用的方法来暴露该对象的功能;继承是为了实现代码的复用,一个子类继承父类后,子类可以直接获取父类的成员变量和方法;多态是指子类对象(子类实例对象)可以直接赋值给父类变量,在使用中依然表现出子类的特征,也就是说,同一个类型的对象在执行同一个方法的时候,可以表现出多种行为特征。
或许很多人在刚接触的时候,会对“基于对象”和“面向对象”这两个概念混淆。“基于对象”也使用对象,但无法利用现有的对象模板去产生新的对象类型,从而产生新的对象,也就是说不存在继承这个特点,那么多态就无从谈起了。例如,就像JavaScript就是基于对象的,你只能使用一些现有的封装好的对象,调用对象的方法,设置对象的属性,但无法派生新的类。面向对象方法的三大基本特征缺一不可,判断一门语言是否是面向对象,可以通过继承和多态来判断。