如何在Objects中划分这个场景,考虑纯O?

时间:2011-05-26 12:54:30

标签: oop

我在这里混淆了如何在这种情况下制作对象。 我正在使用iPhone App。

假设我有2个主要实体,学生和主题,现在这里有多对多的基数。我有一个跟踪每个学生在每个科目中获得的所有分数。

所以数据库表就像这样变成3 学生 必修科 学生标记 - (描述学生和学科的关联)

现在ERD对我来说很清楚,但我在这里对OO建模感到困惑,我需要在这里制作哪些对象/类,以及它们将如何交互? 如果有人可以向我解释。

先谢谢。

编辑:

如何只有2个课程符合我的要求?让我解释一下:

课程主题包含与主题特别相关的所有属性,例如名称,学分,课程等等。

Class Student有自己的特定属性,如姓名,年龄,登记的班级等等。

现在我在哪里存储StudentA在SubjectA中获得90分的信息。在DB的情况下,我有另一个表格,如m-m关系。 所以我的问题是,我是否还应该创建第三个表的类,如上所述的STUDENTMARKS,因为主要学生或主题对象无法保存所有信息,例如studentA..to ... StudentZ注册了SubjectA,以及所有这些学生对象包含在Subject对象中,但是在哪里存储每个学生的标记,因为student对象不能有标记属性,因为标记不直接/只与学生有关。

考虑到Obj-C,有人可以为此做一个详细的课程。

2 个答案:

答案 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; }
}