如何解决考虑纯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; }
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。