面向过程与面向对象
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2015-5-14
1
疑惑之源
面向过程与面向对象有何异同 面向对象程序设计方法是否将取代面向过程
寻根究底
从概念上诠释 从实际问题中剖析
茅塞顿开
两者之间相辅相成
2015-5-14
2
面向过程与面向对象有何异同
你是否曾一直在苦苦纠结面向对象(objectoriented)与面向过程(procedure-oriented)的根本 区别是什么?的确,在以前的学习过程中,我们首先 接触到的是面向过程的编程语言,例如:C语言, 之后我们相继开始了解面向对象的编程语言,例如: C++、JAVA。但是,我们时常会在学习了面向对象的 编程语言后,而设计出面向过程的软件的局面,致使 我们陷入迷茫。
2015-5-14 12
Retangle(double x, double y); double Perimeter(); double Area(); }; #include<iostream> using namespace std; int main() { Rectangle obj(1.0,2.0); cout<<obj.Perimeter()<<endl; cout<<obj.Area()<<endl; return 0; }
成员函数 的具体实 现
2015-5-14
14
两者之间相辅相成
面向对象的技术是在面向过程的自顶向下 逐步求精最终将软件分解成为具有三种控制结 构的若干方法过程或函数基础之上,又提供了 抽象、封装、继承、多态技术手段。
面向对象的设计包含了面向过程,面向对象比面向 过程站到了一个更高的层次上,主要进行总体结构模 型设计(构建类),对数据和方法进行封装,面 向过程主要是写函数或过程也就是确定类中的方法的 实现。就像我们建一个居民小区,先把围墙建好,决 定好里面要做什么,然后还是要在里面进行盖房子的过 程一样。所以说用面向对象的设计技术软件时包含了面 向过程。
例
面向过程的程序设计方式思考: 1、确定长方形的周长和面积的算法; 2、编写两个方法(函数)分别计算长方形的周长和面积; 3、求周长的方法(函数)和求面积的方法(函数)需要 两个参数,分别是长方形的长和宽。 C语言中源代码示例如下:
2015-5-14 9
#include<iostream.h> int main() { void Perimeter(double x, double y); void Area(double x, double y); double a,b,p,s; cin>>a; 参数 cin>>b; p=Perimeter(a,b); s=Area(a,b); cout<<“长方形的周长是:”<<p<<endl; cout<<“长方形的面积是:”<<s<<endl; return 0; }
2015-5-14
7
型可以覆盖(或重载)原有的操作。所有这些,是为了 达到更好的内聚性,即一种对象做好一件事情,对象 内部的细节外面世界不关心也看不到;同时不同种类的 对象之间的依赖性降低,这将降低耦合性,而所有这 些都有助于达成一个崇高的目标,就是可重用性。
2015-5-14
8
面向过程编程的程序员,习惯于建立数据结 构存放数据并定义方法(函数)来操作数据;而面向 对象编程的程序员则构造一个对象模型,将数据 与方法组织在一起。以计算长方形的周长和面积为
面向对象程序设计方法是否将取代面向过程
2015-5-14
3
20世纪80年代提出面向对象的程序设计方法之后, 对于程序设计的面向对象和面向过程两种方法,大部分教 材偏重于讨论他们的区别,产生两种方法是对立
的,互无关联的的想法大有人在,似乎有了面向 对象技术,就可以不用面向过程。 实际上,面向对象的技术是在面向过程的基 础上,为程序设计提供了更多的手段和方法,两 种技术不是非彼即此的对立关系,不能说面向对 象的技术取代了面向过程,如果用面向对象的技术就 要把一个软件任务划分成两个层次,那么面向对象技术 是解决第一个层次的问题,面向过程是解决第二 个层次的问题,只有在两个层次上的任务都完成之后,
才能说完成了整个程序设计任务。
2015-5-14 4
从概念上诠释
何谓面向过程的程序 设计? 面向过程就是分析出解 决问题所需要的步骤, 然后用函数逐步调用
就可以一步一步实现, 即面向过程化程序设计 是先确定算法,再确 定数据结构。如图1所 示
图1 结构化程序
2015-5-14
5
何谓面向对象的程序 设计
2015-5-14
调用函数
10
int Perimeter(int x, int y) { return 2*(x+y); } int Area(int x, inwk.baidu.com y) { return x*y; }
被调函数的实现
2015-5-14
11
面向对象的程序设计方式思考: 1、一个长方形可以看成一个长方形对象(类); 2、一个长方形对象有两个属性(长和宽)和两个行为( 求周长和求面积); 3、将所有长方形的共性抽取出来,设计一个长方形的类; 4、通过长方形对象的行为,就可以求出某个具体的长方 形对象的周长和面积。 C++中源代码示例如下: class Retangle { private: double a,b; //数据成员,即对象的属性 public:
成员函数,即对 对象的操作
2015-5-14
13
Retangle::Retangle(double x, double y) { a=x; b=y; } double Perimeter::Retangle() { return 2*(a+b); } double Area::Retangle() { return a*b; }
相比较,面向过程的程序上一步和下一步环环相 扣,设计人员只考虑实现客户的需求不考虑以后 扩展,一旦客户的需求有变化,那代码量要改变非常大, 耗费的时间也相当多。从本质上说,面向过程基本上是 一种状态机,不利于修改,当新状态出现的时候,甚 至可能需要重设每一个状态解决实现。所以说面向过程 是一种直接的编程方法,它是按照编程语言的思路考虑 问题。以C语言为例,它就是通过顺序执行一组语句来 实现一个功能,这些语句的执行过程就是整个程序。 而面向对象的程序设计许多东西都是独立的,每 个对象都可以重复使用。面向对象程序设计强调“封 装”,“继承”和“多态”。数据和数据相关的 操作被包装成对象(严格地说是“类”),每个对象是 完全完整和独立的。对象可以有派生的类型,派生的类
2015-5-14 15
2015-5-14
16
面向对象程序设计是面 向问题中的各种独立 个体,程序的分析设计 过程就是将程序分解成 不同对象之间的交互的 过程。将数据(成员数
据)及处理这些数据 的相应函数(成员函 数)封装到一个类 (Class)中,而使用类的
数据变量则称为对象 (Object) , 如图2所示
图2 类与对象
2015-5-14
6
1
疑惑之源
面向过程与面向对象有何异同 面向对象程序设计方法是否将取代面向过程
寻根究底
从概念上诠释 从实际问题中剖析
茅塞顿开
两者之间相辅相成
2015-5-14
2
面向过程与面向对象有何异同
你是否曾一直在苦苦纠结面向对象(objectoriented)与面向过程(procedure-oriented)的根本 区别是什么?的确,在以前的学习过程中,我们首先 接触到的是面向过程的编程语言,例如:C语言, 之后我们相继开始了解面向对象的编程语言,例如: C++、JAVA。但是,我们时常会在学习了面向对象的 编程语言后,而设计出面向过程的软件的局面,致使 我们陷入迷茫。
2015-5-14 12
Retangle(double x, double y); double Perimeter(); double Area(); }; #include<iostream> using namespace std; int main() { Rectangle obj(1.0,2.0); cout<<obj.Perimeter()<<endl; cout<<obj.Area()<<endl; return 0; }
成员函数 的具体实 现
2015-5-14
14
两者之间相辅相成
面向对象的技术是在面向过程的自顶向下 逐步求精最终将软件分解成为具有三种控制结 构的若干方法过程或函数基础之上,又提供了 抽象、封装、继承、多态技术手段。
面向对象的设计包含了面向过程,面向对象比面向 过程站到了一个更高的层次上,主要进行总体结构模 型设计(构建类),对数据和方法进行封装,面 向过程主要是写函数或过程也就是确定类中的方法的 实现。就像我们建一个居民小区,先把围墙建好,决 定好里面要做什么,然后还是要在里面进行盖房子的过 程一样。所以说用面向对象的设计技术软件时包含了面 向过程。
例
面向过程的程序设计方式思考: 1、确定长方形的周长和面积的算法; 2、编写两个方法(函数)分别计算长方形的周长和面积; 3、求周长的方法(函数)和求面积的方法(函数)需要 两个参数,分别是长方形的长和宽。 C语言中源代码示例如下:
2015-5-14 9
#include<iostream.h> int main() { void Perimeter(double x, double y); void Area(double x, double y); double a,b,p,s; cin>>a; 参数 cin>>b; p=Perimeter(a,b); s=Area(a,b); cout<<“长方形的周长是:”<<p<<endl; cout<<“长方形的面积是:”<<s<<endl; return 0; }
2015-5-14
7
型可以覆盖(或重载)原有的操作。所有这些,是为了 达到更好的内聚性,即一种对象做好一件事情,对象 内部的细节外面世界不关心也看不到;同时不同种类的 对象之间的依赖性降低,这将降低耦合性,而所有这 些都有助于达成一个崇高的目标,就是可重用性。
2015-5-14
8
面向过程编程的程序员,习惯于建立数据结 构存放数据并定义方法(函数)来操作数据;而面向 对象编程的程序员则构造一个对象模型,将数据 与方法组织在一起。以计算长方形的周长和面积为
面向对象程序设计方法是否将取代面向过程
2015-5-14
3
20世纪80年代提出面向对象的程序设计方法之后, 对于程序设计的面向对象和面向过程两种方法,大部分教 材偏重于讨论他们的区别,产生两种方法是对立
的,互无关联的的想法大有人在,似乎有了面向 对象技术,就可以不用面向过程。 实际上,面向对象的技术是在面向过程的基 础上,为程序设计提供了更多的手段和方法,两 种技术不是非彼即此的对立关系,不能说面向对 象的技术取代了面向过程,如果用面向对象的技术就 要把一个软件任务划分成两个层次,那么面向对象技术 是解决第一个层次的问题,面向过程是解决第二 个层次的问题,只有在两个层次上的任务都完成之后,
才能说完成了整个程序设计任务。
2015-5-14 4
从概念上诠释
何谓面向过程的程序 设计? 面向过程就是分析出解 决问题所需要的步骤, 然后用函数逐步调用
就可以一步一步实现, 即面向过程化程序设计 是先确定算法,再确 定数据结构。如图1所 示
图1 结构化程序
2015-5-14
5
何谓面向对象的程序 设计
2015-5-14
调用函数
10
int Perimeter(int x, int y) { return 2*(x+y); } int Area(int x, inwk.baidu.com y) { return x*y; }
被调函数的实现
2015-5-14
11
面向对象的程序设计方式思考: 1、一个长方形可以看成一个长方形对象(类); 2、一个长方形对象有两个属性(长和宽)和两个行为( 求周长和求面积); 3、将所有长方形的共性抽取出来,设计一个长方形的类; 4、通过长方形对象的行为,就可以求出某个具体的长方 形对象的周长和面积。 C++中源代码示例如下: class Retangle { private: double a,b; //数据成员,即对象的属性 public:
成员函数,即对 对象的操作
2015-5-14
13
Retangle::Retangle(double x, double y) { a=x; b=y; } double Perimeter::Retangle() { return 2*(a+b); } double Area::Retangle() { return a*b; }
相比较,面向过程的程序上一步和下一步环环相 扣,设计人员只考虑实现客户的需求不考虑以后 扩展,一旦客户的需求有变化,那代码量要改变非常大, 耗费的时间也相当多。从本质上说,面向过程基本上是 一种状态机,不利于修改,当新状态出现的时候,甚 至可能需要重设每一个状态解决实现。所以说面向过程 是一种直接的编程方法,它是按照编程语言的思路考虑 问题。以C语言为例,它就是通过顺序执行一组语句来 实现一个功能,这些语句的执行过程就是整个程序。 而面向对象的程序设计许多东西都是独立的,每 个对象都可以重复使用。面向对象程序设计强调“封 装”,“继承”和“多态”。数据和数据相关的 操作被包装成对象(严格地说是“类”),每个对象是 完全完整和独立的。对象可以有派生的类型,派生的类
2015-5-14 15
2015-5-14
16
面向对象程序设计是面 向问题中的各种独立 个体,程序的分析设计 过程就是将程序分解成 不同对象之间的交互的 过程。将数据(成员数
据)及处理这些数据 的相应函数(成员函 数)封装到一个类 (Class)中,而使用类的
数据变量则称为对象 (Object) , 如图2所示
图2 类与对象
2015-5-14
6