#PLEASE DO NOT EDIT THIS CODE
#This code was generated using the UMPLE 1.38.0.8942.247e17422 modeling language!


class Mentor:
    def __init__(self, aName, aNameForStudent, aNumberForStudent):
        self._name = aName
        self._id = None
        self._student = None
        from example.Student import Student
        self._student = Student.alternateConstructor(aNameForStudent, aNumberForStudent, self)

    @classmethod
    def alternateConstructor(cls, aName, aStudent):
        self = cls.__new__(cls)
        __class__._alternateInit(self, aName, aStudent)
        return self

    def _alternateInit(self, aName, aStudent):
        self._name = aName
        self._id = None
        self._student = None
        if aStudent is None or aStudent.getMentor() is not None:
            raise RuntimeError("Unable to create Mentor due to aStudent. See https://manual.umple.org?RE002ViolationofAssociationMultiplicity.html")
        self._student = aStudent

    def setName(self, aName):
        self._name = aName
        return True

    def setId(self, aId):
        self._id = aId
        return True

    def getName(self):
        return self._name

    def getId(self):
        return self._id

    def getStudent(self):
        return self._student

    def delete(self):
        existingStudent = self._student
        self._student = None
        if existingStudent is not None:
            existingStudent.delete()

    def __str__(self):
        return (super().__str__() + "["
                + "name:" + str(self.getName()) + ","
                + "id:" + str(self.getId())
                + "]"
                + "\n  student = " + ("null" if self.getStudent() is None else format(id(self.getStudent()), "x")))

#PLEASE DO NOT EDIT THIS CODE
#This code was generated using the UMPLE 1.38.0.8942.247e17422 modeling language!


class Student:
    def __init__(self, aName, aNumber, aNameForMentor):
        self._name = aName
        self._number = aNumber
        self._mentor = None
        from example.Mentor import Mentor
        self._mentor = Mentor.alternateConstructor(aNameForMentor, self)

    @classmethod
    def alternateConstructor(cls, aName, aNumber, aMentor):
        self = cls.__new__(cls)
        __class__._alternateInit(self, aName, aNumber, aMentor)
        return self

    def _alternateInit(self, aName, aNumber, aMentor):
        self._name = aName
        self._number = aNumber
        self._mentor = None
        if aMentor is None or aMentor.getStudent() is not None:
            raise RuntimeError("Unable to create Student due to aMentor. See https://manual.umple.org?RE002ViolationofAssociationMultiplicity.html")
        self._mentor = aMentor

    def setName(self, aName):
        self._name = aName
        return True

    def setNumber(self, aNumber):
        self._number = aNumber
        return True

    def getName(self):
        return self._name

    def getNumber(self):
        return self._number

    def getMentor(self):
        return self._mentor

    def delete(self):
        existingMentor = self._mentor
        self._mentor = None
        if existingMentor is not None:
            existingMentor.delete()

    def __str__(self):
        return (super().__str__() + "["
                + "name:" + str(self.getName()) + ","
                + "number:" + str(self.getNumber())
                + "]"
                + "\n  mentor = " + ("null" if self.getMentor() is None else format(id(self.getMentor()), "x")))