from RobotMobile import RobotMobile

class Aspirateur:
    def __init__(self, marque, puissance):
        self.marque = marque
        self.puissance = puissance

    @property
    def marque(self):
        return self._marque

    @marque.setter
    def marque(self, value):
        if isinstance(value, str) and value:
            self._marque = value
        else:
            print("Erreur : la marque doit être une chaîne non vide.")
            self._marque = "Inconnu"

    @property
    def puissance(self):
        return self._puissance

    @puissance.setter
    def puissance(self, value):
        if isinstance(value, int) and value > 0:
            self._puissance = value
        else:
            print("Erreur : la puissance doit être un entier positif.")
            self._puissance = 1000

    def __str__(self):
        return f"Aspirateur {self.marque}, puissance={self.puissance}W"


# --- Aspirateur Robot ---
class AspirateurRobot(Aspirateur, RobotMobile):
    def __init__(self, marque, puissance, distance_max):
        # Initialisation RobotMobile avec type "Aspirateur robot"
        RobotMobile.__init__(self, robot_type="Aspirateur robot", orientation="NORD", statut=1, abscisse=0, ordonnee=0)
        Aspirateur.__init__(self, marque, puissance)
        self.distance_max = distance_max
        self._distance_parcourue = 0  # pour suivre le parcours

    @property
    def distance_max(self):
        return self._distance_max

    @distance_max.setter
    def distance_max(self, value):
        if isinstance(value, (int, float)) and value > 0:
            self._distance_max = value
        else:
            print("Erreur : distance_max doit être positive.")
            self._distance_max = 100

    def __str__(self):
        return (super(RobotMobile, self).__str__() + f"\nMarque : {self.marque}\n"
                f"Puissance : {self.puissance}W")
