首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >树结构约束的表示方法

树结构约束的表示方法
EN

Stack Overflow用户
提问于 2021-01-20 09:07:19
回答 2查看 388关注 0票数 0

如何表达下列制约因素:

1 -只有一个文件夹不是另一个目录的子目录。(我无法完全理解文件夹/子文件夹主题,以及如何描述唯一可能从文件夹系统中排除出来的文件夹)。

还有一些来自第一个问题的问题

2文件夹的最高嵌套数不超过n.

3)系统上的文件总数不能超过n.

( 4)给定系统中的文件总数(子目录)不能超过n.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-20 16:40:31

你的四个约束不能简单地用多重性来表示。

在UML中,这些约束可以使用OCL编写,请参阅正式/2014-02-03

当然,约束可以写在类图中,例如,参见正式/2017-12-05的注释符号页37中的图7.14约束。

1 -只有一个文件夹不是另一个目录的子目录。

写作的一种方法是:

代码语言:javascript
运行
复制
Folder.allInstances()->select(f | f.upfolder->isEmpty())->size() = 1

哪里

  • Folder.allInstances()返回类文件夹的实例
  • Folder.allInstances()->select(f | f.upfolder->isEmpty())对实例进行迭代,并返回没有上文件夹的实例。
  • 然后Folder.allInstances()->select(f | f.upfolder->isEmpty())->size() = 1检查是否有一个文件夹没有上文件夹

2文件夹的最高嵌套数不超过n

一种方法是定义函数,计算文件夹的深度,然后检查所有文件夹的深度小于或等于n。

代码语言:javascript
运行
复制
context Folder
def: depth() : Integer =
  if upfolder->notEmpty() then
    upfolder->first().depth() + 1
  else
    0

Folder.allInstances()->forAll(f | f.depth() <= n)

其中,如果所有元素的条件forAll为真,则depth() <= n为真

但是它只对计算没有子文件夹的文件夹的深度很有用,所以

代码语言:javascript
运行
复制
Folder.allInstances()
  ->select(f | f.subfolder->isEmpty())
     ->forAll(f | f.depth() <= n)

3)系统上的文件总数不能超过n.。 ( 4)给定系统中的文件总数(子目录)不能超过n.

我不明白为什么(subdirectory)4中,也不明白为什么3表示on your system4表示a given system,而在E 1411E 242>和E 1432E 244中没有任何关于系统的信息。

假设目标是检查文件总数小于或等于n,并且文件夹的文件由属性文件提供:

代码语言:javascript
运行
复制
Folder.allInstances()->collect(f | f.file.size()).sum() <= n

哪里

  • Folder.allInstances()->collect(f | f.file.size())返回所有文件夹的文件数的集合。
  • Folder.allInstances()->collect(f | f.file.size()).sum()返回文件总数
票数 2
EN

Stack Overflow用户

发布于 2021-01-25 09:16:09

不鼓励使用allInstances()。

  1. 非常希望有一些FileSystem类,它只有一个根文件夹,因此可以保证约束具有简单的多重性。
  2. 很容易被0.3多重声明处理。
  3. 由派生属性高速缓存的深度()助手是一个很好的解决方案。

或者只是:上下文文件inv:文件夹->闭包(UpFolder).size()

  1. 上下文文件夹inv:自>闭包(子文件夹).文件->大小()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65806310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档