2015-09-28 73 views
-1

多个子类我还是很新的C++(初一学期),和我目前正在设计使用到目前为止,我们学到的一切程序。我决定将其基于货运分拣和财务方面,因为这也是我在uni之外的工作。C++用相同的变量

我遇到的问题是,我现在的设计有三个子类,它们内部的状态/行为完全相同(下面的推理),讲师说这不是他们想要的,因为它没有' t显示使用多态;我确实有另一个处理员工对象的层次结构,尽管如此。

类似的小类(挎包/纸箱/托盘)背后的想法是,它们适用于不同尺寸的货物,因此在施工时将为他们计算每公斤不同的美元价值。由于这个原因,他们每个人都有不同的尺寸限制。这部分代码的基本运行时视图如下:

  • 运行程序。
  • 称为递归函数,询问用户是否要加运费。然后
  • 如果是,功能询问L/W/H和重量测量,以及 地址等
  • 函数调用任一挎包,纸箱或托盘构造 根据给定的测量值。 (即,如果重量超过40kg,则不管其他测量如何,都称为托盘)。
  • 询问用户是否需要更多运费。如果是,重复循环。
  • 如果不是,它会询问其他的东西。

我的问题是希望相当简单。是否有任何功能性问题可以/将会由于使子类使用相同的状态/行为而引起?

我知道我可以把它们都为一类,然后有价计算以后,但我的印象是,这将花费更长的时间做,因为它需要检查在创建的每个货运对象。

谢谢你的时间。

+1

一个精简目前你正在做什么*在代码*会说话比文字描述更加的版本,因为它代表我无法理解的问题。 – user657267

+0

我还没有真正开始编码,因为他们预计在我们开始之前将软件计划标记出来。如果这会有所帮助,我可以进入更多细节,我只是不想在OP中写一本书。 –

+0

你能否至少给出一个类层次结构和接口的例子? – user657267

回答

0

是否有任何功能上的问题可以/将会导致子类使用相同的状态/行为?

如果您多次实现相同的功能,当您的代码库增长时,可能会变得非常难以维护。随着时间的推移,有人会通过只更改三个计算中的一个来引入错误。这几乎是“Do not repeat yourself”的情况。

你的讲师是正确的:你的code不使用多态。因此,在进行使用多态的,我希望一个抽象基类的行中:

class freight { 
public: 

    freight(const std::string& address, float weight) 
    : address_(address) 
    , weight_(weight) 
    {} 

    // do not forget the virtual dtor for polymorphic classes 
    virtual ~freight() {} 

    // subclasses might add more weight to the content 
    virtual float weight() { return weight_;); 

    virtual float cost() 
    { 
    return weight()*costPerKg(); 
    } 

    virtual float costPerKg() = 0; 
    virtual float length() = 0; 
    virtual float height() = 0; 
    virtual float width() = 0; 

protected: 
    std::string address_; 
    float weight_; 
} 

在更复杂的系统,你甚至可能要到界面,从基实现分离。

+0

感谢您的回答。我感觉最大的问题是管理系统,因为它变得越来越大。我知道我链接的代码并没有使用多态,这个想法只是为了让不同的成本计算在一个类中工作,这在OP的评论中已经解释过了。 –

相关问题