#PLEASE DO NOT EDIT THIS CODE
#This code was generated using the UMPLE 1.38.0.8942.247e17422 modeling language!
class Example:
def __init__(self, aA, aB):
self._a = aA
self._b = aB
def setA(self, aA):
self._a = aA
return True
def setB(self, aB):
self._b = aB
return True
def getA(self):
"""R01: this is a requirement for an attribute"""
return self._a
def getB(self):
"""R01: this is a requirement for an attribute"""
return self._b
def delete(self):
pass
def __str__(self):
return (super().__str__() + "["
+ "a:" + str(self.getA()) + ","
+ "b:" + str(self.getB())
+ "]")
#PLEASE DO NOT EDIT THIS CODE
#This code was generated using the UMPLE 1.38.0.8942.247e17422 modeling language!
class Item:
"""
R1: track quality items
[Quality: Performance, Security]
"""
def __init__(self, aName):
self._name = aName
def setName(self, aName):
self._name = aName
return True
def getName(self):
return self._name
def delete(self):
pass
def __str__(self):
return (super().__str__() + "["
+ "name:" + str(self.getName())
+ "]")
#PLEASE DO NOT EDIT THIS CODE
#This code was generated using the UMPLE 1.38.0.8942.247e17422 modeling language!
class Example:
def __init__(self):
pass
def delete(self):
pass
def methodName(self):
"""R01: this is a requirement for a method"""
pass
#PLEASE DO NOT EDIT THIS CODE
#This code was generated using the UMPLE 1.38.0.8942.247e17422 modeling language!
class Example:
"""R01: this is a requirement"""
def __init__(self):
pass
def delete(self):
pass
#PLEASE DO NOT EDIT THIS CODE
#This code was generated using the UMPLE 1.38.0.8942.247e17422 modeling language!
class X:
"""R1: There should be a class called X"""
def __init__(self, aA, aB):
self._a = aA
self._b = aB
self._ies = []
def setA(self, aA):
self._a = aA
return True
def setB(self, aB):
self._b = aB
return True
def getA(self):
"""
R1a: The reason it should be called X is because it is secret
R2: Class X should have several attribites
"""
return self._a
def getB(self):
"""
This is another attribute
R2: Class X should have several attribites
"""
return self._b
def getY(self, index):
return self._ies[index]
def getIes(self):
return tuple(self._ies)
def numberOfIes(self):
return len(self._ies)
def hasIes(self):
return len(self._ies) > 0
def indexOfY(self, aY):
return next((i for i, x in enumerate(self._ies) if x is aY), -1)
@staticmethod
def minimumNumberOfIes():
return 0
def addY1(self, aC):
from Y import Y
return Y(aC, self)
def addY2(self, aY):
if any(x is aY for x in self._ies):
return False
existingX = aY.getX()
isNewX = existingX is not None and existingX is not self
if isNewX:
if not aY.setX(self):
return False
else:
self._ies.append(aY)
return True
def addY(self, *args, **kwargs):
from Y import Y
bound = __class__._bindArguments(("aY",), False, args, kwargs)
if bound is not None and (bound[0] is None or isinstance(bound[0], Y)):
return __class__.addY2(self, *bound)
bound = __class__._bindArguments(("aC",), False, args, kwargs)
if bound is not None and (bound[0] is None or isinstance(bound[0], str)):
return __class__.addY1(self, *bound)
raise TypeError("No method matches provided parameters")
def removeY(self, aY):
if aY.getX() is self:
return False
index = next((i for i, x in enumerate(self._ies) if x is aY), -1)
if index >= 0:
del self._ies[index]
return True
def addYAt(self, aY, index):
if not self.addY2(aY):
return False
if index < 0:
index = 0
if index > self.numberOfIes():
index = self.numberOfIes() - 1
del self._ies[next((i for i, x in enumerate(self._ies) if x is aY), -1)]
self._ies.insert(index, aY)
return True
def addOrMoveYAt(self, aY, index):
if not any(x is aY for x in self._ies):
return self.addYAt(aY, index)
if index < 0:
index = 0
if index > self.numberOfIes():
index = self.numberOfIes() - 1
del self._ies[next((i for i, x in enumerate(self._ies) if x is aY), -1)]
self._ies.insert(index, aY)
return True
def delete(self):
for i in range(len(self._ies), 0, -1):
aY = self._ies[i - 1]
aY.delete()
@staticmethod
def _bindArguments(names, varargs, args, kwargs):
if len(args) > len(names) and not varargs:
return None
bound = list(args[:len(names)])
for name in names[len(bound):]:
if name not in kwargs:
return None
bound.append(kwargs[name])
if len(kwargs) != len(names) - min(len(args), len(names)):
return None
if varargs:
bound.append(args[len(names):])
return bound
def __str__(self):
return (super().__str__() + "["
+ "a:" + str(self.getA()) + ","
+ "b:" + str(self.getB())
+ "]")
#PLEASE DO NOT EDIT THIS CODE
#This code was generated using the UMPLE 1.38.0.8942.247e17422 modeling language!
class Y:
"""
This is class Y
R3: There must be a class called Y
"""
def __init__(self, aC, aX):
self._c = aC
self._x = None
if not self.setX(aX):
raise RuntimeError("Unable to create y due to x. See https://manual.umple.org?RE002ViolationofAssociationMultiplicity.html")
def setC(self, aC):
self._c = aC
return True
def getC(self):
"""
This is an important attribute
R5: A Y should have a c
"""
return self._c
def getX(self):
return self._x
def setX(self, aX):
if aX is None:
return False
existingX = self._x
self._x = aX
if existingX is not None and existingX is not aX:
existingX.removeY(self)
self._x.addY(self)
return True
def delete(self):
placeholderX = self._x
self._x = None
if placeholderX is not None:
placeholderX.removeY(self)
def __str__(self):
return (super().__str__() + "["
+ "c:" + str(self.getC())
+ "]"
+ "\n x = " + ("null" if self.getX() is None else format(id(self.getX()), "x")))