建模和责任

koe*_*oen 3 oop

假设您要在应用程序中创建银行帐户模型.您可以创建一个类BankAccount来执行典型的银行帐户.但是如果你被问到班上的责任是什么,答案是什么?"像银行账户一样?" 那不是很具体.我对建模和责任之间的关系有点困惑.许多"现实世界"的物品似乎没有明确的责任.

什么是开始建模这些概念并保持明确责任的最佳方式?

Mer*_*son 5

分解"表现得像银行账户"的意思.银行帐户可能需要能够:

  • 跟踪其中有多少钱
  • 将该信息显示给拥有正确权限的人(帐户所有者或银行员工)
  • 收到存款
  • 跟踪存款发生的时间
  • 向存款人提供存款已成功处理的确认(具有不同级别的权限 - 帐户所有者可能会获得新的总数和确认号,第三方可能只会获得确认号)
  • 为经过适当认证的用户提供资金(即处理提款)
  • 跟踪退出的时间
  • 当余额不足时,不要给钱
  • 从备份帐户自动提取资金以进行透支保护
  • 等等 ...

从这里,您可以将这些任务(职责)中的一些(重构)抽象(重构)为更一般的模型,例如"可以在不同的权限级别进行身份验证的实体","可以与其他类型的实体进行通信的实体适当的权限级别","一个可以记录其状态发生变化以及发生了什么变化的实体",依此类推.

在敏捷开发模型中,确定用户故事的用途.但是,为了使用这种技术,你不必喝Agile kool-aid; 它只是一种明智的方式来确定项目的要求是什么.批判性地检查用户如何与您的软件交互,并具体定义这些交互将做什么,是构建软件的第一步.