EPFL CS-112(j) POO

Course Website

Cours : Jeudi 8h15–9h00, CM 1 4

Exercices : Jeudi 9h15–11h, INF 3, BC 07-08

Accueil

Site Moodle

Tutoriels et références

Séries

Projet

Série 3 : Méthodes spéciales et propriétés

Solutions

Cette série a pour objectif de pratiquer l’usage des principales méthodes spéciales, ainsi que des propriétés.

Avant de commencer cette série, il est prévu que vous ayez suivi les deux tutoriels de cette semaine :

Nous vous recommandons de créer un nouveau projet Python pour chaque série d’exercices. Cela vous permettra d’isoler plus facilement le contenu des différentes semaines.

Cette série contient 3 exercices :

Mesures de distances avec unités

On souhaite définir une classe Distance qui représente une mesure de distance. Cette mesure doit pouvoir être exprimée dans différentes unités, au minimum km, m et mm. Une instance de Distance doit donc stocker deux valeurs : une unité, et une valeur flottante exprimée dans cette unité.

On requiert au moins les capacités suivantes :

On ne vous demande pas de représenter d’autres mesures que les distances.

Concevez l’interface de la classe Distance pour qu’elle réponde aux exigences ci-dessus. Ensuite, implémentez et testez Distance.

Questionnement : si Distance devait être muable, que changeriez-vous ? Pensez-vous qu’il soit mieux d’avoir une class muable ou immuable, dans ce cas ?

Liste chaînée immuable

Au semestre passé, nous avons introduit une représentation du concept abstrait de “liste” que nous avons nommée liste chaînée. Cet exercice vous propose de concevoir et d’implémenter une telle liste chaînée immuable.

Pour rappel, au moins en interne, une liste chaînée immuable est

On emballera cette représentation interne dans une classe LinkedList, qui exposera l’interface suivante :

On supposera qu’une LinkedList ne contient que des int.

Élaborez l’interface de LinkedList à partir de la définition informelle ci-dessus. Implémentez et testez LinkedList.

Vous pourriez avoir besoin de définir une ou plusieurs “classes annexes”. Si c’est le cas, elles ne doivent pas apparaître dans l’interface publique de LinkedList.

Vous vous sentez experte ou expert ? Ou peut-être revenez-vous à cette exercice en fin de semestre ? Dans ce cas, faites en sorte que LinkedList puisse contenir n’importe quel type de données, tout comme la list[T] de Python.