- Objective:
- To create a casino simulation.
 
- Your application must have at the very least 4 games:
- Go Fish a card game
- BlackJack a card game
- Craps a dice game
- Slots a mechanical game
 
- The project should include some concept of each of the following classes.
- Description:
- Profilestores a casino-visitor's- id,- name, and- balance.
 
- Profileobjects should be created within the context of a casino.
- Profileobjects store- profileId,- username, and- balance.
- 
Description: - PlayerInterfaceis a contract to ensure that all players have reference to a- profile,- name, and- id.
 
- 
PlayerInterfaceshould declare 3 methods- Profile getProfile()
- String getName()
- Long getId()
 
- Description:
- Represents a player within the context of a game.
- should cease to exist upon termination of a game.
 
- Playershould implement- PlayerInterface
- Playerobjects should be created within the context of a game.
- Description:
- Represents a game which handles some type of player.
 
- should be parameterized with a generic type whose upper bound is PlayerInterface.- e.g. - SomePlayerTypeis a subclass ofPlayerInterface.
- This restricts the types of players this game can interact with.
 
- e.g. - 
- GameInterfaceshould declare each of the following methods:- TypeOfPlayer[] getPlayers()
- TypeOfPlayer getPlayer(Long playerId)
- void addPlayer(TypeOfPlayer player)
- void removePlayer(TypeOfPlayer player)
- Boolean contains(TypeOfPlayer player)
 
- 
Description: - GameEngineInterfaceis a contract which ensures a specific type of- GameEngineoperates on a specific type of- Playerand a specific type of- Game
 
- 
should be parameterized with two generic types - GameTypePlayera sub class of- PlayerInterface
- GameTypea sub class of- GameInterface<GameTypePlayer>
 
- 
should declare three method signatures - GameType getGame()- return the composite Game object to the client.
 
- void evaluateTurn(GameTypePlayer player)- evaluate the turn of a player,
 
- void run()- begin game
 
 
- Description
- GameEngineensures all sub-classes provide a- Gameobject upon instantiation.
 
- should be parameterized with two generic types
- GameTypePlayera sub class of- PlayerInterface
- GameTypea sub class of- GameInterface<GameTypePlayer>
 
- should implement a GameEngineInterface<GameType, GameTypePlayer>
- should defer the definition of evaluateTurnandrunto sub-classes.
- Description
- Contract which ensures that a class enforces some aspect of waging money.
 
- Go fish is a friendly game and should not involve gambling.
- BlackJackand- GoFishare both Card Games and should therefore inherit from a common- CardGame.
- Any common logic or fields between the games should live CardGame class, not BlackJack nor GoFish.
- You must have a completed and approved UML diagram before you proceed to do any development
- You can either work by yourself, or in a group no bigger than 3.
- All public methods should be tested.