我在这里混淆了如何在这种情况下制作对象。 我正在使用iPhone App。
假设我有2个主要实体,学生和主题,现在这里有多对多的基数。我有一个跟踪每个学生在每个科目中获得的所有分数。
所以数据库表就像这样变成3 学生 必修科 学生标记 - (描述学生和学科的关联)
现在ERD对我来说很清楚,但我在这里对OO建模感到困惑,我需要在这里制作哪些对象/类,以及它们将如何交互? 如果有人可以向我解释。
先谢谢。
编辑:
如何只有2个课程符合我的要求?让我解释一下:
课程主题包含与主题特别相关的所有属性,例如名称,学分,课程等等。
Class Student有自己的特定属性,如姓名,年龄,登记的班级等等。
现在我在哪里存储StudentA在SubjectA中获得90分的信息。在DB的情况下,我有另一个表格,如m-m关系。 所以我的问题是,我是否还应该创建第三个表的类,如上所述的STUDENTMARKS,因为主要学生或主题对象无法保存所有信息,例如studentA..to ... StudentZ注册了SubjectA,以及所有这些学生对象包含在Subject对象中,但是在哪里存储每个学生的标记,因为student对象不能有标记属性,因为标记不直接/只与学生有关。
考虑到Obj-C,有人可以为此做一个详细的课程。
答案 0 :(得分:1)
许多人,Student类将具有Subject的ArrayList,Subject将具有StudentList的ArrayList ...如果您在一年内提供两次特定主题,则每个Semester对象将包含Student列表。
public class Student{
private ArrayList<Subject> current;
private ArrayList<Subject> passed;
...
}
public class Subject{
private ArrayList<Student> enrolled;
private ArrayList<Student> passed;
...
}
快乐编码
欢迎来到OO World!
你的版本之后,
你可以拥有。内部Student类的HashMap作为属性。
像
private HashMap<Subject,Integer> transcript....
这里主题是一个关键,整数是学生得到的标记。如果你想从一个srudent对象得到一个特定主题的标记,那么
S1.getScore(subject)
其中s1是Student对象,subject是Subject类的对象。
在学生课程内,你可以添加像
这样的方法public Integer getScore(Subject sub){
return transcript.get(sub);
}
如果缩进不正确,我很抱歉,因为我是从移动设备上写的;)
答案 1 :(得分:0)
这个怎么样(假设C#):
public class StudentMarks
{
public Student Student { get; set; }
public Subject Subject { get; set; }
public decimal Mark { get; set; }
}
public class Student
{
public string Name { get; set; }
}
public class Subject
{
public string Name { get; set; }
}