设计一个动物园,里面有笼子(cage),狮子(lion),老鼠(mice)等等,动物分成两类,一部分是食肉动物(carn),另外一部分是素食动物(herb),另外每个动物有捕食,被捕食列表。请问如何设计类素食动物阻止加入捕食列表,并且强制食肉动物必须加入捕食列表?
解决方案 »
- try语句抛不抛异常finally里的程序都要执行吗?
- 请教 java的一个问题 急急急!
- 在java中怎么把Date类型对象转换成Calendar类型的对象
- Graphics是在何处被实例化?对于windows版jdk来说,DrawLine等操作是在何处实现?
- 为什么抽象方法没有实现, 为什么可以调用的,而且能够实现其应有的功能?
- 一个关于crypto的问题
- jar路径问题。
- 请问接口Comparator和Comparable的区别及使用场合? 多谢!
- [Java新手]:一个关于JDK环境变量的配置问题,调试一下午未成功,请大侠指点。
- 请教各位达人,怎样往jre里加一个新的字体?
- web网络拓扑图技术比较
- 求教,java发送邮件。
2。定义一个Carnivorous(肉食),和一个Phytozoon(素食) 继承至Animal类
3。然后你要再定义动物的话,可以分别继承上面两个类 三代关系,不算太多,在设计中应该还是可以接受。 坐等楼下高见
}abstract class Animal{
FeedingHabits feedingHabits; // 食性
}class Carnivorous implements FeedingHabits{} //肉食
class Phytozoon implements FeedingHabits{} //素食
public enum FeedingHabits {
CARNIVOROUS,
PHYTOZOON
}
import java.util.List;//定义动物类
public abstract class Animal {
//类型
private FeedingHabits habits;
private String name;
//生物链列表,被捕食,或者捕食
private List<Animal> list;
public abstract void run();
public abstract void eat();
public List<Animal> getList() {
return list;
}
public void setList(List<Animal> list) {
this.list = list;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public FeedingHabits getHabits() {
return habits;
}
public void setHabits(FeedingHabits habits) {
this.habits = habits;
}
}
//最后定义一个笼子
import java.util.ArrayList;
import java.util.List;public class Cage { private double width;
private double height;
private double length;
private List<Animal> list = new ArrayList<Animal>(); //装新动物
public boolean putAnimal(Animal a){
if(list.size() == 0){
list.add(a);
return true;
}
for(Animal an : list){
if(null != an.getList() && an.getList().contains(a)){
return false;
}else{
list.add(a);
}
}
return true;
}
public List<Animal> getAnimals(){
return list;
}
public double getWidth() {
return width;
} public double getHeight() {
return height;
} public double getLength() {
return length;
}
public void setWidth(double width) {
this.width = width;
} public void setHeight(double height) {
this.height = height;
} public void setLength(double length) {
this.length = length;
}}
2.肉食动物类
3.捕食关系类,其中有两个成员,一个成员是吃者,必须是肉食动物;另一个成员是被吃者。通过一个List或其它结构存储所有的捕食关系对象。
在将两只动物放在同一个笼子时,检查用其构造的捕食关系是否存在,只有不存在才能放在一块儿。不过,到最后还是无法阻止一些不合常理的情况出现……
//生物链列表,被捕食,或者捕食
private List<Animal> list;
这里用HashMap来代替List,被捕食或者捕食的动物作为Key值,而Value值作为标记被捕食或捕食;
或者直接用两个List来区分被捕食列表和捕食列表。
最后还应该重写add函数,根据动物类型(肉食、素食),素食动物不让添加