Dan*_*ski 5 oop modeling model
假设我必须为餐馆的餐点建模.
一顿饭可以包含几个"组件":
另一餐可以包括:
进一步的膳食可以包括:
只是炸薯条
只是一种饮料
只是......
我该如何建模呢?(UML,实体关系,代码,......无论你能解释得最好)
如果你知道我想要执行的一些任务,也许会有所帮助,所以:
我已经考虑将所有组件分成文章,然后添加某种角色映射来标记"薯条"作为"芝士汉堡","炸肉排","......"的补充,但后来我想知道,我怎么能模拟多个添加-ons,可选附加组件,n-out-of-m附加组件......
我希望你能帮帮我...
如果这是家庭作业,可能并不重要......但是 - 如果这要在现实世界的应用程序中使用,我强烈建议不要为每种食物使用具体的类,即。可乐类、沙拉类、米饭类等如上面推荐。这肯定会使您的应用程序变得不灵活。
如果有一个带有名称属性或类似属性的食品类和饮料类会更好。
想象一下,仅仅因为现在有一个新的特殊产品或食品,就必须重建整个应用程序......不酷;)。
我认为其他答案中缺少的是团体的想法。每个食物项目可以与其他项目一起属于一个组,或者单独属于一个组。
假设薯条、米饭和楔子属于 A 组。饮料属于 B 组。然后您可以将组合建模为组列表 - 即。1 个 A 组项目和 1 个 B 组项目,或 2 个 A 组项目和 1 个 B 组项目。
您还可以使食品能够同时属于多个组......以使选项更加灵活。
数据库模型定义所有关系可能会变得复杂,但我认为这是必要的。
也许是这样的:
group(id, name, desc) - 一组类似的食物 - 主菜、开胃菜、饮料......或任何东西
foodItem(id, name, desc)- 代表单个项目 - 薯条、米饭等。
foodItem_group(foodIgem_Id, group_Id)- 将食品项目映射到其组 - 多对多
combo(id, name, desc)- 描述一个组合
combo_group(combo_Id, group_Id)- 将组映射到组合 - 多对多
我认为这可以用于表示基本所需的模型 - 您可能需要额外的表来存储客户实际订购的内容..当然,检测客户订单是否与组合匹配由您的业务逻辑决定。