C ++的一些设计问题
|
我在这里遇到以下难题:我有几个类,比如说A,B,C和D。A具有公共接口,并且与B具有has-a关系(例如A具有类型为type的成员变量) B),而A的方法之一将返回此B对象,B只是一个暴露某些方法的类,C是另一个暴露其他方法的类,D是一个单例对象。 D的公共接口具有对C类对象的引用(如果需要,可以使用指针)。
因此,很显然,当我想在此步骤中绘制关系图时,我将在A和B之间建立一个关系,而C将被放在该图中,而与其他两个之间没有可见的关系。因此,这是基于标头(.h)文件的,该文件包含A,B,C类的声明。我现在对D有点困惑。
在另一端:
A和B的两种实现(在.cpp文件中)都严重依赖于从类C创建的对象(不,C不是标准的东西,例如列表,字符串,队列,而是我的应用程序中的另一个有意义的类)。
A和B的两个实现都将D单例与本地C对象一起使用。
这是我的问题:
我应该在A,B,C和D之间的类关系图上建立什么关系,而不要算出我已经确定的关系(A has-a B)?我对单例D与C类的关系特别感兴趣。
对于这种情况(接口在对象之间没有关系,因为没有关系,但是在实现中它们被大量使用),通常被接受的方法是什么?
如果我根据Java而不是C ++遇到相同的问题,将会有所不同(因为在Java中,与类相关的所有内容都在一个文件中,因此更容易了解类方法实际使用的是什么,而在C ++中,您通常只会看到标头)。
非常感谢您的指导。
没有找到相关结果
已邀请:
2 个回复
扇献隙
关于第二个问题:我认为绘制UML图(我想设计)的重点主要是抽象,因此忽略了细节。编写程序之后,尝试用UML表达完整的C ++程序毫无意义。您可以购买(尝试)为您执行此操作的程序,但我认为这些图表没有用。 第三个问题的答案是,在设计阶段,java和c ++实现的UML应该相等,或者至少是很大比例。设计是关于选择和连接设计模式等,并且这些与语言无关。当您开始详细说明图表以表示更多的实现细节(例如,使用的容器的类型等)时,所选的实现语言便会发挥作用。但是,在那个阶段,您应该问自己:图表是否使您对设计有足够的信心,然后开始进行编码。
岭取