\begin{questions}
\item L'instruction \og \texttt{m = Mot("Socrate")} \fg{} définit dans un premier temps un objet \texttt{Mot} comme étant la chaîne de caractères \og Socrate \fg.

Ensuite, \og \texttt{m.doReverse()} \fg{} fait appel à la méthode \texttt{doReverse} de la classe \texttt{Mot} qui, comme son nom l'indique, transforme la chaîne de caractères en inversant les lettres.

Enfin, \og \texttt{print(m.value())} \fg{} affiche ce qui est contenu dans \texttt{self.m} de la classe \texttt{Mot}, donc affiche ici : \og etarcoS \fg{} (le mot écrit à l'envers).

\item Comme dans la fonction précédente, on commence par définir un\linebreak objet de classe \og Mot \fg, puis on fait appel à la méthode \texttt{doShuffle} qui retourne une anagramme du mot.

La fonction \texttt{fctB()} affiche donc une anagramme de \og Socrate \fg.

\item Un constructeur possible est le suivant :

\begin{listing}{}{04-classe-phrase-constr.py}\end{listing}

\Par

On commence par définir une liste \texttt{L} composée de tous les mots de la phrase passée en paramètre avec la méthode \texttt{split} : à ce stade, les mots se sont que des chaînes de caractères. Or, nous souhaitons que chaque mot soit de classe \texttt{Mot}. On parcourt alors cette liste et, à partir de chaque item, on définit un objet de classe \texttt{Mot} que l'on insère dans une liste \texttt{self.mots} (\og self \fg{} est indispensable pour lier cette nouvelle liste à l'objet de classe \texttt{Phrase} ainsi défini).

\item Une proposition de méthodes est la suivante:
\begin{listing}{}{04-classe-phrase-doreverse.py}\end{listing}
\Par
Dans la méthode \texttt{doReverse}, nous n'avons fait qu'inverser l'ordre des items de la liste \texttt{self.mots} avec l'opération \texttt{[::-1]}, et dans la\linebreak méthode \texttt{value}, nous avons initialisé une chaîne de caractères \texttt{result} comme étant vide, puis parcouru chaque item de la liste \texttt{self.mots} pour concaténer à \texttt{result} la chaîne de caractères correspondant à l'item (\texttt{m.value()}) en y ajoutant un espace afin qu'au final, \texttt{result}\linebreak représente la phrase.

\newpage

\item Ici, nous pouvons utiliser à nouveau la fonction \texttt{shuffle} du module \texttt{random}, ce qui donne:
\begin{listing}{}{04-classe-phrase-doshuffle.py}\end{listing}

\item Dans la fonction \texttt{fctE()}, on commence par définir une phrase, puis un mot \texttt{m} comme étant l'objet \texttt{Mot} en position 3 dans la phrase définie. Ici, il s'agit donc de \og sont \fg{} (attention : le premier mot est à la position 0, comme dans toute liste). Ensuite, on applique la méthode \texttt{doReverse} de la classe \texttt{Mot} au mot ainsi trouvé, ce qui a pour effet de mettre ses lettres dans le sens inverse.

On affiche ensuite la phrase ainsi obtenue, ce qui donne :

\Par

\begin{center}
Tous les hommes tnos mortels
\end{center}

\item Dans la fonction \texttt{fctE()}, on commence par définir une phrase, puis on fait appel à la méthode \texttt{insert} qui insère le mot \og ne \fg{} dans la phrase en position 3, c'est-à-dire après le 3\ieme{} mot de la phrase. On fait de même en position 5, c'est-à-dire après le 5\ieme{} mot : on y insère le mot \og pas \fg. Et enfin, on affiche la phrase ainsi obtenue, ce qui donne:

\Par

\begin{center}
Tous les hommes ne sont pas mortels
\end{center}

\item On commence par prendre le mot en position 4 dans la phrase, donc \og
mortels \fg. On mélange ensuite les lettres dans ce mot en faisant appel à la méthode \texttt{doShuffle} de la classe \texttt{Mot}. Ensuite, on fait appel à la méthode \texttt{remove} de la classe \texttt{Phrase} en passant en paramètre le nombre 2 : on supprime alors le mot \og hommes \fg. Enfin, on insère en position 2 le contenu de la variable \texttt{m}, c'est-à-dire l'anagramme de \og mortels \fg{} obtenu précédemment. On affiche alors le résultat, ce qui donne par exemple:

\Par

\begin{center}
Tous les elmsort sont elmsort
\end{center}
\vspace*{-4mm}
\begin{Remarque}
le dernier mot n'est plus \og mortels \fg; en effet, nous avons définit \texttt{m} comme l'objet en position 4 dans l'objet \texttt{p}. Dès lors que l'on écrit \texttt{m.doShuffle}, cet objet est modifié dans l'objet \texttt{p}. Ainsi, à ce stade, l'objet \og mortels \fg{} n'existe plus mais il est remplacé par une anagramme de la chaîne de caractères qu'il représente.
\end{Remarque}

\Par

\qrset{height=1.1cm,version=5}\rput(-1,0){
\psframebox{\qrcode{https://idl-live.prepamath.fr/ILTNSI/04-classes-mot-phrase.py}}}
\vspace*{-10pt}
\textit{Télécharger le programme complet à l'aide du QR code.}
\end{questions}
\newpage
