| |
74 Angenommene Spezifikation UML Ocl 2,0 lookupOperation(simpleNameCS.ast, wenn (argumentsCS->notEmpty()) dann arguments.ast->collect(type) sonst endif Sequence{ }) -- Alternative C/D ist sammeln von einer Verbindung oder zuschreiben über einer Ansammlung ein implizites [ C, D ] IteratorExpCS.ast.iterator.type = OclExpressionCS.ast.type.oclAsType (CollectionType).elementType [ C, D ] IteratorExpCS.ast.source = OclExpressionCS.ast [ C, D ] ' sammeln ' IteratorExpCS.ast.name = [ C ] -- der Körper vom impliziten sammeln ist das Attribut, das durch ' Namen ' bezieht lassen Sie refAtt: Attribut = OclExpressionCS.ast.type.oclAsType (CollectionType). elementType.lookupAttribute(simpleNameCS.ast), in IteratorExpCS.ast.body.oclIsKindOf (AttributeCallExp) und lassen Sie Körper: AttributeCallExp = IteratorExpCS.ast.body.oclAsType(AttributeCallExp) in body.source.oclIsKindOf(VariableExp) und body.source.oclAsType (VariableExp).referredVariable = IteratorExpCS.ast.iterator und body.referredAttribute = refAtt [ D ] -- der Körper vom impliziten sammeln ist der Navigationsanruf, der durch ' Namen ' bezieht lassen Sie refNav: AssociationEnd = OclExpressionCS.ast.type.oclAsType (CollectionType). elementType.lookupAssociationEnd(simpleNameCS.ast) in IteratorExpCS.ast.body.oclIsKindOf (AssociationEndCallExp) und lassen Sie Körper: AssociationEndCallExp = IteratorExpCS.ast.body.oclAsType(AssociationEndCallExp) in body.source.oclIsKindOf(VariableExp) und body.source.oclAsType (VariableExp).referredVariable = IteratorExpCS.ast.iterator und body.referredAssociationEnd = refNav und body.ast.qualifiers = argumentsCS.ast [ E ] -- der Körper vom impliziten sammeln ist die Navigation zur Verbindungskategorie -- bezogen durch ' Namen ' lassen Sie refClass: AssociationClass = OclExpressionCS.ast.type.oclAsType (CollectionType). elementType.lookupAssociationClass(simpleNameCS.ast) in IteratorExpCS.ast.body.oclIsKindOf (AssociationClassCallExp) und lassen Sie Körper: AssociationClassCallExp = IteratorExpCS.ast.body.oclAsType(AssociationClassCallExp) in body.source.oclIsKindOf(VariableExp) und body.source.oclAsType (VariableExp).referredVariable = IteratorExpCS.ast.iterator und body.referredAssociationClass = refNav und body.ast.qualifiers = argumentsCS.ast |  |
|
| |
|
|