【问题标题】:How to design classes based on requirements or functionality如何根据需求或功能设计类
【发布时间】:2015-04-23 06:30:15
【问题描述】:

我正在为班级设计而苦苦挣扎。有时我认为我所读到的关于类组织、类图和类设计的所有内容都不适用于具体项目。我想使用 MVC 或 MVP 架构在 Java 中创建 Snake 游戏。

有一些要求:

  • 应在屏幕上绘制蛇和蛇的食物
  • 应该显示当前游戏分数
  • 蛇应该使用键箭头移动
  • 食物应该被分组,这样每组都有一些点和颜色
  • 游戏速度应根据分数阈值确定

问题是如何根据这些要求组织类(使用方法和“全部”)?也许有人有一本书或链接可以提供指导或示例。

请您分享您通过此示例创建和组织课程的经验法则吗?

【问题讨论】:

  • 这个问题可能适合programmers.stackexchange.com。你试过任何设计/类图吗?
  • 你会怎么解决?提出您的建议和想法以供进一步讨论。
  • 1/2 - 只有想法,不是完整的答案,也是众多解决方案中的一种。这是基于我的经验,这主要是除了游戏之外的任何东西。 M - 蛇和食物将在model 包中,并具有lengthbaseValue 等属性(假设您根据级别乘以该值)。 C - 然后,您将拥有一个控制器,该控制器将确定分数、速度、(分数乘数)……并控制蛇获取食物、吃自己等时的事件。最后是 V - 处理图形、输入(键盘箭头)等的类。
  • 2/2 - 为了使事情更容易,我建议将每个部分分组在一个单独的包中(所有模型都在 dtomodel 包中,控制器在 controller 包中并查看ui 包)。当然,请随意制作子包。在较大的项目中,当使用 Maven 时,我发现有时为这三个模块中的每一个创建一个单独的 Maven 模块甚至很有用。除了可读性之外,保持包分开更容易更改:如果您希望从 Web 应用程序切换到客户端,您几乎不应该接触 ui 包之外的任何东西(好吧,web 是这种情况下的坏例子......) .
  • @LittlePanda - 对于程序员来说,这只是话题。一般来说,社区更愿意看到更多的设计尝试,而不是这个问题所呈现的内容。

标签: java class architecture rule


【解决方案1】:

Here is an example 的 Java 中一个简单的 Snake 游戏克隆,您可以参考它以获取有关如何构建事物的想法。

既然你要求推荐一本书,我会推荐一本对我掌握面向对象分析和设计有很大帮助的书。它通过逐步解决实际问题来教你。这是完全不同的,因为它不遵循有关此问题的技术书籍的典型流程。它着眼于逐渐困难的问题,指出潜在的问题并解释沿途的重要概念。

这本书叫Head First OOA&D。我推荐它,因为它读起来很容易(有时甚至很有趣),有很多 Java 示例,除此之外,还有一个游戏示例。所以一定要检查出来!即使在您的问题范围之外,我认为您也可以像我一样从中受益。

祝你好运!

【讨论】:

  • 谢谢普拉门。你推荐的书很棒。我觉得我所读过的所有内容现在都融合在一起了。不知何故,教程中的常见示例(爱丽丝是一个人,北极熊是一个动物,音像店,消费者......)并没有帮助我理解所有内容。我要解决这些问题,也许我应该换书或换例子。
  • @goRunToStack 我知道,对吧?当年看书的时候也有同感!这就是我推荐它的原因。真的很高兴能帮上忙!如果您需要更多帮助,请告诉我。
猜你喜欢
  • 2023-01-11
  • 2018-02-23
  • 2023-02-07
  • 1970-01-01
  • 2017-02-21
  • 1970-01-01
  • 2021-10-02
  • 2020-10-28
  • 1970-01-01
相关资源
最近更新 更多