学习面向对象,遇到一道题:农场一头小母牛,母牛五岁产母牛,每年生头小母牛,二十年有多少牛。做了一下:
Cow类:
public class Cow {
public int age;
public Cow(int age) {
super();
this.age = age;
}
public void growUp(Farm f) {
this.age++;
if (age > 5) {
f.addCow(new Cow(0));
System.out.println("age is :"+ age);
}
}
}
Farm类:
import java.util.ArrayList;
public class Farm {
public ArrayList<Cow> cows = null;
int count = 0;
public int getCount() {
return cows.size();
}
public void setCount(int count) {
this.count = count;
}
public void setCows(ArrayList<Cow> cows) {
this.cows = cows;
}
public void addCow(Cow c) {
cows.add(c);
}
public int year;
public void develop(int time) {
for (int i = 0; i < time; i++) {
year++;
int j = cows.size();
for (int k = 0; k < j; k++) {
Cow c = cows.get(k);
c.growUp(this);
}
}
}
}
尽量吧没用的get,set方法都去掉了,这是比较简单的版本了,测试程序如下:
import java.util.*;
public class Test {
public static void main(String[] args) {
ArrayList<Cow> cows = new ArrayList<Cow>();
Farm f = new Farm();
cows.add(new Cow(0));
f.setCows(cows);
f.develop(20);
System.out.println(f.getCount());
}
}