# Exercice Tranche + travail de recherche ###### tags: `pratique` # exercice Tranche ```python class Tranche: #constructeur def __init__(self,tab,borne1,borne2): if isinstance(tab,list): self.tab=tab else: self.tab=tab.tranche self.borne1=borne1 self.tranche=[] for i in range(borne1,borne2): self.tranche+=[self.tab[i]] #méthodes def __len__(self): return len(self.tranche) def __getitem__(self,i): return self.tranche[i] def __setitem__(self,i,item): self.tranche[i]=item self.tab[i+self.borne1]=item # Programme principale t=[9,56,12,87,51,5,75,21,52,445,2,0] s=Tranche(t,5,10) print("Tranche du tableau:",s.tranche) print("Longeur de la tranche:",len(s)) print("On vérifie si l'alliassage est correct") s[0]=598 print(s.tranche) print(t) u=Tranche(s,0,4) print("On obtient une tranche d'une autre tranche t",u.tranche) ``` # Travail de recherche ## Partie 1 #### Qu’est-ce que l’héritage en POO ? En programmation orientée objet, l’héritage est un mécanisme qui permet, lors de la déclaration d’une nouvelle classe, d'y inclure les caractéristiques d’une autre classe. #### Comment représente-t-on l’hérédité en UML ? ![](https://i.imgur.com/fhGFUAH.png) #### Schématiser les liens d’hérédite relatifs aux classes décrites dans les lignes qui suivent. On souhaite représenter, en UML, deux classes permettant de décrire des tigres et des chats. Pour pouvoir représenter ces classes, posez-vous les questions suivantes : * doit-on se contenter de représenter les classes tigre et chat ? * quel lien peut-on établir entre ces deux entités ? ![](https://i.imgur.com/1t84OQ8.png) #### Comment déclarer l’hérédité en Python ? Pour déclarer l'hérédité sur python il faut dans la création de la classe mettre en parametre la classe mère. #### En utilisant les informations recueillies précédemment, implémenter votre diagramme d’objet. ```=python class Felin: def __init__(self,nom, taille, pelage, age, habitat): self.nom=nom self.taille=taille self.pelage=pelage self.age=age self.habitat=habitat def chasser(self): pass def courir(self): pass def ronronner(self): pass class Chat(Felin): def __init__(self, domestique): self.domestique=domestique def ronronner(self): pass class Tigre(Felin): def __init__(self, sauvage): self.sauvage=sauvage def rugir(self): pass #programme principal saphir=Chat() print(saphir.nom) print(saphir.taille) ``` # Partie 2 #### Qu’est-ce qu’un mutateur ? Ajoutez dans votre réponse la traduction en anglais du terme “mutateur” les mutateurs (en anglais mutator) modifient l'état d'un objet, donc les valeurs de certains de ses attributs. #### Qu’est-ce qu’un accesseur ? Ajoutez dans votre réponse la traduction en anglais du terme “accesseur” les accesseurs (en anglais accessor) fournissent des informations relatives à l'état d'un objet, c'est-à-dire aux valeurs de certains de ses attributs (généralement privés) sans les modifier #### Quelle est la convention d’écriture utilisée pour définir les accesseurs ? La convention d'écriture utilisée pour définir les accesseurs est getattr() #### Quelle est la convention d’écriture utilisée pour définir les mutateurs ? La convention d'écriture utilisée pour définir les mutateurs est setattr() (remplacer) ou delattr() pour supprimer #### Au sein des classes implémentées précédemment, mettez en place les accesseurs et les mutateurs. ```=python class Felin: def __init__(self,nom, taille, pelage, age, habitat): self.nom=nom self.taille=taille self.pelage=pelage self.age=age self.habitat=habitat def chasser(self): pass def courir(self): pass def ronronner(self): pass class Chat(Felin): def __init__(self, domestique): self.domestique=domestique def ronronner(self): pass class Tigre(Felin): def __init__(self, sauvage): self.sauvage=sauvage def rugir(self): pass #programme principal saphir=Chat() print(saphir.nom) print(saphir.taille) #mutateur/seter def setnom(self, nv_nom): self.nom = nv_nom def settaille(self,nv_taille): self.taille+=nv_taille ```