【问题标题】:Class structure for an inventory control system库存控制系统的类结构
【发布时间】:2011-01-24 06:36:00
【问题描述】:

作为良好 OO 方法和设计的练习,我想知道在公司中建模库存控制的好方法是什么。问题描述是

一个。一家公司可以拥有不同类型的项目,例如文档(电子和物理)、计算机等,这些项目可能还有自己的子类型。

b.这些物品可以保存在商店中,可以分发给员工,可以邮寄出去等。电子文档可以一次通过电子邮件发送给很多人。

c。项目可能有某些限制,例如机密文件只能分发给可以访问的人/地方(例如,有机密许可的人或被允许存储这些文件的房间等)

有什么好的类结构可以用来模拟这种跟踪? (伪 C# 类结构或 c++ 会有所帮助)以及什么样的设计模式适合这样的任务

【问题讨论】:

标签: c# c++ design-patterns architecture oop


【解决方案1】:

回答您的问题需要对问题域进行深入调查。我认为没有普遍有效的方法。

不过,有些模式可能会出现。其中之一(顺便说一句,也是最难实现的一种)是类型/实例模式。根据我的经验,我假设您的库存应用程序必须跟踪的项目类型无法固定,并且您系统的用户必须能够随时创建和修改类型。这意味着您的系统需要处理两个级别的分类,而不是通常的一个;换句话说,您的系统将有类(在代码中)、这些类的实例(在运行时)和这些实例的实例(也在运行时)。

例如,如果您在代码中创建 DocumentType 类,您的用户将多次实例化它,创建报表、备忘录或手册等对象。然后,您的系统管理的每个单独的报告都将是 Report 的一个实例。每个单独的备忘录都是备忘录的一个实例。以此类推。

如果子类型(在我的示例中为 Report、Memo、Manual)不携带它们自己的属性或它们自己与其他信息的关系,这很容易实现。但是,如果它们需要特定的数据结构(属性和/或关联),那么问题就会变得更加困难,因为您需要在系统中模拟一个完整的面向对象的类型/实例引擎。

不过,这很有趣!

【讨论】:

    【解决方案2】:

    这里有一个初步建议可以帮助您入门:

    struct Item
    {
        // The requirements say everything is an item.
    };
    
    struct Document
    : public Item
    {
        // There are documents
    };
    
    struct Document_Physical
    : public Document
    {
        // Physical documents
    };
    
    struct Document_Electronic
    : public Document
    {
        // Electronic documents
    };
    
    struct Computer
    : public Item
    {
    };
    

    项目的内容及其方法取决于需求文档的解释。这是一种模式,可能还有其他模式。

    一些有用的设计模式:VisitorFactoryProducer-Consumer 等等。还要研究“重构”这个话题。

    【讨论】:

      猜你喜欢
      • 2012-12-03
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      • 2013-07-19
      • 2012-07-06
      • 2012-09-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多