1

我是面向对象设计的新手。我期待一些关于如何使用对象对以下提到的需求进行建模的技巧。

要求:一个程序有很多学生。一个程序登录到应用程序。第一页显示属于该计划的所有学生的表格(表格列 - Id、名字、姓氏、年龄、性别等)。Id 是一个链接。通过单击 ID,将显示单个学生页面。在此页面中,可以完成与个别学生相关的活动 - 例如。编辑地址,更改名称,添加评论等。

我的解决方案:两个班

程序 - 将对单个程序进行建模,执行与其相关的所有活动并封装所有与程序相关的数据库表。

学生 - 将为单个学生建模并执行与其相关的所有活动并封装所有学生特定的数据库表。

到目前为止,一切都很好。

为了获取与程序相关的所有学生的详细信息,我需要从 Program 对象调用一个名为“ fetch_student_details ”的方法。

问题是这个方法应该写在哪里?它应该是学生类方法还是程序类方法。

如果我在程序类中编写此方法,程序类将如何处理它?

(a) 首先确定属于它的 student_ids 列表,对于每个 id,实例化一个 Student Class 并从中获取特定的学生相关信息。DB:每个实例化的学生对象都将运行一个查询来获取其信息。所以 100 个学生,100 个查询。

或者

(b) 获取与程序相关的学生id列表,直接获取所有学生的学生信息。Db:单个查询以获取所有需要的信息。

4

1 回答 1

0

在这种情况下,如果可以,请选择解决方案 (b)。实际上,学生和程序是两个可以独立存在的不同实体,并且您不会破坏封装。

使用解决方案 (a),您需要通过为您想从学生那里获得的每个可能信息添加一个方法来污染程序的界面。

最后的建议是,如果您想学习 OO 设计,请先阅读 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides(又名“四人帮”)所著的“设计模式 - 可重用的面向对象软件的元素”一书.

于 2013-05-24T10:43:52.333 回答