题目:
一支冰球队由一名中锋、一名守门员、两名边锋以及两名后卫组成。每个队员都手持一个曲棍,用来在冰上运球,目标是用曲棍将球射入对方的球门。冰球比赛通常在一个室内的冰球场上进行。场地长200英尺、宽最大为100英尺。中锋的任务是将冰球传递给边锋,边锋的射门技术通常比前锋更好。后卫力图阻止对方到达本方的射门位置和射门。守门员是最后一道防线,阻挡对方的射门。每当他成功的阻挡出对方的射门,他就进行了一次“救球”。每射进球门一次得一分。一场冰球比赛要进行60分钟,这60分钟被分3次20分钟的比赛。
使用上述信息绘制一幅类图。如果你知道的关于冰球比赛的知识比上面描述的更多,那么在你的类图中增加你所知道的信息。
分析:
属性
-
Game(比赛)
-
duration: int = 60
:比赛时长,默认为60分钟。 -
periods: int = 3
:比赛周期数,默认为3。 -
teams: List<Team>
:参赛队伍列表。
-
-
Team(队伍)
-
name: String
:队伍名称。 -
players: List<Player>
:队员列表。
-
-
Player(球员)
-
name: String
:球员姓名。 -
number: int
:球衣号码。 -
position: String
:场上位置。
-
-
Rink(冰场)
-
length: int = 200
:冰场长度,默认为200英尺。 -
width: int = 200
:冰场宽度,默认为200英尺。
-
关系
-
Game(比赛)
-
与
Team
类有一对多的关系,每场比赛有两支队伍。 -
与
Rink
类有一对一的关系,比赛在冰场上进行。
-
-
Team(队伍)
-
与
Player
类有多对多的关系,每支队伍有多个队员。 -
与
Game
类有一对多的关系,队伍参与比赛。
-
-
Player(球员)
-
与
Team
类有一对多的关系,球员属于某支队伍。 -
继承自
Forward
、Defenseman
、Goalie
类。
-
-
Rink(冰场)
-
与
Game
类有一对一的关系,比赛在冰场上进行。
-
继承关系
-
Player(球员)
-
继承自
Forward
、Defenseman
、Goalie
类。
-
-
Forward(前锋)
-
继承自
Player
类。
-
-
Defenseman(后卫)
-
继承自
Player
类。
-
-
Goalie(守门员)
-
继承自
Player
类。
-
方法
-
Game(比赛)
-
startGame()
:开始比赛。 -
endGame()
:结束比赛。 -
scoreGoal(Team)
:为指定队伍计分。
-
-
Team(队伍)
-
addPlayer(Player)
:添加队员。 -
removePlayer(Player)
:移除队员。
-
-
Player(球员)
-
play()
:开始比赛。
-
-
Forward(前锋)
-
shootPuck()
:射门。 -
passPuck()
:传球。
-
-
Defenseman(后卫)
-
blockOpponent()
:阻挡对手。 -
clearPuck()
:清球。
-
-
Goalie(守门员)
-
saveShot()
:扑救。
-
冰球比赛对象图请参考:UML-冰球比赛对象图-优快云博客