TP : Chaînes de caractères modifiables

Ce TP doit conduire à créer de A à Z un module utilisable tout le reste de l'année. Il a pour but de définir une structure de données implémentant des chaînes de caractères modifiables.

Plutôt que traiter la partie 1 puis la partie 2 puis la partie 3, il est conseillé de programmer quelques méthodes (partie 1), puis les tester (partie 2) puis écrire la documentation de ces méthodes (partie 3) puis programmer d'autres méthodes (partie 1), les tester (partie 2), écrire leur documentation (partie 3), etc...

Partie 1 - Les méthodes de classe

Question

Complétez la définition de la classe StringVar dont l'attribut est chaine doit être une chaîne de caractères « classique », vide par défaut. N'hésitez pas à ajouter des méthodes si vous le souhaitez...

Attention aux types définis dans les méthodes ! Certains sont des strings, d'autres sont des StringVar...

Il faudra programmer les assertions suivantes :

1
>>> exemple1 = StringVar(4)
2
AssertionError: str type is required
3
4
>>> exemple2 = StringVar('4')
5
>>> exemple2.setChaine(3)
6
AssertionError: str type is required
7
8
>>> exemple3 = StringVar('exemple')
9
>>> exemple3.setCaractere(0, 3)
10
AssertionError: str type is required for carac
11
12
>>> exemple3.setCaractere('0', '3')
13
AssertionError: int type is required for indice
14
15
>>> exemple3.setCaractere(-4, 'i')
16
AssertionError: Il faut 0 <= indice < 7
17
18
>>> exemple3.setCaractere(4, 'au')
19
AssertionError: len(au) != 1
20

Dans setCaractere(), les messages s'adaptent aux données (f-string).

Indice

Un indice pour la soustraction des chaînes :

chaine1 - chaine2 renverra chaine1 si chaine2 n'est pas un suffixe de chaine1 et renverra chaine1 privé du suffixe chaine2 sinon.

Partie 2 - Réalisation des tests

Question

Complétez le programme principal avec des tests pertinents et exhaustifs de toutes les méthodes programmées dans la partie précédente.

Partie 3 - Documenter et utiliser la classe

Question

  • Complétez le docstring de la classe.

  • Vérifiez votre documentation dans la console en exécutant l'instruction :

    >>> help(StringVar)

  • Dans le répertoire contenant le fichier string_var.py, enregistrez un nouveau fichier nommé main.py.

  • Dans ce nouveau fichier, importez comme un module le fichier string_var.py :

    from string_var import *

  • Sauvegardez main.py puis exécutez-le.

    Vous pouvez à présent utiliser des chaînes de caractères modifiables dans ce programme... N'hésitez pas à tester !