# POO #
TP 1 : POO
Définir et schématiser le fonctionnement des listes chaînées
Question 1 : Définir la notion de « liste chaînée ».

Cas particulier d’une liste qui contient l’élément concerné et l’adresse de l’élément suivant.
(Une liste chaînée est une structure de donnée permettant de stocker plusieurs valeurs de même type mais qui soit de taille différente.)
Question 2 : Schématiser le fonctionnement d’une liste chaînée. Pour cela, créer un schéma relatif à l’ajout d’un élément au sein d’une liste chaînée et un second relatif au retrait/suppression d’un élément d’une liste chaînée.
TP 1 : POO
Définir et schématiser le fonctionnement des listes chaînées
Question 1 : Définir la notion de « liste chaînée ».
Cas particulier d’une liste qui contient l’élément concerné et l’adresse de l’élément suivant.
(Une liste chaînée est une structure de donnée permettant de stocker plusieurs valeurs de même type mais qui soit de taille différente.)
Question 2 : Schématiser le fonctionnement d’une liste chaînée. Pour cela, créer un schéma relatif à l’ajout d’un élément au sein d’une liste chaînée et un second relatif au retrait/suppression d’un élément d’une liste chaînée.
Question 3 : Pour implémenter une liste chaînée avec des objets, nous allons définir deux classes : la classe Element et la classe ListeChainee.
La classe Element possède deux attributs : valeur et suivant. valeur correspond à la valeur de l’élément courant tandis que suivant fait référence à l’élément suivant.
La classe ListeChainee a pour attribut le premier élément de la liste ou None si elle est vide.
À l’aide des informations ci-dessus, créer le diagramme de classes modélisant les classes Element et ListeChainee.
Implémenter une liste chaînée
Question 1 : À partir du diagramme créé précédemment, créez les classes ListeChainee et Element. (voir edupython)
class Element :
pass
class Listechainee :
pass
Question 2 : Définir ce qu’est un type abstrait en POO.
(L’abstraction de données en POO a pour objectif de gérer la complexité en masquant les détails inutiles à l’utilisateur.)
Question 3 : Compléter la classe ListeChainee avec les méthodes suivantes afin d’implémenter le type abstrait ListeChainee puis tester ces méthodes : (voir edupython)![]
(https://i.imgur.com/VumT0U0.png)
est_vide : retourne vrai si la liste chaînée est vide ;
affiche_elemens : qui affiche le contenu de la liste chainée
inserer : insere un nouvel élément en tête de liste ;
tete : retourne la valeur de l’élément en tête de liste, si elle n’est pas vide ;
queue : retourne la liste privée de son premier élément si elle n’est pas vide ;
elements : retourne un tableau contenant les valeurs des éléments de la liste.
Question 4 : Écrire un programme qui crée la liste ci-dessus en utilisant uniquement les méthodes de la classe ListeChainee.
Question 5 : Définir ce qu’est un diagramme d’objets.
Question 6 : Sans exécuter le programme suivant, dessiner le diagramme d’objets à chaque étape de son exécution et indiquer ce qu’il affiche :
liste = Liste()
liste.inserer("Paris")
liste.inserer("Berlin")
ville = liste.tete()
liste.inserer("Londres")
reste = liste.queue()
print(liste.est-vide())
for i in liste.elements():
print(i)
Question 3 : Pour implémenter une liste chaînée avec des objets, nous allons définir deux classes : la classe Element et la classe ListeChainee.
La classe Element possède deux attributs : valeur et suivant. valeur correspond à la valeur de l’élément courant tandis que suivant fait référence à l’élément suivant.
La classe ListeChainee a pour attribut le premier élément de la liste ou None si elle est vide.
À l’aide des informations ci-dessus, créer le diagramme de classes modélisant les classes Element et ListeChainee.
Implémenter une liste chaînée
Question 1 : À partir du diagramme créé précédemment, créez les classes ListeChainee et Element. (voir edupython)
class Element :
pass
class Listechainee :
pass
Question 2 : Définir ce qu’est un type abstrait en POO.
(L’abstraction de données en POO a pour objectif de gérer la complexité en masquant les détails inutiles à l’utilisateur.)
Question 3 : Compléter la classe ListeChainee avec les méthodes suivantes afin d’implémenter le type abstrait ListeChainee puis tester ces méthodes : (voir edupython)
est_vide : retourne vrai si la liste chaînée est vide ;
affiche_elemens : qui affiche le contenu de la liste chainée
inserer : insere un nouvel élément en tête de liste ;
tete : retourne la valeur de l’élément en tête de liste, si elle n’est pas vide ;
queue : retourne la liste privée de son premier élément si elle n’est pas vide ;
elements : retourne un tableau contenant les valeurs des éléments de la liste.
Question 4 : Écrire un programme qui crée la liste ci-dessus en utilisant uniquement les méthodes de la classe ListeChainee.
Question 5 : Définir ce qu’est un diagramme d’objets.
Question 6 : Sans exécuter le programme suivant, dessiner le diagramme d’objets à chaque étape de son exécution et indiquer ce qu’il affiche :
liste = Liste()
liste.inserer("Paris")
liste.inserer("Berlin")
ville = liste.tete()
liste.inserer("Londres")
reste = liste.queue()
print(liste.est-vide())
for i in liste.elements():
print(i)