Object design for simulating Blackjack
We'll use elements of the game like the player hand and card as examples of object modeling. However, we won't design the entire simulation. We'll focus on elements of this game because they have some nuance but aren't terribly complex.
We have a simple container: one hand object will contain zero or more card objects.
We'll take a look at the subclasses of Card
for NumberCard
, FaceCard
, and Ace
. We'll take a look at a wide variety of ways to define this simple class hierarchy. Because the hierarchy is so small (and simple), we can easily try a number of implementation alternatives.
We'll take a look at a variety of ways to implement the player's hand. This is a simple collection of cards with some additional features.
We also need to look at the player as a whole. A player will have a sequence of hands as well as a betting strategy and a Blackjack play strategy. This is a rather complex composite object.
We'll also take a quick look at the deck of cards that cards are shuffled and dealt from.