Java 我应该在一个类中实现所有接口还是为每个接口创建一个类?
我的任务是建立一个自我评估测试评分器。老师给了我们测试界面: 和问题接口: 要实现,我不知道是否应该在一个类中实现它们,如下所示:Java 我应该在一个类中实现所有接口还是为每个接口创建一个类?,java,interface,Java,Interface,我的任务是建立一个自我评估测试评分器。老师给了我们测试界面: 和问题接口: 要实现,我不知道是否应该在一个类中实现它们,如下所示: public class CQuestion implements IQuestion, IQuestionMultipleChoice, IQuestionNumeric, IQuestionYesNo,IQuestionMetadata {} public class CTest implements ITest,ITestStatisti
public class CQuestion implements IQuestion, IQuestionMultipleChoice,
IQuestionNumeric, IQuestionYesNo,IQuestionMetadata {}
public class CTest implements ITest,ITestStatistics {}
或者我是否应该为每个问题类型上一节课
我尝试了第一种方法,但由于存在同名的方法,所以出现了错误
我想试试第二种方法,但我不知道怎么做。我知道我必须在测试类中创建一个问题对象,但我不知道是否必须为每个问题类型创建一个对象。对于测试接口,我不明白为什么不能(乍一看),我认为您应该实现这两个接口 在问题接口的情况下,正如您所发现的,方法签名中存在不兼容。由于
IQuestionMultipleChoice
、IQuestionNumeric
和IQuestionYesNo
都扩展了IQuestion
,因此您只需要实现前三个选项中的一个。正如@john bollinger在评论中指出的,如果您实现三个dub接口中的一个,那么就没有必要实现IQuestion
我认为您还应该实现IQuestionMetaData
,类似这样的东西
public class CQuestionYesNo implements IQuestionYesNo, IQuestionMetaData {
... // your code here
}
我不知道我是否应该在一个类中实现它们[…],或者我是否应该为每个问题类型执行一个类
我尝试了第一种方法,但由于存在同名的方法,所以出现了错误
。。。和参数,但返回类型不同。那么,让我们在这里应用一些简单的逻辑:如果两个接口有冲突的需求,那么它们不能都由同一个类实现。因此,似乎必须有单独的具体类来实现IQuestionMultipleChoice
、IQuestionNumeric
和iquestioniesno
。由于所有这些接口都扩展了IQuestion
,因此这些实现中的每一个都必须实现IQuestion
,因此似乎不需要单独实现它。然而,对于直接实现IQuestion
的其他类来说,拥有一个基类是相当自然的
由于IQuestion
具有获取和设置元数据的方法,因此上述任何类实现IQuestionMetaData
似乎都没有用处。当然,应该有一个单独的类
类似地,ITest
具有添加和删除IQuestion
以及提供ITestStatistics
的方法,因此前者的典型实现似乎不会同时实现后者。因此,似乎还应该有ITest
和ITestStatistics
的单独实现
我想试试第二种方法,但我不知道怎么做。我知道
我必须在测试类中创建一个问题对象,但我没有
知道是否必须为每个问题类型创建一个对象
为什么ITest
实现需要创建问题对象?它有一些方法,单独的对象可以使用这些方法添加和删除问题。我看不出有任何理由认为测试应该能够创造出自己的问题
重要提示:
您说过您的工作是实施分级器,但是以上所有内容似乎都不是分级器实施的一部分。相反,这些界面似乎描述了评分器将操作的主题。这并不一定意味着您不需要实现这些接口,但您应该在投入工作之前确保这一点。从我的角度来看,完全可能期望您在分级器实现中依赖接口,但不提供自己的接口实现。用例描述很重要。上面说什么?它如何规定应该这样做?一般来说,这个程序的目的是什么?“我尝试了第一种方法,但由于有同名的方法,所以出现了错误。”——如果接口对方法有冲突的要求——看起来是这样的——那么这基本上回答了这部分问题。但是我认为你不需要任何直接实现
IQuestion
@lealcelderio它在最终结果中应该是这样的两个问题:1-在ITest实现中,addQuestion方法的内部是什么?2-我没有从你的解释中得到我是否应该实现和“IQuestion”类。我不认为这是必要的,因为来自该接口的方法自动位于其他3个类中。附言:也许分级机不是正确的术语。基本上,我们在json文件中得到了一组问题,从中,程序需要能够识别问题的类型,并加载该问题类型的特定测试窗口。最终结果应该是这样的。@Brunochnha,1。我不知道你的指导老师的意图是什么,但我从阅读方法签名中得到的期望是,该方法将提供的问题
存储在某种内部数据结构中--可能是一个列表。我在第一段的后半部分讨论这个问题。似乎没有提供直接实现IQuestion
的内在需求,但是您可能会发现,提供一个作为其他三个问题接口实现的超类是有用的。