我有一个特殊情况,我不太清楚如何转移到代码。
假设我有一个班级“调查”。该调查有一系列“问题”。我也有一个班级“人”。最后,在“答案”课程中收集了那些问题的答案。
“人物”已关联“调查”和一系列“答案”(每个答案都与一个问题相关联)。
所以我的问题是,这是正确的方法吗?我认为这个设计很糟糕,而且我并没有很好地分离问题。
我可以说“调查”和“答案”的对象都不应该是“人”的成员。
我应该创建第三个对象来收集“人物”,“答案”和“调查”之间的信息。 虽然,这种方法听起来像关系实体理论,使用表格最终形成M:N:S关系。
我该怎么办?您认为这可能是一个好/好的方法?
感谢。
这是Java中的代码。忘掉Encapsulation。
class Person{
String name;
String age;
Survey survey;
Answers[] answers;
}
class Survey{
Question[] listOfQuestions;
}
class Question{
String questionString;
}
class Answer{
Question question;
String answer;
}
答案 0 :(得分:0)
这取决于你想要达到的目标。
好的方法是从系统开始尽可能简单,没有任何冗余信息。
例如对于基本的“论坛” - 您有“问题”,用户可以“回答”该问题。要存储所有信息,您不必在用户类中包含答案列表。
但是 - 当您想要显示具体用户的所有答案时,您必须检查所有存在的答案,这是低效的。这就是多余的信息。
在您的情况下:Person
无法关联Survey
,Survey
或Person
也无法相互关联。但也许误解你真正想说的是什么。
让我们考虑一下,你想做一个非常简单的StackOverflow.com。
调查是标记(对于每个标记,您有一些问题) 问题,答案和人都知道它们是什么。
然后最低要求是:
class Person {
String name;
String age;
}
class Survey {
Question[] listOfQuestions;
}
class Question {
String questionString;
Person person;
Answer[] answers;
}
class Answer {
Person person;
String answer;
}
但是,当你只创建一对多的依赖关系而没有从另一方“看”时,你就拥有了所有的信息,但是很难获得它。
在StackOverflow上,您希望显示具体用户的所有答案或所有问题。没有人有答案/问题列表,很难获得(你必须检查所有的问题和答案),所以如果你想用这个未来,最好把它添加到人。
对于调查作为“论文”(参见评论):在人与答案之间,从双方进行链接应该是有用的,因此允许为具体用户轻松找到所有答案。但是当你找到人的所有答案时,你必须能够轻松访问相关问题以获得具体答案,所以你也需要双方连接。
class Person {
String name;
String age;
Answer[] answers;
}
class Survey {
Question[] listOfQuestions;
}
class Question {
String questionString;
Answer[] answers;
}
class Answer {
Person person;
Question question;
String answer;
}
其实我不认为你真的需要调查与人之间的任何直接联系