我正在学习OOP,所以我决定开始一个新的项目,一个国际象棋锦标赛经理。
在这里你可以读到国际象棋锦标赛https://en.m.wikipedia.org/wiki/Chess。
基本上,用户将能够添加球员到锦标赛,删除他们,注册游戏的结果,改变他们,对新的回合,等等。
我做的第一件事是对象建模,所以这就是UML图。

注意:可显示是一个界面。
我的理由是:
比赛是由游戏和仲裁者组成的,游戏是由玩家组成的。因为玩家和仲裁者都是FIDE配置文件,所以两者都继承自FideProfile类。最后,用户与锦标赛交互(我只是考虑总线逻辑,所以我没有设计任何登录/注销系统)。
所以,我的问题是:
我希望你的反馈和建议。
提前谢谢。
发布于 2021-03-10 19:02:45
这是一个好的开始,但你的数据很重。
面向对象是指对象之间的合作,每一对象都带来自己的特定知识和行为,为整体做出贡献。此时,惟一的行为是在User中,您将其描述为某种与数据交互的"UI“。
而不是那样,忘记一分钟的数据,集中精力于这个模型应该做什么。然后尝试分发和/或分解该问题,使所有对象都能提供行为,而不是数据。
这里有一个经验法则:每次您考虑从另一个对象访问数据时,您都侵犯了该对象的责任,这意味着责任(设计)可能需要纠正。
理想情况下,如果这是一个独立的应用程序,而不是一个库,则根本不应该访问其他对象的数据。
发布于 2021-03-11 12:04:12
有一个普遍的经验法则“更喜欢包容而不是继承”。就像所有“更喜欢”的规则一样,这不是要求你必须做些什么,而是一个停止思考的建议。
继承是一种“是一种”关系。遏制是一种“有”的关系。
在您的例子中,Player是FideProfile,还是Player有FideProfile?
https://softwareengineering.stackexchange.com/questions/423220
复制相似问题