это мой текущий код для хранения комнат (он компилируется отлично), но в 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();
}
}
Класс оборудования может быть любым. Предположим, что "Оборудование" -class имеет строку, называемую "имя", как атрибут
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") );
на ваш ранее инициализированный объект комнаты -class, вы получите
"Added new equipment: Chair"
Надеюсь это немного поможет.
PS: Код не тестируется (возможно, там где-то скрывается синтаксическая ошибка)
Вы можете создать новый класс 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
, например, код выше.
currentEquipment
в addEquipment(String newEquipment, String currentEquipment)
?!
addEquipment
будет методом , а не переменной, какsetEquipmentList
. Это указывает на наличие списка оборудования (объектов), содержащегося вRoom
в который можно добавить отдельные элементы оборудования (то есть объекты типа «Equipment
). Вам это поможет?