2015-10-26 3 views
1

Это мой первый пост на бирже стека, так что я не уверен, что вам нужно, но вот мой вопрос:Проблемы, связанные с методом в инвентаризации трекера

Я создаю трекер инвентаря для моего класса Java и I Я столкнулся с проблемой, когда я не могу использовать метод addItem (Item newItem), потому что класс Inventory не является статическим и не имеет конструктора. У нас есть диаграмма UML uml diagram

Мы должны работать, и он не включает конструктор для инвентаря и ничего не говорит о статике.

Я не совсем уверен, что еще вам нужно, но любая помощь будет принята с благодарностью!

Спасибо!

public class InventoryTrackerInterface { 

    public Inventory inv; 

    public static void main(String[] args) { 
     //test item 
     Item b1 = new Item("abc",1,123,"01345"); 
    } 
} 

public class Inventory { 

    private Item[] itemArray; 
    private int totalItems = 0; 

    public int getTotalNumberOfItems() { 
     return totalItems; 
    } 

    public Item getItem(int index) { 
     if (index < 0 || index >= totalItems) { 
      return null; 
     } else { 
      return itemArray[index]; 
     } 
    } 

    public void addItem(Item newItem) { 
     if (newItem == null) { 
      System.out.println("Item not added."); 
     } else { 
      itemArray[totalItems] = newItem; 
      totalItems++; 
     } 
    } 

    public void saveInventoryToFile(String fileName) { 
    } 

    public void loadInventoryFromFile(String fileName) { 
    } 
} 

public class Item { 

    private String name; 
    private int quantity; 
    private double price; 
    private String upc; 

    private Item() { 



    } 


    public Item(String name, int qty, double price, String upc) { 



    } 


    public String getName() { 

     return name; 

    } 


    public int getQuantity() { 

     return quantity; 

    } 

    public double getPrice() { 

     return price; 

    } 

    public String getUPC() { 

     return upc; 

    } 
} 
+0

Добро пожаловать в StackOverflow. Пожалуйста, покажите код. – ravi

ответ

1

Вам не нужно явно определять конструктор для создания экземпляра класса. В таких случаях автоматически создается конструктор по умолчанию. UML-диаграммы обычно указывают только конструкторы в тех случаях, когда вам понадобится параметр с параметрами, как в случае с Item.

Вы можете либо определить ваше имущество инв как статические:

public class InventoryTrackerInterface 
{ 
    public static Inventory inv; 

    public static void main(String args[]) 
    { 
     // Test items 
     Item b2 = new Item("abc",1,123,"01345"); 
     Item c2 = new Item("dfe",2,456,"56789"); 

     // Inventory object 
     inv = new Inventory(); 

     inv.addItem(b2); 
     inv.addItem(c2); 

    } 
} 

или доступ к нему через экземпляр InventoryTrackerInterface:

public class InventoryTrackerInterface 
{ 
    public Inventory inv; 

    public static void main(String args[]) 
    { 
     // Test items 
     Item b2 = new Item("abc",1,123,"01345"); 
     Item c2 = new Item("dfe",2,456,"56789"); 

     InventoryTrackerInterface instance = new InventoryTrackerInterface(); 

     // Inventory object 
     instance.inv = new Inventory(); 

     instance.inv.addItem(b2); 
     instance.inv.addItem(c2); 

    } 
} 
+0

Я не думаю, что InventoryTrackerInterface litterally означает интерфейс в этом случае, потому что мы еще не перешли интерфейсы. Также вы не можете иметь конструкторы в интерфейсах? По + main() он означает public static void main, потому что эта диаграмма была создана моим профессором, и он всегда ссылается на это как на основной метод. –

+0

Вы правы, хотя я не согласен с именованием. Отредактированный мой ответ должен быть тем, что вам нужно. – kskyriacou

+0

Исключение в теме "main" java.lang.Error: Неразрешенные проблемы с компиляцией: Невозможно сделать статическую ссылку на нестатическое поле inv на InventoryTrackerInterface.main (InventoryTrackerInterface.java:19) –

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