面向过程的程序设计以及面向对象的程序设计

1.面向过程的程序设计

      结构化程序设计语言是一种面向过程的程序设计语言,它提供了顺序、分支和循环三大控制结构的语句,支持数据抽象,过程抽象等概念,使程序设计更接近于客观事物的结构和逻辑含义,程序语言更接近于人类的自然语言。支持面向过程的程序设计方法,采用“自顶向下,逐步分解,模块化”的方法进行程序设计。其优点是采用模块分解、功能抽象、自顶向下、分而治之的方法,将一个复杂,庞大 的软件系统分解为许多易于控制、处理、可独立编程的子任务、子模块。各模块由顺序、分支和循环三种基本结构组成,每个模块则由结构化程序设计语言的子程序(函数)实现。结构化程序设计语言有以下特点:
     (1)按层次组织模块。
     (2)每一个模块只有一个入口、一个出口
     (3)代码和数据分离,即程序=数据结构+算法
   在程序设计时,首先将要解决的问题分解成若干个功能模块,然后再根据模块功能设计一系列用于存储数据的数据结构,并编写一些函数(或过程)对这些数据进行操作,最终程序由许多函数(或过程)组成。

2.面向对象的程序设计

     面向对象的程序设计观点认为,计算机求解的都是现实世界中的问题,它们由一些相互联系,并且处于不断运动变化的对象(即客观事物)组成。每个对象都可以通过两个方面来刻画:描述对象特征的数据和描述对象行为的操作,应该把它们结合成一个整体,代表一个客观事物。在对象中,描述其行为的操作被抽象成了函数。
     将客观事物的特征和行为抽象成数据和对数据进行操作的函数,并且把它们组合成一个不可分割的整体(对象)的方法能够实现对客观事物的真实模拟,反映出客观世界本来的面目。面向对象的程序设计方法就是从客观世界中抽象出一个个对象,对象之间通过消息(一个对象那个想其他对象发出的服务请求消息)传递进行交流,并通过特定的函数进行数据访问,进制以任何未经允许的方法修改对象的数据,这就是面向对象程序设计的基本特征。
     面向过程程序设计创建的程序单元不能方便、有效地对应于客观实体、难以重用。程序员经常会为不同的项目编写或修改类似的软件,进行重复性的软件设计工作。面向对象设计方法克服了面向过程设计方法的缺点,它将数据和操作数据的过程(函数)绑在一起,形成一个相互依存、不可分割的整体(即类)。对象技术提高了软件的可维护性,因为一个类的数据只能由它自己的操作函数修改,类内部数据的修改只会引起该类自身操作代码的改变,而与类外的代码无关,这就把程序代码的修改维护局限在了一个很小的范围内。

3.抽象

     抽象是指有意忽略问题中的某些细节和与当前目标无关的方法,把事物的主要特征抽取出来,以便把问题的本质表达更加清楚,使人们把 注意力集中在本质特征上面。

4.封装

封装:就是隐藏对象的属性和实现细节,仅对外提供公共访问方式。
     封装的好处:隐藏类的实现细节;让使用者只能通过程序员规定的方法来访问数据;可以方便的加入存取控制语句,限制不合理操作.
     数据的抽象和封装是面向对象程序设计中的重要概念,通过抽象得到了对象的主要特征,再用封装将数据抽象的结果包装起来,将不允许用户操作的数据和函数实现细节隐藏在封装体的内部,只把允许用户使用的数据和函数(事实只上显露函数原型,即函数头,函数的实现代码则被隐藏)显露在封装体外供用户操作。在面向对象程序设计语言中,将通过封装之后显露在外允许用户使用的部分称为接口,将隐藏在封装体内部完成接口功能的程序代码称为实现。
     数据抽象与封装的任务是设计出清晰而足够的接口,接口必须满足用户的基本需求,且允许用户通过它访问其内部实现。抽象和封装的结构导致了接口与实现的风力,即将数据抽象的外部接口与内部实现细节分离开来,将接口显示给用户并允许其访问,将接口的实现细节印象那个起来,不让用户知道,也不允许用户访问。(比如通过set get方法设置每个属性对外访问接口,外部需要改变类的属性,需要通过这些公共的public的方法)

5.继承

     继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。[1]Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。JAVA不支持多继承,单继承使JAVA的继承关系很简单,一个类只能有一个父类,易于管理程序,同时一个类可以实现多个接口,从而克服单继承的缺点。

6.多态性

     多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。
     多态性意思是“一个接口,多种形态”。就是说,不同对象针对同一种操作会表现出不同的行为。多态与继承密切相关,通过继承产生的不同类的对象可以对同一函数调用作出不同的响应,执行不同的操作,实现不同的功能,这就是多态。

     java的多态和c++一样,是通过动态绑定或者说运行时绑定来实现的。当调用某一个对象引用的方法时,因为编译器并不知道这个引用到底指向的是变量声明时说明的类型对象,还是该类型子类的对象。因此编译器无法为这次调用绑定到具体的某个方法。只有通过java中运行时类型识别(RTT)在运行时绑定到具体的方法

方法的重写overriding和方法的重载overloading是java多态的不同表现。重写overriding是父类和子类之间多态性的一种表现,重载overloading是一个类中多态性的表现。
多态的要点:

1.多态是方法的多态,不是属性的多态(多态与属性无关)

2.多态存在要有3个必要条件:继承、方法重写、父类引用指向子类对象。

3.父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了。

©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页