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

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

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

标红的部分为核心,其实面向对象的思维这个里面体现的不太好,总之慢慢改进吧,马士兵老师说了,设计没有一步到位的~~ 吐舌头
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值