2013-11-04 143 views
1

我有一個基本購物車模型,其中的產品基於來自數據庫的產品ID,產品名稱,價格,庫存列的數據。然後我有一個物品類,代表消費者選擇用productID,ProductName,Price訂購的物品。然後我有itemOrder類,它用productID,ProductName,Price和具有getPrice()的數量引用項目。然後有一個Cart類持有itemOrder並定義添加和刪除itemOrder的方法。OOP真實世界示例

在任何這些類別或典型的購物車系統中,OOP技術在哪裏發揮作用。

public class Product 
{ 
    public int productID { get; set; } 
    public string productName { get; set; } 
    ... 
} 
} 

public class Item : Product 
{ 

} 

public class ItemOrder : Item 
{ 
    public int itemQuantity { get; set; } 
    public double getPrice(int quantity, double price) 
    { 
     return price = price * quantity; 
    } 

} 
public class Cart 
{ 

} 
+0

當您討論如何編排使用這些對象的進程之間的交互時,此問題更加適合。您可能需要查看物品清單上的庫存並支付物品清單,然後發送物品清單已發貨的確認,甚至可以添加退還物品清單的功能。您列出的普通對象只是數據結構,用於存放可使用標準約定傳遞的信息。 OO和接口通常在控制對象的訪問和應用處理時發揮作用。 –

回答

2

OOP不需要繼承(請參閱,例如,discussion)。如果你的課程隱藏了來自世界的內部細節,呈現一個客戶端不能用來打破對象的一致界面,並且每個單獨做好一項工作,你就有OOP(以我個人的觀點)。

僅在兩個類之間的關係滿足Liskov Substitution Principle的情況下才使用繼承:Child從Parent繼承if和僅當 Child是父級。例如,當你實現一個接口時,就調用代碼而言,新類就是該接口。

的項目,產品和訂單三種不同的東西,他們都不是與他人互換。所有三個類都應該存在,但不應該通過繼承來關聯。購物車,物品和訂單可以通過引用或遏制來引用產品,而不是通過繼承。