---
# System prepended metadata

title: Untitled

---

```python=
# Créé par B.BERTRAND, le 17/10/2022 en Python 3.7
#question a :
class Tranche:
    #constructeur:
    def __init__(self,t,debut,fin):
        self.t=t
        self.debut=debut
        self.fin=fin
        self.tranche_a=[]
        for i in range(debut,fin):
            self.tranche_a+=[t[i]]

    #methodes:
    def longueur(self): # retourne la longueur de la liste
        return self.fin-self.debut+1

    def getitem(self,position): # retourne la valeur du n-ième élément
        return self.tranche_a[position]

    def setitem(self,position,valeur): # changer la valeur du n-ième élément
        self.tranche_a[position]=valeur

#question b et c :
class Tranche2:
    #constructeur:
    def __init__(self,t,debut,fin):
        self.t=t
        self.debut=debut
        self.fin=fin
        self.tranche_2=[]
        for i in range(debut,fin):
            self.tranche_2+=[t[i]]

    #methodes:
    def __len__(self): #retourne la longueur de la liste
        return self.fin-self.debut+1

    def __getitem__(self,position): #retourne la valeur du n-ième élément
        return self.tranche_2[position]

    def __setitem__(self,position,valeur): #change la valeur du n-ième élément
        self.tranche_2[position]=valeur

#programme principal
#question a :
print("question a :")
test1=Tranche([1,2,3,4,5],2,4)
print(test1.longueur())
print(test1.getitem(1))
test1.setitem(1,7)
print(test1.getitem(1))

#question b :
print("////////////////////")
print("question b :")
test2=Tranche2([1,2,3,4,5],2,4)
print(len(test2))
print(test2[1])
test2[1]=7
print(test2[1])

#question c :
print("////////////////////")
print("question c :")
print(isinstance(test2,list)) #on verifie si b est un tableau
tranche_test=Tranche2(test2,0,1) #on crée une tranche à partir de la tranche b
print(len(tranche_test))
print(test2[0])
print(test2[1])
print(isinstance(tranche_test,list)) #on verifie si u est un tableau, ce n'est pas le cas
```



**travail de recherches :**

**1) Qu’est-ce que l’héritage en POO ?**
En programmation orientée objet, “hériter” signifie “avoir également accès à”. Lorsqu’on dit qu’un objet “hérite” des méthodes de la classe qui l’a défini, cela signifie que l’objet peut utiliser ces méthodes; qu’il y a accès.

La notion d’héritage va être particulièrement intéressante lorsqu’on va l’implémenter entre deux classes. En Python, nous allons en effet pouvoir créer des “sous-classes” ou des classes “enfants” à partir de classes de base ou classes “parentes”.

**2) Comment représente-t-on l’héritage en UML ?**


**3) Schématiser les liens d’hérédité relatifs aux classes décrites dans les lignes suivantes :**


**Comment déclarer l’héritage en Python :**
Python définit deux fonctions primitives pour gérer l'héritage :

utilisez isinstance() pour tester le type d'une instance : isinstance(obj, int) renvoie True seulement si obj.__class__ est égal à int ou à une autre classe dérivée de int ;

utilisez issubclass() pour tester l'héritage d'une classe : issubclass(bool, int) renvoie True car la classe bool est une sous-classe de int. Cependant, issubclass(float, int) renvoie False car float n'est pas une sous-classe de int.

**En utilisant les informations recueillies précédemment, implémenter votre diagramme d’objet.**

**Qu’est ce qu’un mutateur ?**
les mutateurs (en anglais mutator) qui modifient l’état d’un objet, donc les valeurs de certains de ses attributs.

**Qu’est ce qu’un accesseur ?**
Les accesseurs sont des méthodes qui permettent de retourner la valeur d’un attribut. 

**Quelle est la convention d’écriture utilisée pour définir les accesseurs ?**


**Quelle est la convention d’écriture utilisée pour définir les mutateurs ?**


**Au sein des classes implémentées précédemment, mettez en place les accesseurs et les mutateurs ?**
