Uml 类和接口之间的关联

Uml 类和接口之间的关联,uml,ooad,Uml,Ooad,我有一个关于类和接口之间的关联建模的问题。据我所知,接口指定对象可以做什么;不提供状态或功能()。此外,我在关于OOAD的书(James Rubaugh的面向对象建模和设计)中指出,关联描述了对象实例之间具有公共结构和公共语义的一组链接 现在,假设我有以下实体: 1) ICar接口:定义汽车可以执行的操作 2) BMW:实现ICar接口的类 3) IWheel:定义轮子功能的接口 4) LuxuryWheel:实现IWheel接口的类 现在,从设计的角度来模拟宝马和LuuryWheel之间的关系

我有一个关于类和接口之间的关联建模的问题。据我所知,接口指定对象可以做什么;不提供状态或功能()。此外,我在关于OOAD的书(James Rubaugh的面向对象建模和设计)中指出,关联描述了对象实例之间具有公共结构和公共语义的一组链接

现在,假设我有以下实体:

1) ICar接口:定义汽车可以执行的操作

2) BMW:实现ICar接口的类

3) IWheel:定义轮子功能的接口

4) LuxuryWheel:实现IWheel接口的类

现在,从设计的角度来模拟宝马和LuuryWheel之间的关系,你认为以下哪项是正确的?我分享了我对每一件事的看法

A) 在ICar和Iwheel之间创建关联。BMW级可以创建LuxuryWheel级的具体实例。这是高度灵活的,但耦合汽车的能力和车轮的能力。此外,关联的定义表示关联是实例之间的关系

B) 在宝马级和豪华车轮级之间创建关联。解决特定问题;但宝马与豪华车轮紧密结合

C) 在BMW class和Iwheel界面之间创建关联。这样宝马就可以使用任何实现IWheel接口的类型


选项C)在我看来更好。请分享您的想法。

简单地说,一辆汽车可以支持不同类型的发动机。因此,您必须考虑一个额外的类,允许添加不同类型的电机。在这种情况下,接口或类之间的关系必须通过一些附加接口来实现。

为了获得可靠的解决方案,在ICar和IWheel接口之间创建关联。这是可能的,因为接口是类型。使用关联连接接口意味着,实现ICar接口的任何分类器实例必须关联到实现IWheel的分类器实例。您还可以为car和wheel定义抽象类,并在它们之间建立关联。结果将是相似的。

我同意弗拉基米尔的观点,因为你想借助接口来模拟汽车和车轮,它们之间的关联(实际上是一种组合)应该在接口
ICar
IWheel
之间建模,如下图所示:


由于类
BMW
LuxuryWheel
实现了接口
ICar
IWheel
,它们还需要实现/实现这种关联/组合,例如借助于4值参考属性
BMW
wheels
,或者借助于
BMW
leftrealwheel
righrealwheel
leftFrontWheel
righfrontwheel

+1中的4个不同参考属性,您可以在BMW和LuxuryWheel之间添加指定的关联,并在抽象关联和您的关联之间添加一个关系。这表明,您的关系实际上与接口之间指定的关系相同,但已针对BMW和LuxuryWheel的具体实现进行了细化