周立功:为什么要使用面向对象编程而不是面向过程编程?

 2024-03-05 01:08:36  阅读 0

面向对象编程的原则是什么_编程面向原则对象是什么意思_面向对象编程设计的基本原则

近日,周立功教授发布了他多年心血的著作《程序设计与数据结构》。 电子版已免费与电子工程师和大学团体共享下载。 据小编初步统计,下载量已超过1万次。 关注该公众号时,在对话框中回复关键字【编程】即可获取下载链接。

经周立功教授授权,本书内容连载。 第 1 章是编程基础知识:

很多初学者在学习编程时,常常会陷入这样的误区。 他们总是把阻碍个人成长的原因归咎于缺乏机会。 其实,问题的根源在于缺乏方法论。 很少有人把“知其然,知其所以然”作为自己的学习标准,也就谈不上精通多种编程风格。

事实上,编程中的数据结构和算法都是围绕着各种类型的数据和需求而展开的,而完成这些任务的载体就是各种变量。 因此,只要掌握了变量的三要素(即变量的类型、变量的值、变量的地址)并贯穿始终,一切问题都会迎刃而解。

编程面向原则对象是什么意思_面向对象编程设计的基本原则_面向对象编程的原则是什么

周立功

1.1 思想的力量

《思想者》是法国雕塑家罗丹创作的雕像。 他更强调其核心内涵——思想,人类的综合思想。 尤其是20世纪初,人们将其视为改造世界力量的象征。 可见,思想的力量是巨大的、无穷无尽的。 无论我们做大事还是小事,都与思想密切相关。

1.1.1 流程主题

1. 限制和抽象

结构化编程的“限制”和“抽象”是人类处理复杂软件的有效方法之一。 为了使程序简单易懂,提倡禁止使用goto,将程序控制流限制为“顺序、分支和“循环”三种组合。面向结构编程虽然实现了控制流的结构化面向过程编程虽然降低了程序复杂度,但随着数据类型越来越多,单独管理程序处理内容和处理数据对象所带来的程序复杂度也随之降低。增加。

当计算任务的一部分需要独立实现时,可以将其定义为函数,因为这样可以实现计算逻辑的分离,通过函数名使代码更加清晰,并且使用函数可以让相同的代码在程序中多次使用,减少调试程序的工作量。

由于实际应用中可能会用到数千个函数,为了得到正确的结果,必须保持处理和数据的一致性,于是人们想到了数据抽象技术。 数据抽象是数据和处理方法的结合。 数据的处理和操作必须通过预先定义的方法进行。 因此,面向过程编程引入了更为抽象的模块概念,因此可以说程序是由模块组成的,模块是由函数组成的。 一个模块就是一个进程。 由于不同结构的数据是通过函数或过程来管理的,因此在设计程序时可以对这些模块分别进行抽象、设计、编码和测试,最后将这些模块有机地组合起来形成一个完整的程序。

2. 功能分解法

通常解决复杂问题的方法是从分析问题开始,将一个大问题分解为多个小问题,再划分为多个子模块,解决每个小问题,实现每个子模块。 最后主函数按照一定的顺序调用这些子模块来组织业务逻辑流程,最终解决问题。 像这样从问题出发,以算法为基本构件,自上而下逐步细化,构建复杂系统的开发方法,称为结构化或面向过程的编程。

如何编写更容易应对不断变化的需求的代码? 与其写一个大函数,不如让它更加模块化,即用模块化来封装变化。 虽然模块化有助于提高代码的可理解性,使代码更易于维护,但模块化并不能解决所有问题,因为模块化有两个问题,即低内聚和高耦合。

假设您要向 main 中调用的每个子例程添加一个参数以传递一些附加信息。 同时,每个子流程必须将这些信息传递给自己的子流程。 这种现象就是我们所熟悉的系列变化。 级联变更是指流程中的变更会传递到其子流程,这些子流程会继续向下到所有分解级别。 显然,当涉及到软件维护,包括软件测试、调试和升级时,自上而下的设计方法存在致命缺陷。 因为面向过程编程强调从软件的功能特点出发思考问题,将系统划分为多个功能模块,同时尽量保证模块之间的耦合度最小。 事实上,这种方法并不能很好地模拟现实世界,其思维方式也存在先天的缺陷。

在采用面向过程的方式编程时,我们经常会遇到这样的问题。 一旦修正了一个错误,另一个地方就会出现另一个问题。 因此,很多bug都是源于修改代码。 事实上,很多时间都花在理清代码的运行原理、查找bug和防止不良副作用上,但纠正bug的时间却很短。 由不良副作用引起的错误是最难发现的。 如果让一个函数处理很多不同的数据,一旦需求发生变化,就会出现更多的问题。 需求的变化会对软件开发和维护工作产生很大的影响,因为只关注功能会导致一系列不可避免的变化。

由于用户的需求总是在变化,我们将无法阻止变化。 与其抱怨变化,不如改变开发流程,更有效地应对变化。 这就是面向对象编程作为对抗软件复杂性的一种手段的出现。

编者按:好消息是《程序设计与数据结构》纸质版正式发售,可在周立功官方淘宝店购买:

您也可以关注该公众号,并在对话框中回复关键字【编程】即可获取下载链接。

同时,编辑已获得周立功教授授权在本公众号连载。

同时也欢迎大家留言,谈谈你对软件工程的看法和精彩论点。 编辑付费,寄给你一本周立功教授的《程序设计与数据结构》纸质版。

关注电子工程师时间公众号,获取有用资讯

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码