文档章节

过程性语言的问题

ChyiHuang
 ChyiHuang
发布于 2017/06/12 10:34
字数 772
阅读 14
收藏 0

面向对象编程语言的产生是由于发现过程性语言(诸如C、Pascal和早期版本的Basic)在处理大型的复杂问题时有些力不从心。为什么会这样呢?

    有两类问题:一是程序与现实世界缺乏对应关系,二是程序内部的结构出了问题。

    对现实世界建模的无能为力。

    使用过程性语言对现实世界问题进行抽象及概念化十分困难:方法执行任务,而数据存储信息,但是现实世界中的事务是对二者同时进行操作的,例如,炉子上的自动调温执行任务(炉子的开关) 但同时也存储信息(现在的温度和所希望的温度)。

    如果用过程性语言来写一个自动调温器控制程序,可能会以两个方法func_on() 和 func_off().即开和关。但是还会有两个全局变量currentTemp和    desiredTemp,即现在的温度(由调温器控制)和希望的温度(由用户设置),然而这些方法和变量并没有形成任何变成对象,在程序中不会出现任何可以称之为自动调温器的单元,这个单元的唯一概念只存在于程序员的脑海之中。

    对于大型的程序,有可能包括上百个类似调温器的实体,过程语言在面对这种情况会将程序员搞得极为混乱,错误频繁出现,有时还完全不可能实现,因此需要一种可以更美好地将程序中的事物与现实世界中的事物相匹配的语言。

    粗糙的组织结构:

    解决程序的内部组织结构是一个更微妙而且事关重大的事情。面向过程的程序被划分为一个一个的方法。这种基于方法组织形式的一个巨大问题时它仅仅考虑了方法,而没有重视数据。当不得不面对数据时,它没有更多的选择。简言而之,数据可以是一个特定的方法的局部变量,也可以是所有方法都可以存取的全局变量,就是无法规定一个变量只允许某些方法存取而不允许另一些方法存取。

    当几个方法都要存取同一个数据时,这种不灵活性会产生问题。如果一个变量要想被一个以上的方法存取到,这个变量必须是全局变量。但是全局变量会在不经意间被程序中的任何一个方法存取,这就导致了频繁的变成错误,因此需要一种可以精调数据的可访问性的方法,使数据对应该存取它的方法是可用的,而对其他方法是隐藏的。

 

 

 

 

© 著作权归作者所有

ChyiHuang
粉丝 3
博文 54
码字总数 51006
作品 0
朝阳
程序员
私信 提问
Delphi 面向对象编程 第一章

面向过程:程序和数据是分开的,即程序员所看到的就是过程或者函数的集合以及单独的一批数据。 面向对象:程序被看作是相互协作的对象的集合,每个对象都是类的实例,所有的类构成一个通过继...

CODER-SU
2011/12/19
143
0
什么是JAVA编程思想?

什么是JAVA编程思想?可能很会复杂,但也可以很简单。要了解JAVA编程思想,首先就要了解什么是编程思想,让我们来看看什么是编程思想,一句话来讲就是,用计算机来解决人们实际问题的思维方式...

5566sdfgh
2015/12/26
44
1
ORACLE PL/SQL编程详解

SQL语言只是访问、操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发。PL /SQL是一种高级数据库程序设计语言,该语言专门用于在各种环境下...

whshurk
2017/12/19
0
0
面向对象的特性

1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方...

科技小能手
2017/11/12
0
0
微软宣布重大里程碑:中英机器翻译可与人类媲美

  【环球网科技 记者 林迪】日前,环球网科技记者从微软亚洲研究院官网了解到,其研究团队对外宣布,最新研发的机器翻译系统在通用新闻报道测试集newstest2017的中-英测试集上,达到了可与...

深度学习
2018/05/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

使用TensorFlow的AI程序运行报错AttributeError: module 'tensorflow' has no attribute 'xxx'

使用TensorFlow的AI程序,在运行时报错AttributeError: module 'tensorflow' has no attribute 'xxx',首先检查是否是包路径不对,一般是版本变化所致。...

织梦之魂
58分钟前
3
0
提示浏览器版本低

本文转载于:专业的前端网站➭提示浏览器版本低 网站网页在遇到浏览器低版本(尤其是IE浏览器)时,提示浏览器版本低(如IE8以及以下),建议用户升级浏览器以获得最好体验。以下是代码: 1...

前端老手
今天
6
0
CentOS 7系统增加swap

转载请注明文章出处:CentOS 7系统增加swap swap是位于磁盘上的特殊文件(或分区),属于“虚拟内存”的一部分。通俗点就是内存的备胎,内存充足的情况下,基本上没swap什么事(和设置有关)...

tlanyan
今天
6
0
基于Prometheus和Grafana的监控平台 - 环境搭建

相关概念 微服务中的监控分根据作用领域分为三大类,Logging,Tracing,Metrics。 Logging - 用于记录离散的事件。例如,应用程序的调试信息或错误信息。它是我们诊断问题的依据。比如我们说...

JAVA日知录
今天
6
0
PHP运行时全局构造体

struct _php_core_globals { zend_bool magic_quotes_gpc; // 是否对输入的GET/POST/Cookie数据使用自动字符串转义。 zend_bool magic_quotes_runtime; //是否对运行时从外部资源产生的数据使...

冻结not
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部