如何编写类型来自 Java 中另一个 class 的构造函数?
How to write constructor where the types are from another class in Java?
我正在为 四连胜 游戏绘制 UML 图。这是一款双人联机棋盘游戏,玩家选择一种颜色,然后轮流将彩色圆盘放入七列六行的垂直悬挂网格中。
我对 UML 图有疑问。 class 游戏有 2 个变量来自另一个 class(这样可以吗?)。其次,如何为所有给定变量编写构造函数?
注意:UML图的目的不是用来写代码,而是作为一个项目。没有要求。
类 具有其他类型的属性
我们以Game
和Player
为例。在您的图表中,您显示了 属性 playernames: Player[]
。这意味着 class Game
与 class Player
隐式关联。同时你表现出与Player
class的明确关联。这是模棱两可的:隐式和显式关联是否相同?还是这两个不同的关联?
一个更明确的表示是从class的隔间中删除属性,并在另一端的关联行上显示其可见性和名称作为角色。
另一个例子是class'Game
属性board:Board
。同时,还有一个关联到Gameboard
。这两个是一样的吗,其中一个class名字有误?或者您是否忘记了图表中的 «interface» Board
,Game
应该与之关联并且 Gameboard
将实现?由你来澄清。
如果可能,请指出关联的多重性。如果正好是 1 或正好是 2,请将其写下来。如果是多个写一个*
.
构造函数
在 UML 中,构造函数和其他运算符一样是运算符。它可以有任何名称,并且应该 return 类型对应于拥有 class。它前面应该有构造型 «Create»
:
+ «Create» Game():Game
在你的 class 中你也有一个相关的操作(注:在 UML 中一个不 return 任何东西的操作不 return void
,但什么都没有全部):
+ initialize()
+ setBoard (board: Board)
reader 可以推断板是在别处创建的,可能需要设置。但是,您的图表中没有指定构造函数或初始化程序 creates/constructs 其余属性的其他对象。如果这对您很重要,您可以添加明文注释。如果您更喜欢更正式的方式,您可以改为表达 post-条件。
如果 Game
不创建它的某些属性,例如,如果您的用户界面将创建 Player
然后传递给构造函数的对象,您将在您的操作规范,与 Java:
中的相同
+ «Create» Game(player: Player[2]):Game
但是如果你设置了棋盘,你也可以设置(或添加)玩家。
不相关的评论
- 几次
Game
操作returnPerson
但是没有class这样的。 (您可以在图表中添加这样的 class 并绘制依赖项)。
- 属性
playernames
的名称具有误导性:它是玩家,而玩家不仅仅是名字。这也是得分、状态以及造就一名球员的一切。
- 你能解释一下为什么在关联上加上箭头吗?如果没有,最好删除它们。
Extends
不是 UML 关键字。只需删除它:您所绘制的专业化就足够了:它意味着继承。对于已实现的界面,您将使用相同的符号,但带有虚线。
我正在为 四连胜 游戏绘制 UML 图。这是一款双人联机棋盘游戏,玩家选择一种颜色,然后轮流将彩色圆盘放入七列六行的垂直悬挂网格中。
我对 UML 图有疑问。 class 游戏有 2 个变量来自另一个 class(这样可以吗?)。其次,如何为所有给定变量编写构造函数?
注意:UML图的目的不是用来写代码,而是作为一个项目。没有要求。
类 具有其他类型的属性
我们以Game
和Player
为例。在您的图表中,您显示了 属性 playernames: Player[]
。这意味着 class Game
与 class Player
隐式关联。同时你表现出与Player
class的明确关联。这是模棱两可的:隐式和显式关联是否相同?还是这两个不同的关联?
一个更明确的表示是从class的隔间中删除属性,并在另一端的关联行上显示其可见性和名称作为角色。
另一个例子是class'Game
属性board:Board
。同时,还有一个关联到Gameboard
。这两个是一样的吗,其中一个class名字有误?或者您是否忘记了图表中的 «interface» Board
,Game
应该与之关联并且 Gameboard
将实现?由你来澄清。
如果可能,请指出关联的多重性。如果正好是 1 或正好是 2,请将其写下来。如果是多个写一个*
.
构造函数
在 UML 中,构造函数和其他运算符一样是运算符。它可以有任何名称,并且应该 return 类型对应于拥有 class。它前面应该有构造型 «Create»
:
+ «Create» Game():Game
在你的 class 中你也有一个相关的操作(注:在 UML 中一个不 return 任何东西的操作不 return void
,但什么都没有全部):
+ initialize()
+ setBoard (board: Board)
reader 可以推断板是在别处创建的,可能需要设置。但是,您的图表中没有指定构造函数或初始化程序 creates/constructs 其余属性的其他对象。如果这对您很重要,您可以添加明文注释。如果您更喜欢更正式的方式,您可以改为表达 post-条件。
如果 Game
不创建它的某些属性,例如,如果您的用户界面将创建 Player
然后传递给构造函数的对象,您将在您的操作规范,与 Java:
+ «Create» Game(player: Player[2]):Game
但是如果你设置了棋盘,你也可以设置(或添加)玩家。
不相关的评论
- 几次
Game
操作returnPerson
但是没有class这样的。 (您可以在图表中添加这样的 class 并绘制依赖项)。 - 属性
playernames
的名称具有误导性:它是玩家,而玩家不仅仅是名字。这也是得分、状态以及造就一名球员的一切。 - 你能解释一下为什么在关联上加上箭头吗?如果没有,最好删除它们。
Extends
不是 UML 关键字。只需删除它:您所绘制的专业化就足够了:它意味着继承。对于已实现的界面,您将使用相同的符号,但带有虚线。