农场一头小母牛,每年生头小母牛,母牛5岁产母牛,20年上多少牛?--java面向对象方式实现
2016-10-08 21:37
302 查看
1.分析:
1.1农场开始有一头具有生育能力(年龄大于5岁)的母牛,以后每年都会生小母牛,而小母牛5年长大后又能生小母牛,从面向对象的角度分析,生小母牛的能力,
属于母牛对象,我们可以把它定义为一个内部方法;农场容纳着母牛及生产的小母牛,我们可以在农场内部维护一个长度可变的容器(集合),存储所有的母牛;
随着时间的变化,母牛的年龄在变化,农场的母牛数量也在变化,我们可以在农场中定义一个随着时间变化,而同时改变农场属性(母牛数量)和母牛属性(年龄)
功能的方法。
1.2对象:农场和母牛(属性:年龄)
1.3对象的关系,农场和母牛是组合关系
2.把对象转换为类
2.1母牛对象(年龄属性age及生育小母牛方法produceCow)
public class Cow {
private int age;
public Cow(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Cow produceCow() {
if (age >= 5) {
return new Cow(1);
}
return null;
}
}2.2农场对象和母牛为组合关系,初始化了一头年龄为5的母牛,内部维护了一个母牛集合(cows),以及随着时间变化后获取母牛数量的方法getCows(int year)
public static void main(String[] args) {
Farm.getCows(20);
}
测试结果如下:
第1年奶牛数量:2
第2年奶牛数量:3
第3年奶牛数量:4
第4年奶牛数量:5
第5年奶牛数量:7
第6年奶牛数量:10
第7年奶牛数量:14
第8年奶牛数量:19
第9年奶牛数量:26
第10年奶牛数量:36
第11年奶牛数量:50
第12年奶牛数量:69
第13年奶牛数量:95
第14年奶牛数量:131
第15年奶牛数量:181
第16年奶牛数量:250
第17年奶牛数量:345
第18年奶牛数量:476
第19年奶牛数量:657
第20年奶牛数量:907
1.1农场开始有一头具有生育能力(年龄大于5岁)的母牛,以后每年都会生小母牛,而小母牛5年长大后又能生小母牛,从面向对象的角度分析,生小母牛的能力,
属于母牛对象,我们可以把它定义为一个内部方法;农场容纳着母牛及生产的小母牛,我们可以在农场内部维护一个长度可变的容器(集合),存储所有的母牛;
随着时间的变化,母牛的年龄在变化,农场的母牛数量也在变化,我们可以在农场中定义一个随着时间变化,而同时改变农场属性(母牛数量)和母牛属性(年龄)
功能的方法。
1.2对象:农场和母牛(属性:年龄)
1.3对象的关系,农场和母牛是组合关系
2.把对象转换为类
2.1母牛对象(年龄属性age及生育小母牛方法produceCow)
public class Cow {
private int age;
public Cow(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Cow produceCow() {
if (age >= 5) {
return new Cow(1);
}
return null;
}
}2.2农场对象和母牛为组合关系,初始化了一头年龄为5的母牛,内部维护了一个母牛集合(cows),以及随着时间变化后获取母牛数量的方法getCows(int year)
public class Farm { private static List<Cow> cows;//农场的奶牛群集合 //新建农场时的初始化,初始化一头具有生育能力的母牛(年龄5岁以上) static{ cows = new ArrayList<>(); Cow cow = new Cow(5); cows.add(cow); } //获取第year年上的母牛对象集合 public static List<Cow> getCows(int year){ for(int i=0;i<year;i++){ //奶牛场year年的变化,从第0年到第year年(共year年) List<Cow> tempCows = new ArrayList<>();//新一年变化,统计农场奶牛数量时,新建一个临时奶牛圈,圈住已有的奶牛和新生的奶牛 for(Cow cow:cows){ //遍历已有奶牛圈 tempCows.add(cow);//将原奶牛加入新奶牛圈 cow.setAge(cow.getAge()+1);//原奶牛年龄+1 Cow smalCow = cow.produceCow();//原奶牛自己判断自己年龄,如果到了生育期(5岁),自动生一头小奶牛,没到5岁,返回null if(smalCow!=null){ tempCows.add(smalCow);//将新生的小奶牛加入新奶牛圈 } } cows = tempCows;//统计所有奶牛结束,将临时奶牛圈中的所有奶牛赶入农场原有奶牛圈 System.out.printf("第%d年奶牛数量:%d%n",i+1,cows.size()); tempCows=null;//撤掉临时奶牛圈 } return cows;//返回第year年后农场的奶牛群 } }2.3测试
public static void main(String[] args) {
Farm.getCows(20);
}
测试结果如下:
第1年奶牛数量:2
第2年奶牛数量:3
第3年奶牛数量:4
第4年奶牛数量:5
第5年奶牛数量:7
第6年奶牛数量:10
第7年奶牛数量:14
第8年奶牛数量:19
第9年奶牛数量:26
第10年奶牛数量:36
第11年奶牛数量:50
第12年奶牛数量:69
第13年奶牛数量:95
第14年奶牛数量:131
第15年奶牛数量:181
第16年奶牛数量:250
第17年奶牛数量:345
第18年奶牛数量:476
第19年奶牛数量:657
第20年奶牛数量:907
相关文章推荐
- 面向对象设计题:“农场一头小母牛,每年生头小母牛。。。”的一种实现
- 有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
- 农场有头大母牛,每年生一小母牛,母牛5岁生母牛,20年后多少牛
- java语句实现数据库的增删查改(面向对象方式,以student为例)
- 一个农场有头母牛,现在母牛才一岁,要到四岁才能生小牛,四岁之后,每年生一头小牛,n年后有多少头小牛
- 面向对象方式解决比赛名单类问题(Java实现)
- 有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n
- 有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
- 程序设计题:农场一头小母牛_每年生头小母牛_面对象!
- 有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
- 农场有头大母牛,每年生头小母牛,小母牛五年后生小母牛,问20年后农场一共有多少头牛?(用面向对象的思想)
- java拼图--面向对象实现+数组实现。
- 浅谈Java面向对象和C语言的实现
- java对象和json数据转换实现方式1-使用json-lib实现
- Lua的面向对象实现方式
- 简易选项卡面向对象加事件委托方式实现
- Java对象表示方式2:XStream实现对对象的XML化
- java 实现List对象中按某种方式进行排序
- Java面向对象高级--继承的基本实现--extends
- 有一母牛,到4岁可生育,每年一头,所生均是一样的母牛,到15岁绝育,不再能生,20岁死亡,问n年后有多少头牛