【问题标题】:OOP real world exampleOOP 真实世界示例
【发布时间】:2013-11-04 02:12:24
【问题描述】:

我有一个基本的购物车模型,其中的产品基于数据库中的数据,其中包含 productID、productName、Price、Stock 列。然后我有一个项目类,它代表消费者选择订购的产品,产品 ID、产品名称、价格。然后我有 itemOrder 类,它使用 productID、ProductName、Price 和 getPrice() 引用项目。然后有一个 Cart 类,它保存 itemOrder 并定义了添加和删除 itemOrder 的方法。

在这些类中的任何一个或典型的购物车系统中,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
{

}

【问题讨论】:

  • 当您谈论如何使用这些对象协调进程之间的交互时,这个问题更合适。您可能需要检查物品清单上的库存并为物品清单付款,然后发送确认物品清单已发货,甚至添加对物品清单退款的功能。您列出的普通对象只是保存可以使用标准约定传递的信息的数据结构。 OO 和接口通常在控制对对象的访问和应用处理时发挥作用。

标签: c# class oop inheritance


【解决方案1】:

OOP 不需要继承(例如,参见discussion)。如果你的类对外界隐藏了内部细节,提供了一个客户端不能用来破坏对象的一致接口,并且每个类都很好地完成了一项工作,那么你就有了 OOP(在我个人看来)。

仅当两个类之间的关系满足Liskov Substitution Principle 时才使用继承:当且仅当 Child 是 Parent 时 Child 继承自 Parent。例如,当您实现一个接口时,就调用代码而言,新类就是该接口。

一个项目、一个产品和一个订单是三个不同的东西,它们都不能与其他东西互换。所有三个类都应该存在,但它们不应该通过继承相关联。 Carts、Items 和 Orders 可以通过引用或包含而不是继承来引用 Products 和彼此。

【讨论】:

    猜你喜欢
    • 2010-11-23
    • 2016-11-26
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    相关资源
    最近更新 更多