2012-05-28 13 views
3

Я изучаю платформу Play. Я cunfused около трех классов, которые представляют собой склад-акции модели данных элемента-продукт:Классы Java, которые зависят друг от друга

public class Product { 
    public Long ean; 
    public String name; 
    public String description; 
    public String toString() { 
    return name; 
    } 
} 

public class Warehouse { 
    public String name; 
    public List<StockItem> stock = new ArrayList<>(); 
    public String toString() { 
    return name; 
    } 
} 

public class StockItem { 
    public Warehouse warehouse; 
    public Product product; 
    public Long quantity; 
    public String toString() { 
    return String.format("%d %s", quantity, product); 
    } 
} 

Класса Склада зависит от класса StockItem. Класс StockItem зависит от класса Продукт и Склад.

Как понять такие отношения?

ответ

4

Warehouse - класс контейнера, и у него много предметов - StockItem. Так что Warehouse знает где-то StockItem и каждые StockItem знает, что Warehouse принадлежит.
Что-то вроде:

Warehouse warehouse = new Warehouse(); 
StockItem item1 = new StockItem(); 
item1.warehouse = warehouse; 
warehouse.stock.add(item1); 
1

Склад содержит много StockItems. Хотя проверка не выполняется, StockItem может принадлежать только одному складу. (Склад 1 --- много StockItem)

StockItem имеет специфический продукт (он не может быть 2 типа в то же время !!!). (StockItem many - 1 Product: обратите внимание, что у вас может быть много объектов StockItem одного и того же продукта)

1

Класс Склад зависит от класса StockItem. Класс StockItem зависит от класса продукта и склада.

Реализация Warehouse упоминает StockItem:

public class Warehouse { 
    ... 
    public List<StockItem> stock = new ArrayList<>(); 
    ... 
} 

таким образом зависит от этого класса. Без StockItem вы не сможете скомпилировать и использовать Warehouse. Вот как должно пониматься отношение.

То же самое касается StockItem против Product и Warehouse:

public class StockItem { 
    ... 
    public Warehouse warehouse; 
    public Product product; 
    ... 
} 

Без Product вы не смогли бы собрать и использовать StockItem.

+0

«Без StockItem вы не сможете скомпилировать» -> Возможно, вам стоит упомянуть, что без ** класса ** 'StockItem' вы не можете скомпилировать свой код. Потому что вы можете компилировать без объекта «StockItem». То же самое касается вашей последней строки: «Без' Product' »-> без ** класса **' Product' –

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