永发信息网

java问题-农夫果园 (高手来)

答案:2  悬赏:60  手机版
解决时间 2021-05-18 11:22


设计题目:农夫果园
一个农场,专门种植销售各类水果,在这个系统中需要描述下列水果:
葡萄:Grape
草莓:Strawberry
苹果:Apple
水果与其他的植物有很大的不同,水果最终是可以采摘食用的。那么一个自然的做法就是建立一个各种水果都适用的接口

,以便与农场里的其他植物区分开。水果接口规定出所有的水果都必须实现的接口,包括任何水果必须具备的方法:种植

plant(),生长grow(),收获harvest()。
Apple类是水果中的一种,因此它实现了水果接口所声明的所有方法。另外,由于苹果是多年生植物,因此多出一个

treeAge性质,描述苹果树的树龄。
Grape类是水果类的一种,也实现Fruit接口中所声明的所有方法。但由于葡萄分为有籽和无籽的两种,因此比通常的水果

多出一个seedless性质。
Strawberry类也是水果的一种,也实现了Fruit接口。
农场的园丁也是系统的一部分,自然要由一个合适的类来代表。这个类就是FruitGardener,它会根据农场老板的要求,

使用factory()方法创建出不同的水果对象,比如苹果(Apple),葡萄(Grape)或草莓(Strawberry)的实例。而如

果接到不合法的要求,会提示错误。
农场的市场调查员也是系统的一部分,也需要一个类代表,这个类是MarketInquirer,它通过inquire()调查今年市场

上哪一种水果热销。
农场的老板也是系统的一部分,仍需要一个类来代表,这个类是FruitBoss,他会根据市场调查员的反馈信息,通知农场

的园丁今年种植哪种水果。


我要代码,不要口水!谢谢!

最佳答案


interface Fruit
{
void grow();
void harvest();
void plant();
}



class Apple implements Fruit
{
private int treeAge;
public void grow() { }
public void harvest() { }
public void plant() { }
public int getTreeAge() { return treeAge; }
public void setTreeAge(int treeAge) { this.treeAge = treeAge; }
}



class Grape implements Fruit
{
private boolean seedless;


public void grow() { }
public void harvest() { }
public void plant() { }


public boolean getSeedless() { return seedless; }
public void setSeedless(boolean seedless) { this.seedless = seedless; }
}



class Strawberry implements Fruit
{
private boolean coteless;
public void grow() { }
public void harvest() { }
public void plant() { }
public boolean getCoteless() { return coteless; }
public void setCoteless(boolean coteless) { this. coteless = coteless; }


}
class FruitGardener
{

public static Fruit factory(String which) throws Exception
{
if (which.equalsIgnoreCase("apple")) { return new Apple(); }
else if (which.equalsIgnoreCase("strawberry")) { return new Strawberry(); }
else if (which.equalsIgnoreCase("grape")) { return new Grape(); }
else { throw new Exception("Bad fruit request"); }
}
}




全部回答

//

public interface Fruit{ void plant(); void grow(); void harvest(); int getNumber(); }

//

class Apple implements Fruit { public Apple(){}

public Apple(int num){ number = num; }

public void plant(){ System.out.println("苹果已种植!"); }

public void grow(){ System.out.println("苹果正在成长!"); }

public void harvest(){ System.out.println("苹果已经收获!"); }

public void setTreeAge(int treeAge){ this.treeAge = treeAge; }

public int getTreeAge(){ return treeAge; }

public void setNumber(int num){ number = num; }

public int getNumber(){ return number; } private int treeAge; private int number; }

//

class Grape implements Fruit { public Grape(){}

public Grape(int num){ number = num; if(num%2==0) setSeedLess(true); else setSeedLess(false); }

public void plant(){ System.out.println((isSeedLess()?"有子":"无子")+"葡萄种了"+number); }

public void grow(){ System.out.println("葡萄正在成长!"); }

public void harvest(){ System.out.println("葡萄已经收获!"); }

public void setSeedLess(boolean seedLess){ this.seedLess = seedLess; }

public boolean isSeedLess(){ return seedLess; }

public void setNumber(int num){ number = num; }

public int getNumber(){ return number; }

private boolean seedLess; private int number; }

//

class Strawberry implements Fruit { public Strawberry(){}

public Strawberry(int num){ number = num; }

public void plant(){ System.out.println("草莓已种植!"); }

public void grow(){ System.out.println("草莓正在成长!"); }

public void harvest(){ System.out.println("草莓已经收获!"); }

public void setNumber(int num){ number = num; }

public int getNumber(){ return number; } private int number; }

//

class FruitGardener{ private static Fruit getFruitFactoryInstance(String fruit,int num){ if(fruit.equalsIgnoreCase("apple")) return new Apple(num); else if(fruit.equalsIgnoreCase("grape")) return new Grape(num); else if(fruit.equalsIgnoreCase("strawberry")) return new Strawberry(num); else return null; }

public static void fruitFactory(String fruit,int num){ Fruit fruits = getFruitFactoryInstance(fruit,num); fruits.plant(); fruits.grow(); fruits.harvest(); } }

//

class MarketInquirer{

public String inquire(){ int appleNum = (int)(java.lang.Math.random()*1000); int grapeNum = (int)(java.lang.Math.random()*1000); int strawberryNum = (int)(java.lang.Math.random()*1000); max=max(appleNum,grapeNum,strawberryNum); if(max==appleNum){ System.out.println("市场调查员:今年苹果最热销!"); return "Apple"; } else if(max==grapeNum){ System.out.println("市场调查员:今年"+(max%2==0?"有子":"无子")+"葡萄最热销!"); return "Grape"; } else { System.out.println("市场调查员:今年草莓最热销!"); return "Strawberry"; } }

private int max(int x,int y,int z){ int max; if(y>x) max=y; else if(z>x) max=z; else max=x; return max; }

public int max; }

//

class FruitBoss { public static void main(String[] args) { MarketInquirer mi = new MarketInquirer(); String fruit = mi.inquire(); FruitGardener.fruitFactory(fruit,mi.max); } }

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我想问个很奇怪的问题关于QQ头像问题
笔陡的近义词是什么,笔陡的反义词是什么
梦幻西游69一线主封FC 速度得多少
潜江市潜江平价餐馆地址是什么,有没有知道的
How did we get的歌曲链接,放到空间做背景音
湘乡市湘潭湘乡农商银行(北正街)地址是什么,
普通的人应当怎么去生活~!
厨师的最底工资多少
新手求助,不小心点了六魔包里的初始设置了,怎
汉族宗教信仰的两个显著特点?
浙江大学的经济与金融国际班今年招多少?
卫东区平顶山中国银行(银鹰分理处)这个地址在
奥尼尔会去什么地方
怎样才是合理的玩电脑
请问0577-8067开头的号码所属地是温州哪里?
推荐资讯
大话西游孙悟空的台词,跪求英雄联盟齐天大圣
监利县荆州黄歇口镇便民服务中心怎么去啊,谁
放弃吧!人总是要丢下某些东西的...哎...
Aktf什么意思
哈尔滨哪有卖USB暖脚宝的?
饱读诗书学识渊博诗句,有关老师的具有渊博知
求淑熙的歌啦啦啦中文歌词
WEST LIFE解散了吗
哪里能看到意难忘第一部119-122集?
在哪里可以在线观看【电锯惊魂】1~7 集、
a tub of Haagen-Dazs什么意思
阿里巴巴企业口号,形容一个企业很正规 很专业
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?