lau*_*cer 9 oop class-design analysis
Q1.在我的大学对面向对象建模和设计的研究中,他们建议考虑对象可以为其方法做什么,以及它对其属性的责任.所有澄清的尝试都导致了进一步的混乱.
这往往会生成一个类图,其中包含具有所有操作的actor,以及仅包含数据的内部类.
这似乎不正确.还有另一种思考如何建模对象的方法吗?
Q2.此外,该课程似乎强调在真实世界对应物之后对物体进行建模,但在域模型中并不一定有意义.IE浏览器.在医疗实践中,他们有,Patient: CreateAppointment(), CancelAppointment()但不是如何实施(你会修改约会集合).还有另一种思考方式吗?
示例Q1
秘书:RecordAppointment(),RecordAppointmentCancellation()
预约:时间,日期,...(没有方法)
例Q2
医生:SeePatient()
虽然SeePatient是一个用例,但它对实际类的方法没有意义.你觉得这个怎么样?
ahs*_*ele 11
不幸的是,你所遇到的障碍在学术界非常典型.学术项目往往从视频租赁商店,图书馆或学生注册系统开始(你的医疗办公室不同于此),然后通过动物教授遗产.您提供的指南也非常典型
他们建议考虑一个对象可以为其方法做些什么,以及它对其属性的责任
事实上,当初学者问我通常会解释一个对象的属性是它所了解的事物,它的方法就是它知道如何做的事情.这真的只是另一种说明你在那里的东西的方式.正如您所发现的那样,当您开始讨论更有形的系统而不仅仅是示例时,这种思维方式会很快崩溃.
例如,该指南适用于此对象:
public class Tree
{
public int Height { get; set; }
public void Grow(int byHowMuch)
{
Height += byHowMuch;
}
}
Run Code Online (Sandbox Code Playgroud)
虽然这肯定符合您的权利,但您认为它没有"感觉"正确:
public class Secretary
{
public void MakeAppoinment(Patient patient)
{
//make the appointment
}
}
Run Code Online (Sandbox Code Playgroud)
那么解决方案是什么?这是一个关于你正在教授和应用它的问题.学习和理解设计模式将对开发系统有很大帮助,这些系统比知道如何成长的树更具功能性.
推荐阅读:
为了解决你所呈现的问题,我可能会使用继承人类和接口的组合,这些类和接口将通过一系列服务类来执行他们的操作.基本上,秘书,医生和患者都将从人身上继承,并且这些课程中的每一个都可以传递给随附的服务类.服务类可能会也可能不会执行类似的操作SeePatient().请不要将此示例表示人员类没有方法.
Stack Overflow有一些以上可能有用的相关问题:
另外,最好还是看看:
最后,没有一个定义应用程序对象的定义.如何应用模式,原则等将定义您的程序.您问自己这些问题的事实表明您走在正确的轨道上.
| 归档时间: |
|
| 查看次数: |
1703 次 |
| 最近记录: |