PairOfDice示例

      本示例是写给目前上我JAVA课程的学生的,其他初学者亦可参考。

      程序题目:使用本章定义的Die类设计并实现类PairOfDice,该类由两个Die对象组成。定义一些方法设定并得到每一个骰子的值,一个方法掷骰子及一个方法返回当前两个骰子值的总和。创建驱动类RollingDice2实例化并使用PairOfDice对象。
      教材(JAVA程序设计教程,第七版,John Lewis等著,罗省贤等译,电子工业出版社)中定义的Die类如下:
 
  
  
  
  
  1. //********************************************************************  
  2. //  Die.java       Author: Lewis/Loftus  
  3. //  
  4. //  Represents one die (singular of dice) with faces showing values  
  5. //  between 1 and 6.  
  6. //********************************************************************  
  7.  
  8. public class Die  
  9. {  
  10.    private final int MAX = 6;  // maximum face value  
  11.  
  12.    private int faceValue;  // current value showing on the die  
  13.  
  14.    //-----------------------------------------------------------------  
  15.    //  Constructor: Sets the initial face value.  
  16.    //-----------------------------------------------------------------  
  17.    public Die()  
  18.    {  
  19.       faceValue = 1;  
  20.    }  
  21.  
  22.    //-----------------------------------------------------------------  
  23.    //  Rolls the die and returns the result.  
  24.    //-----------------------------------------------------------------  
  25.    public int roll()  
  26.    {  
  27.       faceValue = (int)(Math.random() * MAX) + 1;  
  28.  
  29.       return faceValue;  
  30.    }  
  31.  
  32.    //-----------------------------------------------------------------  
  33.    //  Face value mutator.  
  34.    //-----------------------------------------------------------------  
  35.    public void setFaceValue (int value)  
  36.    {  
  37.       faceValue = value;  
  38.    }  
  39.  
  40.    //-----------------------------------------------------------------  
  41.    //  Face value accessor.  
  42.    //-----------------------------------------------------------------  
  43.    public int getFaceValue()  
  44.    {  
  45.       return faceValue;  
  46.    }  
  47.  
  48.    //-----------------------------------------------------------------  
  49.    //  Returns a string representation of this die.  
  50.    //-----------------------------------------------------------------  
  51.    public String toString()  
  52.    {  
  53.       String result = Integer.toString(faceValue);  
  54.  
  55.       return result;  
  56.    }  
  57. }  

 (Die.java)

      使用这个类创建的PairOfDice类如下:
 
  
  
  
  
  1. public class PairOfDice  
  2. {  
  3.     //定义两个骰子对象  
  4.     private Die firstDie, secondDie;  
  5.       
  6.     //构造方法,初始化两个骰子对象  
  7.     public PairOfDice(Die die1, Die die2)  
  8.     {  
  9.         firstDie = die1;  
  10.         secondDie = die2;  
  11.     }  
  12.  
  13.     //获得第一个骰子  
  14.     public Die getFirstDie() {  
  15.         return firstDie;  
  16.     }  
  17.  
  18.     //设置第一个骰子  
  19.     public void setFirstDie(Die firstDie) {  
  20.         this.firstDie = firstDie;  
  21.     }  
  22.  
  23.     //获得第二个骰子  
  24.     public Die getSecondDie() {  
  25.         return secondDie;  
  26.     }  
  27.  
  28.     //设置第二个骰子  
  29.     public void setSecondDie(Die secondDie) {  
  30.         this.secondDie = secondDie;  
  31.     }  
  32.       
  33.     //获得第一个骰子的面值  
  34.     public int getFirstDieFaceValue()  
  35.     {  
  36.         //直接调用它的getFaceValue()方法即可  
  37.         return firstDie.getFaceValue();  
  38.     }  
  39.       
  40.     //设置第一个骰子的面值  
  41.     public void setFirstDieFaceValue(int value)  
  42.     {  
  43.         //直接调用它的setFaceValue()方法即可  
  44.         firstDie.setFaceValue(value);  
  45.     }  
  46.       
  47.     //获得第二个骰子的面值  
  48.     public int getSecondDieFaceValue()  
  49.     {  
  50.         //直接调用它的getFaceValue()方法即可  
  51.         return secondDie.getFaceValue();  
  52.     }  
  53.       
  54.     //设置第二个骰子的面值  
  55.     public void setSecondDieFaceValue(int value)  
  56.     {  
  57.         //直接调用它的setFaceValue()方法即可  
  58.         secondDie.setFaceValue(value);  
  59.     }  
  60.       
  61.     //抛骰子  
  62.     public void roll()  
  63.     {  
  64.         //把两个骰子各抛一次  
  65.         firstDie.roll();  
  66.         secondDie.roll();  
  67.     }  
  68.       
  69.     public int getFaceValueSum()  
  70.     {  
  71.         //获得两个骰子的面值之和,分别调用它们的getFaceValue()方法  
  72.         return firstDie.getFaceValue() + secondDie.getFaceValue();  
  73.     }  
  74.  
  75.     //toString方法,返回对象的字符串信息  
  76.     //对象被打印或与字符串拼接时被自动调用  
  77.     public String toString()  
  78.     {  
  79.         String string = "第一个骰子的面值:" 
  80.                         + getFirstDieFaceValue()  
  81.                         + ";第二个骰子的面值:" 
  82.                         + getSecondDieFaceValue()  
  83.                         + ";两个骰子的面值和:" 
  84.                         + getFaceValueSum();  
  85.  
  86.         return string;  
  87.     }  
  88.  

(PairOfDice.java)

      驱动类RollingDice2如下:
 
  
  
  
  
  1. public class RollingDice2  
  2. {  
  3.     public static void main(String[] args)  
  4.     {  
  5.         //调用构造方法,创建一个PairOfDice对象  
  6.         PairOfDice pair = new PairOfDice(new Die(), new Die());  
  7.         System.out.println("设定骰子的面值前");  
  8.         System.out.println("第一个骰子的面值:"   
  9.             + pair.getFirstDieFaceValue());  
  10.         System.out.println("第二个骰子的面值:"   
  11.             + pair.getSecondDieFaceValue());  
  12.         System.out.println("两个骰子的面值和:"   
  13.             + pair.getFaceValueSum());  
  14.  
  15.         //设定第一个骰子的面值  
  16.         pair.setFirstDieFaceValue(3);  
  17.         //抛第二个骰子  
  18.         pair.getSecondDie().roll();  
  19.  
  20.         System.out.println("设定第一个骰子的面值和抛第二个骰子后");  
  21.         System.out.println("第一个骰子的面值:"   
  22.             + pair.getFirstDieFaceValue());  
  23.         System.out.println("第二个骰子的面值:"   
  24.             + pair.getSecondDieFaceValue());  
  25.         System.out.println("两个骰子的面值和:"   
  26.             + pair.getFaceValueSum());  
  27.  
  28.         //抛骰子  
  29.         pair.roll();  
  30.         System.out.println("抛骰子后");  
  31.         //直接调用pair的toString方法打印相关信息  
  32.         System.out.println(pair);  
  33.     }  

(RollingDice2.java)

      把这三个文件放在同一个目录下,编译、运行结果如下:

      注意:抛骰子是随机生成骰子面值(faceValue),因此每次运行结果一般都不一样。

      程序很简单,主要意义在于培养面向对象的思维习惯。

你可能感兴趣的:(java,示例,初学者,PaifOfDice)