考虑纯OO,如何在对象中划分此scanario?

问题描述

| 我在这里感到困惑的是,在这种情况下如何在此处制作对象。 我正在使用iPhone App。 假设我有2个主要实体,STUDENTS和SUBJECTS,现在这里有多对多基数。我要跟踪每个学生在每个科目中获得的所有分数。 所以数据库表变成这样的3 学生 科目 学生标记-(描述学生和学科的关联) 现在,ERD对我很清楚,但是我在这里对OO建模感到困惑,我需要在这里创建哪些对象/类,它们将如何交互? 请有人可以向我解释。 提前致谢。 编辑: 只有两个班怎么能满足我的要求?让我解释: 班级科目包含与该科目特别相关的所有属性,例如科目名称,学时,所教课程等。 班级学生有其自己的特定属性,例如姓名,年龄,就读的班级等。 现在我在哪里存储该信息,StudentA在SubjectA中获得了90分。就像在DB的情况下一样,我还有另一个表,如m-m关系。 所以我的问题是,我是否也应该创建该第3个表的类,像上面那样说STUDENTMARKS,因为主要学生或主题对象无法保存所有信息,例如studentA..to ... StudentZ已注册SubjectA,而所有这些学生对象包含在“主题对象”中,但是每个学生的成绩存储在何处,因为学生对象没有“ marks”属性,因为成绩与学生不直接/仅相关。 考虑到Obj-C可以有人对此进行详细的类化。     

解决方法

一对多,学生类将具有学科的ArrayList,而学科将具有学生的ArrayList ...如果您一年两次提供特定学科,则每个学期对象中都将包含学生列表。
public class Student{

   private ArrayList<Subject> current;
   private ArrayList<Subject> passed;

   ...
}

public class Subject{

   private ArrayList<Student> enrolled;
   private ArrayList<Student> passed;

   ...
}
快乐编码 欢迎来到OO World! 发行后, 你可以有。学生类内部的HashMap作为属性。 喜欢
private HashMap<Subject,Integer> transcript....
这里Subject是关键,Integer是学生获得的分数。如果您想从某个特定对象的机密物体上获得分数,可以这样做,
S1.getScore(subject)
其中s1是Student对象,subject是Subject类的对象。 在学生类中,您可以添加以下方法:
public Integer getScore(Subject sub){
    return transcript.get(sub);
} 
我很抱歉缩进不正确,因为我是通过移动设备编写的;)     ,怎么样(假设使用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; }
}
    

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...