Допустим, мы программируем простую игру в покер.
class Card
{
public:
Card(Suit s, Rank r);
enum Suit getSuit();
enum Rank getRank();
void printCard();
private:
Suit suit;
Rank rank;
};
class Deck
{
public:
Deck();
/* either friend class Dealer; or should Dealer's class function that
manipulates deck assigned here? or make private deck data public?? */
private:
std::vector<Card> deck;
};
class Player
{
public:
int raise();
int bet();
Card fold();
void check();
private:
Card hand;
int money;
};
class Dealer
{
public:
Dealer();
void DealCardsToPlayers(Deck& d);
void Shuffle(Deck& d);
Player evaluateWinner();
private:
int collectPot();
int pot;
};
В реальном мире сама колода не знает, что и как она должна вести, и дилер будет определять, где и как картыдолжен вести себяНо я не уверен, что это хороший дизайн в мире программирования.
Где должна быть функция класса, которая манипулирует данными Дека?