在QQ游戏里,有一个QQ农场与牧场,在农场中有多种植物,在牧场中有多种动物,假设你是五级农、牧场主,试指出其有多少个类,并具体设计。所需要植物与动物的信息根据实际情况自行设计;根据植物与动物的关键字查找到相应的信息情况,并屏幕打印 ?

解决方案 »

  1.   

    哇,这么历害,具然这都想得出来,顶,我刚学JAVA ,有没有JAVA群啊,我想加起去。谢谢,我的QQ252628837
      

  2.   


    牧场         
    {
    牧场ID
    牧场名称
    }农场 
    {
    农场ID
    农场名称
    }植物类型表
    {
    植物类型ID
    植物类型名称
    }植物表
    {
    植物ID
    植物高低(植物属性字段不一一列举)
    植物类型ID
    坐标
    }动物类型表
    {
    动物类型ID
    动物类型名称
    }动物表
    {
    动物ID
    动物胖瘦(动物属性字段不一一列举)
    动物类型ID
    坐标
    }场主
    {
    场主ID
    场主类型ID
    }场主类型表
    {
     场主类型ID
      场主类型
    }这些表差不多能够表示了吧复杂一点的话三张表就行
     场主{
    场主ID
    场主类型
    牧场ID
    农场ID
     }场{
    场ID
    类型
    名称
     动植物ID
    }动植物{
    动植物ID
    类型
    名称
     坐标

    }这样的话后面维护就比较乱了 
      

  3.   

    根据面向对象思想,我设计了一个抽象模型,根据这个模型,你可以任意添加不同植物和动物。所涉及的类如下:
    public class User:应用程序类
    abstract class ProductManager:用于增删改查产品,这个类中应当有crud相应的方法
    public class DBManager:用于操作数据库abstract ProductFactory:抽象工厂类,用于创造抽象产品
    abstract Product:抽象产品,就目前而言,其下面的产品为Plant和Animal
    abstract Plant:植物抽象类
    abstrcat Animal:动物抽象类他们的具体实现如下(好像CSDN上面插图真不容易,等会插个图试试):
    public class User{
       private  ProductManager productManager;
       private  ProductFactory  productFactory;//具体应用时,应当是ProductFactory的具体子类
    //..应用程序具体的操作
    }public class ProductManager{
    private DBManager dbManager;//用于完成持久化操作,可能用在该类中的某些方法中
       public void add(Product product){}
       public void delete(Product product){}
       public void modify(Product product){}
       public  Product find(int id){}//查找时,可以传递其它类型的消息,也就是不同类型的参数
    }abstract class ProductFactory{//抽象工厂
    //可以定义一些公共属性或公共方法用于子类继承
    //该类的实现应当是创建具体产品(植物或动物实例)的具体工厂
    }abstract class DBManager{
    //完成实体的持久化的抽象方法
    }abstract class Product{
    //可以定义一些公共属性和公共方法供子类使用
    }
    abstract class Plant extends Product{
    //可以定义不同植物类的一些公共属性或公共方法供子类使用
    }
    abstract class Animal extends Product{
    //可以定义不同动物类的一些公共属性或公共方法供子类使用
    }
    需要说明的是:楼主可以用UML工具把上面的类的关系画出来,从图中就可以清楚的看到,这只是一个抽象模型。该模型提供了应用程序的扩展性,具体如下:
    (1)DBManager是抽象类,具体的实现可以按需要具体实现该DBManager.比如,我们可以使用不同的数据库,但是DBManager隐藏了底层的具体实现,因为我们可以使用不同的数据库来实现。
    (2)ProductFactory类是抽象类,此处用到抽象工厂方法,该抽象类的具体实现应当根据产品种类来确定有哪些具体的工厂类,比如现在应当有两个具体的工厂类:PlantFacotry类和AnimalFactory类。那为什么不用一个具体的类来创建全部的产品呢?我认为:如果我们加入一种产品,这将会导致我们修改该工厂类,以便创建新的产品,这样,加重了维护的难度。而如果用一个工厂类对应一种产品的话,那么当我们加进来一种产品,我们只用再加进一个工厂类就可以了,而不用去改已经存在的类,这样便于程序的维护和升级。可以去看看抽象工厂。但是也还有很多其它的方法来实现一个抽象工厂,比如通过配置文件等。
    (3)Product类对所有的产品进行的一次抽象,这样,我们就可以把不同的产品(植物或动物 或者其它种类)加入到已有系统而不改变已有的系统,而且也符命面向接口编程的思想。
    (4)Plant类和Animal类也是抽象类,理由同(3),这样,我们就可以在以后的升级中任意的加入新的Plant或Animal而不改变已有的系统,这样也完成了楼主你所说要加入新的Plant和Animal的想法。总之,以上是我个人的一些想法,如有更好的修改或扩展,希望和大家继续讨论。