# jrummikub.model
Date: 2011-05-10

## Package jrummikub.model

Interface Summary
IGameState: Interface for `GameState` model
IHand: Interface for the `Hand` model
IPlayer: Interface for `Player` model
IStoneTray<E extends Sizeable>: Interface for the `StoneTray` model
ITable: Interface for the `Table` model
Sizeable: Objects that have a size.

Class Summary
GameState: Class managing the overall and momentary GameState
Hand: Class managing a `Player`'s `Stone`s
Player: Class managing player data.
Position: `Stone` Position class to determine positions on `Table` or `Hand`
Stone: Basic Rummikub Stone
StoneHeap: StoneHeap creates all `Stone`s for a game, manages them and allows players to draw one or more random Stones.
StoneSet: Class managing `Stone`s joined together to form sets
StoneTray<E extends Sizeable>: A StoneTray is a collection of positioned objects (for example `Stone`s or `StoneSet`s.
Table: Class administering the `Stone`s on the game-Table

Enum Summary
StoneColor: Class specifying possible StoneColors
StoneSet.Type: Validity type of the set
StoneTray.Direction: Possible move directions in case of overlapping Stones/Sets