Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在OOP中实现设计_Oop_Design Patterns_Uml - Fatal编程技术网

如何在OOP中实现设计

如何在OOP中实现设计,oop,design-patterns,uml,Oop,Design Patterns,Uml,我有以下结构 一个组织可以有多个环境 一个环境可以有多个应用程序 一个应用程序可以有多个策略 我创建了每个实体的类,即。 阶级组织, 班级环境, 班级申请 阶级政策 现在我想将策略应用于应用程序。 一个策略应该有一个策略类对象。所有的策略实例都是不同的。每个策略都有唯一的名称和ID 继承不起作用,考虑以下层次- 组织机构 环境(组织) 空气污染指数(环境) 政策(API) 因为每个策略都需要处理API、环境和组织的所有细节 我们能在这里做些什么吗?需要帮忙吗 所有的策略实例都是不

我有以下结构

  • 一个组织可以有多个环境
  • 一个环境可以有多个应用程序
  • 一个应用程序可以有多个策略

我创建了每个实体的类,即。
  • 阶级组织,
  • 班级环境,
  • 班级申请
  • 阶级政策
现在我想将策略应用于应用程序。 一个策略应该有一个
策略
类对象。所有的策略实例都是不同的。每个策略都有唯一的名称和ID

继承不起作用,考虑以下层次-

  • 组织机构
  • 环境(组织)
  • 空气污染指数(环境)
  • 政策(API)
因为每个策略都需要处理API、环境和组织的所有细节

我们能在这里做些什么吗?需要帮忙吗

所有的策略实例都是不同的。 每个策略都有唯一的名称和ID

您可以通过约束指示:

Policy.allInstances() -> forAll(p1, p2 |
  p1 <> p2 implies (p1.name <> p2.name and p1.ID <> p2.ID))
Policy.allInstances()->forAll(p1,p2|
p1p2表示(p1.name p2.name和p1.ID p2.ID))
根据您提供的信息,类图可以是:

我不使用双向关系,假设策略不知道关联的应用程序,其不知道关联的环境,其不知道关联的组织

我使用多重性
*
相当于
0..*
,因为您的问题中没有任何内容表明每次的最小多重性为1。我没有指出关系的相反方向的多重性,因为你的问题没有表明它们的某些方面

继承是行不通的

A继承B
意味着
A是B
,在您提供的类中,没有一个满足这一点,因此它们之间没有可能的继承

我们能在这里做些什么吗


可能介于环境和应用程序之间,因为我们可以说环境是由应用程序组成的,但在其他地方则不是。

现在我想对应用程序应用策略。一个策略应该有一个策略类对象
您的意思是所有策略实例都是“不同”的吗?请说清楚一点<代码>继承将不起作用哪些类之间的继承?@bruno所有策略实例都“不同”>>是的,还有更新的问题每个策略都只与应用程序有关吗?换句话说,如果我接受一个应用程序并将其移动到另一个环境或组织,策略是否可以保持不变?