2015-03-26 4 views
1

Это мой текущий код для хранения комнат (он компилируется отлично), но в UML есть переменная с именем addEquipment, и есть еще один класс, называемый Оборудованием, которое нужно определить. У меня возникли проблемы, обертывая голову вокруг того, что я должен делать с этим. Должен ли я создавать и вызывать объект под названием «Оборудование»? что происходит в addEquipment?Создание объекта и его вызов

public class Room { 
    //begin variable listing 
    private String name; 
    private int id; 
    private int capacity; 
    private String equipmentList; 

    //begins get methods for variables 
    public String getName(){ 
     return name; 
    } 
    public int getID(){ 
     return id; 
    } 
    public int getCapacity(){ 
     return capacity; 
    } 
    public String getEquipmentList(){ 
     return equipmentList; 
    } 

    // Set the variables 
    public void setName(String aName){ 
     name=aName; 
    } 

    public void setID(int anID){ 
     id=anID; 
    } 

    public void setCapacity(int aCapacity){ 
     capacity=aCapacity; 
    } 

    public void setEquipmentList(String anEquipmentList){ 
     equipmentList=anEquipmentList; 
    } 

    public String addEquipment(String newEquipment, String currentEquipment){ 

    } 

    //Create room object 
    public Room(int capacity, String equipmentList) { 
     setCapacity(capacity); 
     setEquipmentList(equipmentList); 
    } 

    //Convert variables to string version of room 
    public String toString(){ 
     return "Room "+name+", capacity: "+capacity+", equipment: "+getEquipmentList(); 
    } 
} 
+0

'addEquipment' будет * * метод, а не переменная, так же, как' setEquipmentList'. Это указывает на наличие * списка * оборудования (объектов), содержащегося в «комнате», к которому могут быть добавлены отдельные единицы оборудования (т. Е. Объекты типа «Оборудование»). Это вам помогает? – JimmyB

ответ

0

Вы можете создать новый класс Equipment и изменить атрибуте equipmentList быть List:

public class Equipment { 
     private String name; 

     public Equipment(String name) { 
      this.name = name; 
     } 
} 

public class Room { 
    //begin variable listing 
    private String name; 
    private int id; 
    private int capacity; 
    private List<Equipment> equipmentList = new ArrayList<Equipment>(); 

    //begins get methods for variables 
    public String getName(){ 
     return name; 
    } 
    public int getID(){ 
     return id; 
    } 
    public int getCapacity(){ 
     return capacity; 
    } 
    public List<Equipment> getEquipmentList(){ 
     return equipmentList; 
    } 

    // Set the variables 
    public void setName(String aName){ 
     name=aName; 
     } 

    public void setID(int anID){ 
     id=anID; 
    } 

    public void setCapacity(int aCapacity){ 
      capacity=aCapacity; 
    } 

    public void setEquipmentList(List<Equipment> anEquipmentList){ 
     equipmentList=anEquipmentList; 
    } 

    public String addEquipment(String newEquipment, String currentEquipment){ 
     Equipment oneEquipment = new Equipment(newEquipment); 
     equipmentList.add(oneEquipment); 
    } 

    //Create room object 
    public Room() { 
     setCapacity(capacity); 
     setEquipmentList(equipmentList); 
    } 

    //Convert variables to string version of room 
    public String toString(){ 
     String capacity=String.valueOf(getCapacity()); 
     String room = "Room "+name+", capacity: "+capacity+", equipment:  "+getEquipmentList(); 
     return room; 
    } 
} 

В методе addEquipment, вы можете создать новое оборудование и добавить его в equipmentList, как код выше.

+1

Что такое 'currentEquipment' для' addEquipment (String newEquipment, String currentEquipment) '?! – JimmyB

+0

Спасибо! но есть ли способ сделать его массивом вместо списка? – Kieran

+1

Да, вы * можете * использовать массив. Но это довольно сложно, потому что массив, как правило, был бы изменен для новых элементов. Используйте ['ArrayList'] (http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html) как ваш« Список », и вы хороши. – JimmyB

0

Класс оборудования может быть любым. Давайте предположим, на «Оборудование» -класса имеет строку под названием «имя», как это атрибут

public class Equipment { 
    String name; 

    public Equipment(String name) { 
    this.name = name; 
    } 

    public String getName() { 
    return this.name 
    } 
} 

Когда вы расширяете свой номер класса запрашиваемым методом «addEquipment», вы можете сделать что-то вроде этого.

public class Room { 

    ... // Your code 

    private int equipmentIndex = 0; 
    private Equipment[] equipment = new Equipment[10]; // hold 10 Equipment objects 

    public void addEquipment(Equipment eq) { 
    if (equipmentIndex < 10) { 
     equipment[ equipmentIndex ] = eq; 
     equipmentIndex++; 
     System.out.println("Added new equipment: " + eq.getName()); 
    } else { 
     System.out.println("The equipment " + eq.getName() + " was not added (array is full)"); 
    } 
    } 
} 

Теперь, когда вы звоните

room.addEquipment(new Equipment("Chair")); 

на вашем ранее инициализирован объекте номер класса, вы получите

"Added new equipment: Chair" 

Надеются, что это помогает немного.

PS: Код untestet (может быть, скрывает синтаксическую ошибку где-то)

Смежные вопросы