可以使用和添加哪些类及其方法,以及哪些OOP概念适用于这些类[已关闭]

问题描述 投票:0回答:1

回想一下离散数学课程中的布尔表达式。如果存在某些命题变量:p、q、r、s、t、u,如果您需要更多变量,则可以使用 p1、p2、p3、……,并且存在三种基本操作:+、。 ,~,+用于OR运算,。是用于 AND 运算,第三个是用于求反运算。如果您有特定的布尔表达式,您可以根据变量的值给出该表达式的值。例如 p+qr 且 p 的值为 1,q 为 1,r 为 0,则表达式的值为 1。

使用java编程你需要做的是构建一个由两部分组成的系统:

第一部分:您有一个包含许多表达式的文本文件,每个表达式都在单行中。您需要读取每个表达式,系统将根据每个逻辑变量的输入值给出每个表达式的值。

我添加了以下类:OrGate、AndGate、NotGate,还为 Logicevaluate 做了一个抽象类并应用了继承的概念。还有其他类可以添加和使用吗?

java oop project
1个回答
0
投票

用 Java 构建一个系统来计算文本文件中的布尔表达式是理解和实现使用面向对象原理解析和计算表达式的概念的一个很好的练习。您使用 OrGate、AndGate、NotGate 和抽象类 LogicEvaluate 的方法是可靠的,并且遵循将问题分解为可管理、可重用组件的设计原则。

要扩展您的系统并使其更加健壮和灵活,请考虑添加以下类和功能:

  1. 变量类 此类表示具有名称和值的布尔变量。 它可用于将变量名称映射到其当前值,并根据需要轻松检索或更新它们。
  2. 表达类 表达式类可以充当更复杂表达式的基类。 除了简单的门之外,表达式还可以是门的组合。例如,表达式可能是 (p AND q) OR (r AND NOT s)。 这个类可以处理解析子表达式并使用适当的门类来评估它们。
  3. ExpressionParser 类 此类将负责解析文件中的原始字符串表达式,并将其转换为系统可以计算的结构化格式。 它可以使用基于堆栈的算法或递归下降解析来处理运算和括号的优先级。
  4. 评估者课程 虽然您的 LogicEvaluate 可能已经完成了这项工作的一部分,但 Evaluator 类可能是顶级类,它接受已解析的表达式并将其计算为布尔结果。 此类可以管理变量值的上下文并确保以正确的顺序计算子表达式。
  5. TruthTableGenerator 类 出于调试或教育目的,此类可以为给定表达式生成真值表,显示所有可能的输入组合的输出。
  6. 文件处理类 此类将处理文件的读取和写入。 它应该处理异常并确保资源在使用后正确关闭。
© www.soinside.com 2019 - 2024. All rights reserved.