diff --git a/package/classes.py b/package/classes.py new file mode 100644 index 0000000..99b6374 --- /dev/null +++ b/package/classes.py @@ -0,0 +1,110 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +""" + Author: freezed 2018-01-17 + Licence: `GNU GPL v3`_ + Version: 0.1 + + .. _GNU GPL v3: http://www.gnu.org/licenses/ +""" + + +class TableauNoir: + """ + Definis une surface sur laquelle on peut ecrire. + + On peut lire et effacer, par jeu de methodes. L'attribut + modifie est 'surface' + """ + + def __init__(self): + """Par defaut, notre surface est vide""" + self.surface = "" + + def ecrire(self, texte): + """ + Methode permettant d'ecrire sur la surface du tableau. + + Si la surface n'est pas vide, on saute une ligne avant de + rajouter le message a ecrire + + :texte a: Le texte a ajouter au tableuu + :type a: string + :return: None + """ + if self.surface != "": + self.surface += "\n" + self.surface += texte + + def lire(self): + """ + Cette methode se charge d'afficher, grace a print, + la surface du tableau + """ + + print(self.surface) + + def effacer(self): + """Cette methode permet d'effacer la surface du tableau""" + self.surface = "" + + +class Duree: + """ + Classe contenant des durees sous la forme d'un nombre de minutes + et de secondes + """ + + def __init__(self, min=0, sec=0): + """Constructeur de la classe""" + self.min = min # Nombre de minutes + self.sec = sec # Nombre de secondes + + def __str__(self): + """Affichage MM:SS""" + return "{:02}:{:02}".format(self.min, self.sec) + + def __add__(self, objet_a_ajouter): + """L'objet a ajouter est un entier, le nombre de secondes""" + self.sec += objet_a_ajouter # On ajoute la duree + + if self.sec >= 60: # Si le nombre de secondes >= 60 + self.min += self.sec // 60 + self.sec = self.sec % 60 + + return self # On renvoie la nouvelle duree + + def __sub__(self, objet_a_soustraire): + """ + Soustrait le nombre de seconde passe en parametre + Ne retourne jamais de duree negative + + :param a: secondes a soustraire + :type a: int + :return: object + """ + allsec = (self.min * 60) + self.sec + + if objet_a_soustraire > allsec: + self.min = 0 + self.sec = 0 + else: + allsec -= objet_a_soustraire # On soustrait la duree + self.min = allsec // 60 + self.sec = allsec % 60 + + return self # On renvoie la nouvelle duree + + +if __name__ == "__main__": + # pseudo-tests de la class «Duree» + print("[03:05]:", Duree(3, 5)) # __add__ + print("[03:55]:", Duree(3, 5) + 50) + print("[05:35]:", Duree(3, 5) + 150) + print("[14:41]:", Duree(13, 51) + 50) + print("[11:05]:", Duree(10, 3*5) + 50) + + print("[10:00]:", Duree(10, 5) - 5) + print("[00:05]:", Duree(10, 5) - 600) + print("[00:00]:", Duree(2, 5) - 600)