Oop 如何对进行计算的类建模并存储它们?

Oop 如何对进行计算的类建模并存储它们?,oop,design-patterns,uml,Oop,Design Patterns,Uml,我必须开发一个类,作为金融应用程序的一部分,它接收两个属性并返回两个结果。在你认为它不是一个类,而是一个方法之前,我必须说我必须坚持这两个:两个用户提供的参数和两个输出。让我们在此模拟中演示如下内容: ---------------- |PetWash | |----------------| |petWeight |<- user provided |petHeight |<- user provided |ammountSoapUsed

我必须开发一个类,作为金融应用程序的一部分,它接收两个属性并返回两个结果。在你认为它不是一个类,而是一个方法之前,我必须说我必须坚持这两个:两个用户提供的参数和两个输出。让我们在此模拟中演示如下内容:

 ----------------
|PetWash         |
|----------------|
|petWeight       |<- user provided
|petHeight       |<- user provided
|ammountSoapUsed |<- system calculated
|price           |<- system calculated
 ----------------
----------------
|宠物洗|
|----------------|

|petWeight |理想的面向对象方法从分析问题域开始
PetWash
听起来不像是一个问题域概念,它听起来像是发生的宠物清洗事件的记录,或者是您将向客户提供的宠物清洗估计。是哪一个?说清楚

  • 对问题域进行建模,以更好地了解信息和操作要求。类必须与问题域的真实世界产生共鸣
    CalculationEngine
    显然不符合此标准。类当然可以进行计算,但它们应该提供非技术业务人员可以识别的业务价值。假设目的是为潜在客户提供估计,对我来说有意义的是
    客户
    类的实例,该类链接到
    动物
    类的多个实例,每个实例都有
    身高
    体重
    。链接到
    客户
    类实例的可能是链接到要清洗的
    动物
    实例的
    估算
    类实例。等等

  • 你的问题太低级了。您既不应该在getter中调用计算,也不应该提供
    calculate()
    操作。专注于对非技术业务人员有意义的运营。同样,假设您提供了一个估计值,请提供对添加或更新其
    动物的
    客户的
    实例的操作。当给定一个或多个客户的
    动物时,提供提供
    估计值的操作。该
    估算
    封装了规则和计算。如果
    客户
    同意
    估算
    ,您可以使用该估算来管理soap库存或其他任何东西。将实现隐藏在这个问题域facade后面,以便在需要时(而不是在需要时)可以替换坏的实现


  • 我最近看到的大多数OO代码完全忽略了问题域,似乎在尝试敏捷的同时用口香糖和胶带构建应用程序。一个好的问题域模型是相对持久的。与此形成鲜明对比的是,专注于解决方案领域(管道胶带设计)是不持久的,并且是成本超支、昂贵返工和取消项目的原因。不要把你的项目变成这样

    说得好。谢谢你的解释。我完全同意你的看法。我们花在设计和项目上的每一分钟都可以为客户节省一个小时或更多的时间,同时进行开发、测试和实施。出于这个原因,我决定在我做这个项目的时候在这里提问。我真正的问题不在于宠物,它是一个更抽象的金融应用程序,但这个概念是适用的。谢谢你的帮助!