如何表达下列制约因素:
1 -只有一个文件夹不是另一个目录的子目录。(我无法完全理解文件夹/子文件夹主题,以及如何描述唯一可能从文件夹系统中排除出来的文件夹)。
还有一些来自第一个问题的问题
2文件夹的最高嵌套数不超过n.。
3)系统上的文件总数不能超过n.。
( 4)给定系统中的文件总数(子目录)不能超过n.。
发布于 2021-01-20 16:40:31
你的四个约束不能简单地用多重性来表示。
在UML中,这些约束可以使用OCL编写,请参阅正式/2014-02-03。
当然,约束可以写在类图中,例如,参见正式/2017-12-05的注释符号页37中的图7.14约束。
1 -只有一个文件夹不是另一个目录的子目录。
写作的一种方法是:
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。
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
为真
但是它只对计算没有子文件夹的文件夹的深度很有用,所以
Folder.allInstances()
->select(f | f.subfolder->isEmpty())
->forAll(f | f.depth() <= n)
3)系统上的文件总数不能超过n.。 ( 4)给定系统中的文件总数(子目录)不能超过n.。
我不明白为什么(subdirectory)
在4中,也不明白为什么3表示on your system
,4表示a given system
,而在E 141
1E 242>和E 1432E 244中没有任何关于系统的信息。
假设目标是检查文件总数小于或等于n,并且文件夹的文件由属性文件提供:
Folder.allInstances()->collect(f | f.file.size()).sum() <= n
哪里
Folder.allInstances()->collect(f | f.file.size())返回所有文件夹的文件数的集合。
Folder.allInstances()->collect(f | f.file.size()).sum()返回文件总数
发布于 2021-01-25 09:16:09
不鼓励使用allInstances()。
或者只是:上下文文件inv:文件夹->闭包(UpFolder).size()
https://stackoverflow.com/questions/65806310
复制相似问题