自顶向下和自下而上编程 为什么我们说C语言是自顶向下的,而像java或C++这样的面向对象语言是自下而上的呢?这种分类在软件开发中有什么重要性吗?

自顶向下和自下而上编程 为什么我们说C语言是自顶向下的,而像java或C++这样的面向对象语言是自下而上的呢?这种分类在软件开发中有什么重要性吗?,java,c++,c,Java,C++,C,C是结构化语言,程序的顺序是从上到下的。从主要方法开始 而OOP依赖于类和对象的数量。在OOP中,程序流不是自上而下的方法。这个维基百科页面很好地解释了这一点。在自上而下的开发中,你从你的主要功能开始,然后考虑你需要采取的主要步骤,然后你将这些步骤分解成子部分,依此类推 在自下而上的编程中,您需要考虑基本功能和需要的部件,并构建它们。你开发演员和他们的方法,然后把他们联系在一起,形成一个连贯的整体 当您开发对象时,OOP自然倾向于自下而上,而当您从一个函数开始并慢慢添加到它时,过程编程则倾向于自

C是结构化语言,程序的顺序是从上到下的。从主要方法开始


而OOP依赖于类和对象的数量。在OOP中,程序流不是自上而下的方法。这个维基百科页面很好地解释了这一点。在自上而下的开发中,你从你的主要功能开始,然后考虑你需要采取的主要步骤,然后你将这些步骤分解成子部分,依此类推

在自下而上的编程中,您需要考虑基本功能和需要的部件,并构建它们。你开发演员和他们的方法,然后把他们联系在一起,形成一个连贯的整体

当您开发对象时,OOP自然倾向于自下而上,而当您从一个函数开始并慢慢添加到它时,过程编程则倾向于自上而下。

自上而下的方法对问题进行高层次的定义,并将其细分为子问题,然后递归地执行这些操作,直到分解成明显且易于编码的片段。这通常与编程的“功能分解”风格有关,但不必如此

在“自底向上”编程中,您可以识别可以组合成更大程序的低级工具


实际上,几乎所有的编程都是通过多种方法组合完成的。在面向对象编程中,您通常通过识别域对象(这是一个自上而下的步骤)来细分问题,并细化这些对象,然后将它们重新组合到最终的程序中,这是一个自下而上的步骤。

我从未听说过将分类应用于特定语言,相反,这是一种编程范例——您是先填写细节(即构建完整的实现方法),然后将它们组合在一起(例如,从main()方法调用它们),还是从逻辑流开始,然后充实实现


你真的可以用这两种类型的lanugages。。。但我想说的是,这通常是相反的,在当前的OOP语言中,首先定义接口,形成逻辑结构,然后才考虑实现,而像C这样的纯过程语言,在调用它们之前需要实际实现一些方法。

我从来没有听说过“自顶向下”和“自下而上”就是这样使用的

这些术语通常用于描述如何设计和实现软件系统,从而适用于任何语言或编程范式

在“关于LISP”中,Paul Graham使用“自下而上”一词的意思稍有不同,意思是不断地将公共功能提取到共享功能中,从而最终创建一种新的、更高级的LISP方言,让您可以根据应用程序域进行编程。这不是该术语的常用用法。现在我们称之为“自下而上”“重构”和“特定领域的嵌入式语言”(旧的LISP程序员会嘲笑LISP自20世纪50年代以来就能够做到这一点)。

与其说是语法,不如说是范式(面向对象、命令式、函数式等)

自下而上的编程与自上而下的编程相反 指构建应用程序的编程风格 从编程语言的现有原语开始,以及 逐渐构建越来越复杂的特征,直到 所有的应用程序都已经编写好了

在同一篇文章的后面:

在C或Java等语言中,自底向上编程采用以下形式 从语言或语言的原语构造抽象数据类型 从现有的抽象数据类型


在自上而下的方法中,首先制定系统,在开始时指定但不详细说明任何子系统,然后详细定义每个系统及其子系统,直到将其指定给基础

e、 g.-在C程序中,需要在程序顶部声明函数,然后通过主条目详细定义每个子系统/子例程

在自底向上的方法中,首先进行设计,从基础层到抽象层


e、 g.-在c++/java中,从编程特性的基本级别开始从类设计,然后进入程序的主要部分。

我相信自上而下的编程方法和自下而上的编程方法之间的区别在于,自上而下的编程方法解决问题,并将其分解为可管理的步骤和自下而上的应用程序RoCH实际上是在详细描述这些步骤。

< P>大多数程序或低级语言都遵循C语言的自顶向下方法。类似的高级语言如java、C++等遵循自下而上的方法。

在自顶向下的方法中,所有的系统或大功能被分解成小的子系统,而在自下而上的方法中,小的子系统被组合在一起,形成一个大的最终系统


e、 g.递归是自上而下的方法,而迭代是自下而上的方法。

C没有方法。在OOP中,流是向下的。自上而下指的是设计,而不是程序流。简言之,没有。好的。所以现在我明白这些方法基本上更多地与“思维方式”(范例)有关谢谢大家的回答。你完全正确。这个问题有一个错误的说法。它们只是可以独立于使用的编程语言而得到尊重和实现的方法。随着现代软件的复杂性,这两种方法是混合的,许多开发人员都使用它们,而不使用e你的答案必须是公认的,因为它简单明了,对初学者来说不容易混淆。难怪我讨厌OO。实践中自上而下的设计会导致