我在C++中做了一个小任务,在这个任务中,我必须在我选择的领域中使用虚拟函数和继承等概念。我正在Linux中实现包管理器的原型。
我有基类包,它有package_id、名称、版本、依赖项等属性。有两种类型的包-- MetaPackages和ConcretePackages --它们的安装和删除方式不同。
我正在考虑将包中的安装和删除方法声明为虚拟的。当将这些包存储在数据文件中时,我可以知道存储的包是元包还是具体包。
我不知道该如何设计这个。谁能给我指点资源好让我更好地学习这些东西。
我们的课程里有格雷迪布奇,老实说,读起来更难理解了。
发布于 2011-10-21 13:21:52
我正在考虑将包中的安装和删除方法声明为虚拟的。
听起来是个好主意。
当将这些包存储在数据文件中时,我可以知道存储的包是元包还是具体包。
你为什么要知道?多态性的要点(可能是这个特定的练习)是,对象的用户不需要知道它的具体类型,只需调用它的方法即可。如果上述方法遵循基接口定义的“契约”,则它们的实现细节对调用方并不重要。
您应该根据元包和具体包的特性在每个具体子类中实现install和remove方法。然后,包的安装程序只需要遍历包的集合,并在每个包上调用相应的方法。
https://softwareengineering.stackexchange.com/questions/115576
复制相似问题