黑马程序员技术交流社区

标题: 面向对象 [打印本页]

作者: 张稳    时间: 2014-4-13 19:55
标题: 面向对象
看到一个题:农场一头老母牛,每年生头小母牛,母牛5岁生母牛,二十年上多少牛。 用面向对象的思维写。这是我的,但觉得不是很好,麻烦大家写个更好的
  1. package CowQuestion;

  2. import java.util.*;

  3. public class MainClass {

  4.         /**
  5.          * @param args
  6.          */
  7.         public static void main(String[] args) {
  8.                 // TODO Auto-generated method stub
  9.                 List<Cow> cows=new ArrayList<Cow>();
  10.                 cows.add(new Cow(5));
  11.           Farm f=new Farm(0,cows);
  12.           f.past(20);
  13.           f.countCow();
  14.         }

  15. }
复制代码
  1. package CowQuestion;

  2. import java.util.*;

  3. public class Farm{
  4.         private List<Cow> cows;
  5.         private int year;

  6.         public List<Cow> getCows() {
  7.                 return cows;
  8.         }

  9.         public Farm(int year,List<Cow> cows) {
  10.                
  11.                 this.cows = cows;
  12.                 this.year = year;
  13.         }

  14.         public void setCows(List<Cow> cows) {
  15.                 this.cows = cows;
  16.         }

  17.         public int getYear() {
  18.                 return year;
  19.         }

  20.         public void setYear(int year) {
  21.                 this.year = year;
  22.         }
  23.         public void countCow(){
  24.                 System.out.println("有"+cows.size()+"头牛");
  25.         }

  26.         public void past(int time) {
  27.                 while (this.year < time) {
  28.                         this.year++;
  29.                         for (int i = 0; i < cows.size(); i++) {
  30.                                 Cow cow = cows.get(i);
  31.                                 Cow calf = cow.growUp();
  32.                                 if (calf != null) {
  33.                                         cows.add(calf);
  34.                                 }
  35.             
  36.                         }
  37.                 }
  38.         }
  39. }
复制代码
  1. package CowQuestion;

  2. public class Cow {
  3.         private int age;
  4.         private final static int bearingAge=5;

  5.         public Cow(int age) {
  6.                
  7.                 this.age = age;
  8.         }

  9.         public void setAge(int age) {
  10.                 this.age = age;
  11.         }

  12.         public int getAge() {
  13.                 return age;
  14.         }
  15.     public Cow growUp(){
  16.             age++;
  17.             if(this.age>=bearingAge)
  18.               return new Cow(0);
  19.             return null;
  20.     }
  21. }

复制代码






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2