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

时间:2013-08-03 16:02:33

标签: oop module

  

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

     

模块化编程(也称为“自上而下设计”和“逐步编程”   细化“)是一种强调分离的软件设计技术   程序的功能分为独立,可互换   模块,每个模块包含仅执行所需的所有内容   所需功能的一个方面。

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:16)

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

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

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

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

因此,两个方法可以一起使用,当你决定采用模块化时,面向对象的选择通常会强加给你们这些模块是通过类及其关系来定义的。 / p>