From c81d7304654fb3074cd55311d2664d413c53c928 Mon Sep 17 00:00:00 2001 From: Mysaa Date: Thu, 18 Aug 2022 17:01:36 +0200 Subject: [PATCH] =?UTF-8?q?Commentaires=20en=20fran=C3=A7ais,=20vingtpagis?= =?UTF-8?q?ation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FinalExample.java | 20 ++++++++++---------- RapportStage.tex | 12 +++++++----- header.tex | 7 ++++++- 3 files changed, 23 insertions(+), 16 deletions(-) diff --git a/FinalExample.java b/FinalExample.java index 0576cb6..e8b1e33 100644 --- a/FinalExample.java +++ b/FinalExample.java @@ -1,13 +1,13 @@ //////////////// FIRST CLASS TABLE ///////////////// class MinGetter extends Object { /* - Returns the lesser of the two input integers + Renvoie le plus petit des entiers donnés. */ Int min(Int a, Int b){ return a.lt(b).ite(a,b); } /* - Returns the minimum of the input list, None if the list is empty. + Renvoie le minimum de la liste, renvoie None si elle est vide. */ Optional listMin(List a) { return a.ensureFinite().isEmpty().ite(new None(), new Some(this.min((Int)this.listMin(a.tail).orElse(a.head), a.head))) @@ -18,7 +18,7 @@ class Sort extends Object { ensure(in).isEmpty().ite(in,minOnStart(in,(Int)((Some)new MinGetter().listMin(in)).value)); } /* - Put the first occurence of 'min' in 'in' to the start of the list and sort the rest. + Place la première occurence de 'min' trouvée dans 'in' au début de la liste, et trie le reste. */ List minOnStart(List in, Int min) { return min::this.sort(in.removeFirst(min)); @@ -28,13 +28,13 @@ class Sort extends Object { ///////////////// SECOND CLASS TABLE ///////////////// class MaxGetter extends Object { /* - Returns the bigger of the two input integers + Renvoie le plus grand des entiers donnés. */ Int max(Int a, Int b){ return a.gt(b).ite(a,b); } /* - Returns the maximum of the input list, None if the list is empty + Renvoie le maximum de la liste, renvoie None si elle est vide. */ Optional listMax(List a) { return a.ensureFinite().isEmpty().ite( @@ -54,7 +54,7 @@ class Sort extends Object { } /* - Removes max from in, applies sortAcc on the new list, and adds max to the accumulator. + Enlève 'max' de la liste 'in', et applique sortAcc en ajoutant max à l'accumulateur. */ List maxToEnd(List in, Int max) { return this.sortAcc(in.removeFirst(max), max::in.removeFirst(max)); @@ -62,17 +62,17 @@ class Sort extends Object { } ///////////////// TEST INTERFACE /////////////////¨ -// These three lines gives access to Integer construction +// Ces trois lignes permettent de construire les entiers Int () S (Int) S <: Int -// These three lines allows line construction +// Ces trois lines permettent de construire les listes List () Cons (List, o) Cons <: List -// These two lines allows use of the sort function, -// the only one whose implementation differs between the two class tables. +// Ces deux lignes permettent l'utilisation des méthodes de tri +// C'est le seul endroit où les deux class tables diffèrent du point de vue de la test interface. Sort () Sort: sort(List) diff --git a/RapportStage.tex b/RapportStage.tex index 9d831ad..7c8de4f 100644 --- a/RapportStage.tex +++ b/RapportStage.tex @@ -226,8 +226,9 @@ Tous les tests présentés dans la section précédente visaient à tester un programme entier (une \eng{class table} et une expression). Il semble cependant étrange de procéder ainsi. En effet, un développeur souhaitera principalement comparer entre elles des librairies, ce qui correspondrait à nos \eng{class tables}. On ne cherche plus à savoir si deux programmes \enquote{font la même chose}, mais plutôt est-ce que ces deux \eng{class tables} fournissent les mêmes fonctions. - En bonus, l'étude des \eng{class tables} est tout aussi complète que l'étude des programmes entiers, car nous pouvons toujours rajouter une classe \fj{Main} qui n'aie qu'une méthode \fj{Main.main} dont le corps soit l'expression de notre programme. Alors tester cette nouvelle \eng{class table} reviendra à tester le programme entier. + En bonus, l'étude des \eng{class tables} est tout aussi complète que l'étude des programmes entiers, car nous pouvons toujours rajouter une classe \fj{Main} qui n'aie qu'une méthode \fj{Main.main} dont le corps soit l'expression de notre programme. Alors tester cette nouvelle \eng{class table} reviendra à tester le programme entier. La transformation est présentée \autoref{fig:prgToCT}. + \begin{figure} \begin{center} \begin{multicols}{2} \null\vfill @@ -239,7 +240,6 @@ \end{fjlisting} \vfill\null \columnbreak - \null\vfill \begin{fjlisting}[width=.4\textwidth] class XXX extends XXX \{\\ \}\\ @@ -248,9 +248,11 @@ \fjmethod{Object}{main}{}{expression} } \end{fjlisting} - \vfill\null \end{multicols} \end{center} + \caption{Transformation d'un programme en \eng{class table}} + \label{fig:prgToCT} + \end{figure} Alors, on a transformé le \emph{programme} en \emph{\eng{class table}}, et si nous voulons tester le main du programme, il suffit de tester ce que renvoie l'expression \fj{new Main().main()}, qui se réduit en une étape en le main du programme. \paragraph{Idée d'une nouvelle structure} @@ -566,7 +568,7 @@ Nous noterons la plupart du temps simplement $\prec$ pour désigner $\prec_\mathfrak{T}$ si la \eng{test interface} considérée est sans ambiguïté. - Nous allons d'abord renforcer ce préordre, avant de fournir un exemple complet \autoref{sec:exPreordre}. + Nous allons déjà renforcer ce préordre, avant de fournir un exemple complet \autoref{sec:exPreordre}. \subsection{Renforcement de ce préordre avec les valeurs infinies} @@ -671,7 +673,7 @@ \begin{figure} \begin{tcolorbox} \small - \lstinputlisting[language=FeatherweightJava,breaklines=true,linerange={29-62}]{FinalExample.java} + \lstinputlisting[language=FeatherweightJava,breaklines=true,linerange={29-62}, texcl]{FinalExample.java} \end{tcolorbox} \caption{Seconde \eng{class tables}} \label{fig:equivex:second} diff --git a/header.tex b/header.tex index 02449fc..da36389 100644 --- a/header.tex +++ b/header.tex @@ -150,7 +150,12 @@ \lstdefinelanguage{FeatherweightJava}{ keywords = {new, this, true, false}, basicstyle=\ttfamily, - identifierstyle=\idstyle + identifierstyle=\idstyle, + literate=% + {à}{{\`a}}1 + {é}{{\'e}}1 + {è}{{\`e}}1 + {ù}{{\`u}}1 } %% Commande 4