此成员函数属于哪个类?哎呀

To which class does this member function belong? OOP

提问人:Jeremy Hansen 提问时间:11/14/2018 更新时间:11/14/2018 访问量:85

问:

假设我们正在编写一个简单的扑克游戏。

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;
};

在现实世界中,牌组本身不知道它应该表现什么或如何表现,庄家将处理牌应该表现的位置和方式。但我不确定这在编程世界中是否是一个好的设计。

操作 Deck 数据的类函数应该在哪里?

与 C++ OOP 语言无关

评论

0赞 Blood-HaZaRd 11/14/2018
涉及哪些纵的数据?桌上的牌还是什么?
0赞 felix 11/14/2018
个人意见:如果 Deck 将成为 Dealer 的数据成员(即组件),则 Deck 将 Dealer 声明为朋友,反之亦然。如果它们不是彼此的数据成员,则第三方应负责在它们之间传输数据。
0赞 Jeremy Hansen 11/14/2018
@Blood-HaZaRd 生成的套牌实例,其中包含 52 张牌的向量。
0赞 Yksisarvinen 11/14/2018
我不确定你的设计是什么样子的,但在我看来应该有一个 公共方法 ,它从中删除一张卡并返回它。 调用此方法并将接收到的传递给 。DeckCard drawCard()vectorDealerCardPlayer
0赞 Blood-HaZaRd 11/14/2018
@JeremyHansen:正如 Yksisarvinen 所说,这将取决于设计。我认为你必须对你的程序实体-关系-(compoisition/aggregaion)进行一些设计,并使用指针或其他任何东西对其进行转换,然后它可能会更清晰。

答: 暂无答案