面向对象设计的新手

时间:2013-05-24 10:22:44

标签: oop object-oriented-analysis

我是面向对象设计的新手。我期待着有关如何使用对象建模下述要求的一些提示。

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

我的解决方案:两个课程

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

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

到目前为止,非常好。

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

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

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

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

OR

(b)获取与该计划相关的学生ID列表,并直接为所有学生获取学生信息。 Db:单个查询以获取所有需要的信息。

1 个答案:

答案 0 :(得分:0)

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

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

作为最后的建议,如果你想学习OO设计,首先阅读Erich Gamma,Richard Helm,Ralph Johnson和John Vlissides的书“设计模式 - 可重复使用的面向对象软件的元素”(AKA“the gang of 4“)。