Design patterns 如何处理设计问题,如;设计自动售货机“;
我想知道我应该遵循哪些步骤来解决问题,比如设计一台自动售货机,并提出一些设计文档(比如用例、序列图、类图)。是否有任何来源/链接,我可以阅读其中谈到如何一步一步走Design patterns 如何处理设计问题,如;设计自动售货机“;,design-patterns,architecture,oop,Design Patterns,Architecture,Oop,我想知道我应该遵循哪些步骤来解决问题,比如设计一台自动售货机,并提出一些设计文档(比如用例、序列图、类图)。是否有任何来源/链接,我可以阅读其中谈到如何一步一步走 谢谢。我不确定是否有任何公认的步骤,但最简单的方法就是尽可能地分解每一步 从主要行动开始(投入资金、按选择、接受饮料) 继续将每个操作分解为更小的操作和响应,直到它变得几乎微不足道。所以,为了投入资金,你必须知道投入了多少,投入的总额,要显示的金额,等等 想想你的行为不再有效的任何场景(你推一个选择,机器是空的),以及你将如何处理它。
谢谢。我不确定是否有任何公认的步骤,但最简单的方法就是尽可能地分解每一步
然后,您可以根据您所提出的内容来创建序列图和类图。嗯,自动售货机基本上是一台机器 我将决定什么是有效的输入(硬币和钞票?),什么是输出 用户走向机器时可能产生的结果是什么。可能会出现什么问题?(钱太多,钱太少)怎么处理?(分配更改、分配退款)
最后,写出处理用例所需的内容。你的名词很可能是类。你的动词很可能是属于这些类的方法。概括地说,想想自动售货机中涉及哪些对象:
-可能是一个抽象类自动售货机
,DrinkMachine
,以及扩展类SnackMachine
VendingMachine
-抽象类VendingProduct
,其他类别扩展饮料
销售产品
,其他类别扩展可口可乐
饮料
- &c、 &c
- 这是一篇关于开始OOP设计的好文章,作者是Allen Holub
- 是使用OOP设计咖啡自动售货机的开始
普雷斯托!这就是你的要求。这些想法可能会有帮助: 从接口的角度定义输入、输出、预期条件和错误条件 决定它需要看起来有多好 需要运行多长时间(使用寿命) 多久需要重新进货一次?我想你已经看过了 不要先考虑代码(类和c)。考虑用例和功能需求。自动售货机应该提供什么功能?希望用户如何与之交互?维修人员呢?在执行此操作时,尽量不要将实现细节与高级需求混淆 然后,根据该类项目的类型,考虑非功能性需求。最重要的属性是什么:速度、可靠性、易维护性、对新情况的适应性、安全性等等。。。?还有其他的可能性。这些不是二元的,是/否的答案,更多地考虑范围、最低标准和最佳目标。注意,“最佳”取决于相关利益相关者的观点。易用性和安全性经常存在冲突,因此您必须找出哪个更重要 在这之后,您可以回到您的用例,并查看它们是如何受到您的非功能性需求的影响的。这就是与客户进行谈判的地方,在这种情况下,客户很可能就是你。为了达到其他目标,您是否必须牺牲功能?对于每个功能,风险和回报是什么?提供高价值的易于实现的功能非常重要。难以实现的(由于限制)功能只增加了很小的价值,应该明确地排在最后。其他两种组合需要仔细考虑 然后你就可以开始设计机器了
您可以使用大量不同的图表来帮助您可视化问题,或者向其他人解释您提出的解决方案 要从头开始设计所有软件,并不是只有一种正确的方法
可能有几十种不同的方法,从非常小的前期设计(如in)到在中编写的大型前期设计。可能有更多的中间方法有其位置,因此这取决于您想要使用的开发方法,因为有些方法可能需要更多的前期设计,比如瀑布式方法,而不是更灵活的方法,在这种方法中,需求可以定期更改,这不会导致很多问题,或者至少这是问题所在理论。来解决这些问题