序列图转换为Java代码:如何?

时间:2017-12-19 11:32:44

标签: java sequence-diagram

大家好。我实际上在使用这些序列图时遇到了一些麻烦。它说“所有动物都依赖于种族生活在自己的笼子里。”我真的需要帮助这个简单的图表,因为我真的不知道如何在我的Java程序中编写它。我确定它的大部分都是简单的。所以请帮帮我! 这里是图表:

enter image description here

Zookeeper类/ Mainclass:

package General;

import Zoo.Cage;

public class ZooKeeper {
    public static void main(String[] args){
        Cage cage1 =  new Cage();
   }
}

Cage class:

public class Cage {
    private String type;
    private ArrayList<Animal> cagedAnimals;

    public Cage(String type){
        this.type = type;
    }  

    public Cage() {
    }

    public Animal selectAnimal(){
        return null;
    }

    public void getCageType(){
    }

    public boolean addAnimal(Animal anAnimal){
        return true;
    }

    public ArrayList<Animal> getCagedAnimals(){
        ArrayList<Animal> i = new ArrayList<>();
        return i;
    }

    public void addReptileEggs(ArrayList<Egg> reptileEggs){
    }
}

Zoo类:

package Zoo;

import General.Animal;
import General.Egg;
import java.util.ArrayList;
import java.util.TreeSet`;
public class Zoo {
   private final String name;
   private TreeSet<Cage> cages;
   /* private ArrayList<Cage> cages;*/
   private String Zoo;
   private static Zoo instance = new Zoo();

   public Zoo() {
      this.name = "AnimalK";
   }

   public static Zoo getInstance() {
      if (instance == null)          {
         instance = new Zoo(); 
      }
      return instance; 
   }

}

1 个答案:

答案 0 :(得分:0)

您可以看到所有内容都发生在构造函数Cage()中:

public Cage() {
    Zoo z = Zoo.getInstance("ICO41A");
    boolean b = z.addCage(this);
}

请注意,z可能是一个字段,如果我们以后需要使用它。

Zoo现在:我们已经看到getInstance有一个String参数;我假设它是Zoo的名称,而不是一个静态实例,我们可以保持静态Map<String,Zoo>

public class Zoo {
   private static Map<String,Zoo> instances = new HashMap<>();

   public static Zoo getInstance(String name) {
      Zoo instance = instances.get(name);
      if (instance == null)          {
         instance = new Zoo(name);
         instances.put(name, instance);
      }
      return instance; 
   }

将名称传递给构造函数,并初始化Set cages(使用空HashSet)。我使用了HashSet而不是TreeSet,因为Cage不是Comparable

   private final String name;
   private final Set<Cage> cages = new HashSet<>();

   private Zoo(String name) {
      this.name = name;
   }

最后,方法addCage在集合中添加Cage

   public boolean addCage(Cage cage) {
       return cages.add(cage);
   }