首页 > 解决方案 > 面向对象编程理论

问题描述

这个问题涉及建立对象层次结构的通用方法。我将用一个例子来解释我的问题。

假设我正在构建一个数字电路模拟器,并且我们使用面向对象的类结构来做到这一点。基类是逻辑门,我们从中派生出二元门和一元门,然后从二元门派生出与、或、异或等类,从一元门派生出非门类。这是有道理的,因为在每一层您都变得更加指定,并且您分支到具有该派生类唯一的数据的子集。

但是假设我们想从派生的逻辑门类中构建一些东西,例如,一个 8 位加法器电路。在这种情况下,8 位加法器不是原始层次结构的一部分——它不是逻辑门,但尽管如此,它可以由逻辑门对象构建。此外,8 位加法器可分解为 8 个全加器,每个加法器可分解为 2 个半加器。但与原始逻辑门层次结构相反,这些对象中的每一个(8 位加法器、全加器和半加法器)都作为单独的组件运行,而真正用作逻辑门层次结构中组件的唯一类是最终的派生类,AND、OR、XOR、NOT。从这个意义上说,我不明白为加法器电路创建基于继承的类结构是否合适。

对我来说,似乎半加器、全加器和 8 位加法器都应该由单独的逻辑门对象组成,但这将是低效的,因为它需要大量重复代码,所以这就乞求了问题,安排这些类结构的最佳方法是什么,以便最复杂的 8 位加法器可以从全加器构建,全加器可以从半加器构建,半加器可以从单独的逻辑构建大门。

非常感谢所有这些答案。

标签: oopinheritancelogichierarchy

解决方案


推荐阅读