【问题标题】:I never know when to make new classes or what to make classes for when I create a new project, and I struggle with organizing my code当我创建一个新项目时,我不知道何时创建新类或为什么创建类,并且我在组织我的代码时遇到了困难
【发布时间】:2017-06-05 09:48:59
【问题描述】:

每当我开始一个新的 java 项目时,我总是遇到同样的问题,而且似乎从来没有学习过:我永远不知道要创建什么类,以及将什么放在哪里。我很难将我的代码组织到不同的类中。

例如,我目前正在编写一个实验程序。它涉及宇宙飞船,一些敌方宇宙飞船和一些友方宇宙飞船,向它们射击的枪,等等。我考虑过创建一个 Spaceship 类,但不确定这是否真的应该是两个类(一个用于敌方飞船,一个用于友方飞船)。但后来我在想,它应该是一类,友方和敌方的宇宙飞船都可以作为宇宙飞船的实例。然而,在整个实验过程中,敌方飞船和友方飞船服务于不同的目的,所以可能不是。我也知道我需要创建这些飞船的 JLabel,并且不知道这些是否应该是 Spaceship 类的实例的变量,或者它们是否应该是在 main 方法中创建的东西。这继续下去。

有没有人有任何提示可以立即了解代码应该如何组织、应该由哪些类组成等等?因为无论我编写多少程序,这对我来说似乎都不会变得更容易。

【问题讨论】:

  • 这个问题对于 StackOverflow 来说太宽泛了。这通常是伴随练习而来的,并且有可以纠正你的人(比如老师或资深同事)。最终你会发展出一种直觉。重要的是不要单独工作。

标签: java class code-organization


【解决方案1】:

您的问题的答案取决于您对面向对象概念的理解程度。 根据您的要求,您需要制作 Spaceship 接口或超类。将敌方飞船和友方飞船作为飞船的子类。同样,您将需要制作单独的枪支类。根据您需要为每个功能创建对象的功能。您可以为您的宇宙飞船制作 jLabel 类。

您的主要方法将在您的应用程序的入口类中。根据应用程序中的类或层,您可以拥有不同的包。您还应该事先了解一些设计模式,以解决应用程序开发中出现的常见问题。

【讨论】:

  • 你怎么知道我只需要一个用于所有宇宙飞船的课程而不是两个,你怎么知道我需要一个枪课程?你是如何做出这个决定的?另外,你为什么认为我应该创建一个 JLabel 宇宙飞船类?
  • 因为在面向对象编程中每个实体都应该是一个对象。你应该把每一件事都当作一个对象。对象代表一个类。具有不同属性和行为的宇宙飞船应该是不同的对象。或者即使它们具有共同的属性/行为,您也应该考虑多态性。这是一种很好的做法,也是您在面向对象编程中应该采用的工作方式。
  • 我是否可以创建一个具有某些属性的 Spaceship 类,然后有两个额外的类,EnemySpaceship 和 FriendlySpaceship,每个类都扩展 Spaceship 类?我认为这将是一个好主意,因为它们共享许多属性和行为,但它们也具有不同的属性和行为。
  • 选择我的答案为正确。如果你觉得有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-02
  • 2023-03-25
  • 2020-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多