面向对象的“母牛生小牛”

来源:互联网 发布:vue.js v bind 编辑:程序博客网 时间:2024/05/19 03:20

学习面向对象,遇到一道题:农场一头小母牛,母牛五岁产母牛,每年生头小母牛,二十年有多少牛。做了一下:

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

标红的部分为核心,其实面向对象的思维这个里面体现的不太好,总之慢慢改进吧,马士兵老师说了,设计没有一步到位的~~吐舌头