组成c ++,我做得对吗?

时间:2013-11-19 04:58:49

标签: c++ class aggregation composition

这次我用我该死的自己写了一个程序,但我只是想确保我做得对,如果有人有任何建议要改进它

a)定义并实现由以下UML图描绘的Die类,为一个骰子(骰子的单数)创建一个ADT,其中面部显示的值介于1和die上的numberOfFaces之间。定义一个双参数构造函数,默认值为6个面,1个面值。定义并实现roll()方法,通过生成1和numberOfFaces之间的随机数并将该数字存储在faceValue中来模拟骰子的滚动。提供一个存取器来返回模具的面值和print()方法来打印模具的面值。

b)使用composition来设计一个由两个六面Die对象组成的PairOfDice类。使用main()函数创建一个驱动程序,将PairDice对象滚动1000次,然后计算出显示的蛇眼(即两个)和盒子车(即两个六个)的数量。

die.h

#ifndef DIE_H
#define DIE_H

class die {

private:
    int numberOfFaces;
    int faceValue;
public:
    die();
    die(int, int);
    int roll();
    void print();

};
 #ENDIF

die.cpp

#include "die.h"
#include<iostream>
#include<ctime>
#include<random>
using namespace std;

die::die()
{
    numberOfFaces=6;
    faceValue=1;
}

die::die(int numOfFaces, int faceVal)
{
    numberOfFaces=numOfFaces;
    faceValue=faceVal;
}

int die::roll()
{
    faceValue=rand()%numberOfFaces;
    return faceValue;
}

void die::print()
{
    cout << faceValue << endl;
}

pairOfDice.h

#include "die.h"
#ifndef PAIROFDICE_H
#define PAIROFDICE_H

class pairOfDice :
    public die
{
private:
    die die1;
    die die2;
    int value1;
    int value2;
    int total;
public:
    pairOfDice();
    int roll();
};

#endif

pairOfDice.cpp

#include "pairOfDice.h"

pairOfDice::pairOfDice()
    :die(6,1)
{
    value1=1;
    value2=1;
    total=value1+value2;
}

int pairOfDice::roll()
{
    value1=die::roll();
    value2=die::roll();
    total=value1+value2;
    return total;
}

的main.cpp

#include"pairOfDice.h"
#include<iostream>
using namespace std;

int main()
{
    int rolls=0, total=0, snakeEyes=0, boxCars=0;
    pairOfDice dice;

    while(rolls<1000)
    {
        total = dice.roll();

        if(total==2)
            snakeEyes++;
        else if(total==6)
            boxCars++;
        else
            rolls++;
    }

    cout << rolls << " " << snakeEyes << " " << boxCars << endl;
    system("pause");
    return 0;
}

0 个答案:

没有答案