Question
Design a Generic Deck of Cards
Solution
A simple design:
enum Suit {
HEART, DIAMOND, SPADES, CLUBS;
}
class Deck {
List<Card> deck;
}
class Card {
Suit suit;
int num;
}
A more complex design:
enum Suit {
HEART, DIAMOND, SPADES, CLUBS;
}
class Deck<T extends Card> {
List<Card> deck;
public void shuffle() {
};
}
abstract class Card {
boolean available;
Suit suit;
int num;
public boolean isAvailable() {
return available;
};
}
class Hand<T extends Card> {
List<Card> cards;
public int score() {
int score = 0;
for (Card c : cards) {
score += c.num;
}
return score;
}
public void addCard(T card) {
cards.add(card);
}
}
// Now use the above generic Data Structure to make a
// Blackjack Game
class Blackjack extends Hand<BlackJackCard> {
}
class BlackJackCard extends Card {
}