如何在OOP中实施设计

问题描述

我有以下结构

enter image description here

  • 一个组织可以拥有许多环境。
  • 一个环境可以有许多应用程序。
  • 一个应用程序可以包含多个Policis。

我创建了每个实体的类,即
  • 班级组织
  • 类环境,
  • 类应用程序
  • 课程政策

现在,我要将策略应用于“应用程序”。 一个策略应具有一个Policy类对象。策略的所有实例均不同。每个策略都有唯一的名称和ID。

继承将不起作用,请考虑以下层次结构-

  • 组织
  • 环境(组织)
  • API(环境)
  • 政策(API)

因为需要执行每项策略,所以必须提供API,环境,组织的所有详细信息。

我们可以在这里进行汇总吗?在这方面需要帮助

解决方法

所有Policy实例都不相同。 每个政策都有唯一的名称和ID

您可以通过约束来表明这一点:

Policy.allInstances() -> forAll(p1,p2 |
  p1 <> p2 implies (p1.name <> p2.name and p1.ID <> p2.ID))

您提供的信息中的类图可以是:

enter image description here

我不使用双向关系,假设策略不知道关联的 Application ,而他们不知道关联的 Environment 谁不知道相关的组织

我使用等于*的多重度0..*,因为您的问题中没有任何内容说最小多重度每次都是1。我没有指出关系的相反方向上的多重性,因为您的问题并未说明它们之间的某些联系。

继承无效

A inherits B暗示A is a B,在您所提供的类中,没有一个满足您的要求,因此它们之间没有继承。

我们可以在这里进行汇总

可能在 Environment Application 之间,因为我们可以说环境是由应用程序组成的,而其他情况则不是。