模块化和面向对象编程之间的最大区别是什么?

Sta*_*ovv 14 oop module

面向对象的程序通常包含不同类型的对象,每个对象对应于要管理的特定种类的复杂数据,或者可能对应于诸如银行账户,曲棍球运动员或推土机的现实世界对象或概念.

模块化编程(也称为"自上而下设计"和"逐步细化")是一种软件设计技术,强调将程序的功能分离为独立的可互换模块,这样每个模块都包含只执行所需的一个方面所需的一切功能.

我能想到的差异是,你可以在一个类上拥有多个对象,而在模块化编程中你应该只有一个模块(1个对象)用于一个特定的东西.

这是一个例子(我理解它的方式)

考虑一下你有一个程序.一些输入字段和一个按钮.然后进行一些计算,程序输出一些东西.

该程序可以有2个模块:输入/输出一个和计算一个.

但是我不明白为什么程序不能有一个布局(一个包含将在屏幕上显示的所有对象的类)和一个逻辑部分(可以是一个类或一个函数,取决于计算的深度) ).

这个例子在模块化和对象编程方面是"正确的"吗?模块化和oop可以一起使用吗?这两种范式/编程风格之间的最大区别是什么?

geo*_*ter 17

您的模块可以实现为类,这确实是正确的.但是,模块意味着在逻辑上是独立的程序部分,因此将它们作为类没有意义,因为您可以拥有许多不同的类对象.如果我要编写一个模块化系统并使用类模块,我会把它们都变成单例.

在您的示例中,面向对象编程您将拥有定义输入字段和按钮的类,或者可能是用作计算器的类.您甚至可以更深入地定义一个可以实现为SumCalculator,ProductCalculator等的Calculator接口,甚至可以投入一些工厂,以便用户可以在程序执行的不同计算之间进行选择.是的,您可以使用单一类,例如LayoutModule(可以跟踪InputField和Button类型的对象)和LogicModule(可以跟踪Calculator实现).

模块化编程只意味着您拥有这两个(或更多)模块,但没有说明它们如何实现它们所实现的目标.模块可以使用面向对象的方法或根本不使用,并使用过程C风格的编程.您通过类​​描述模块化编程的方式只是分离模块的一种方式.例如,您可以将它们分隔为类,或者可以将它们作为多个编译单元的函数分开.这是你的选择.

面向对象编程意味着您的程序很好地面向对象.它没有说明应用程序中的模块,但要求在应用程序中表示某些想法的逻辑部分通过类和对象建模.

因此,这两种方法可以一起使用,当您决定采用模块化时,面向对象的选择通常会强加给您,这些模块是通过类及其关系定义的.