diff --git a/documents/dossierPartieConception/Conception.pdf b/documents/dossierPartieConception/Conception.pdf index cf3c816..3abdee6 100644 Binary files a/documents/dossierPartieConception/Conception.pdf and b/documents/dossierPartieConception/Conception.pdf differ diff --git a/documents/dossierPartieConception/fichiers/final.tex b/documents/dossierPartieConception/fichiers/final.tex index e69de29..d73b66f 100644 --- a/documents/dossierPartieConception/fichiers/final.tex +++ b/documents/dossierPartieConception/fichiers/final.tex @@ -0,0 +1,19 @@ +\par Ce chapitre contient les diagrammes de classes représentant le logiciel codé. Les diagrammes de l'itération trois ont été complétés à partir du code pour ajouter les détails d'intégration dans le diagrammes (méthodes privées par exemple). + +\section{Paquetage interpreteurlir.donnees(.litteraux)} +\includegraphics[scale=0.55]{./img/COO/PackageDonnees} + +\section{Paquetage interpreteurlir.expressions} +\includegraphics[scale=0.55]{./img/COO/PackageExpression} + +\section{Paquetage interpreteurlir.programmes} +\includegraphics[scale=0.55]{./img/COO/PackageProgrammes} + +\section{Paquetage interpreteurlir.motscles} +\includegraphics[scale=0.60]{./img/COO/PackageMotscles} + +\section{Paquetage interpreteurlir.motscles.instructions} +\includegraphics[scale=0.60]{./img/COO/PackageInstruction} + +\section{Paquetage interpreteurlir} +\includegraphics[scale=0.55]{./img/COO/PackageInterpreteurlir} \ No newline at end of file diff --git a/documents/dossierPartieConception/fichiers/iteration1.tex b/documents/dossierPartieConception/fichiers/iteration1.tex index e69de29..511b9cd 100644 --- a/documents/dossierPartieConception/fichiers/iteration1.tex +++ b/documents/dossierPartieConception/fichiers/iteration1.tex @@ -0,0 +1,29 @@ +\par L'objectif de l'itération 1 était un prototype qui devait premièrement pouvoir se lancer et s'éteindre. De plus le prototype devait pouvoir gérer (mémorisation, affectation) des données de type chaines. Les commandes debut, defs, fin et l'instruction var ont donc été ajoutés afin d'obtenir ces fonctionnalités. + +\section{Paquetage interpreteurlir.donnees.litteraux} +\includegraphics[scale=0.75]{./img/COO/COO_prototype_1/PackageLitteraux} +\par Le choix de conception des littéraux a été une classe parente Litteral qui permet d'englober tous les types de données du programme. +La classe Entier a été détaillé dans la conception cependant elle n'a pas été codée à cette itération pour se concentrer sur les chaînes. +Les littéraux sont immuables pour permettre leur passage sans problème. + +\section{Paquetage interpreteurlir.donnees} +\includegraphics[scale=0.65]{./img/COO/COO_prototype_1/PackageDonnees} +\par Pour les données une classe variable a été choisie composée d'un littéral et d'un identificateur. +L'identificateur a comme classes dérivées les deux types affectables du projet soit les entiers et les chaînes. + +\section{Paquetage interpreteurlir.expressions} +\includegraphics[scale=0.60]{./img/COO/COO_prototype_1/PackageExpressions} +\par Comme pour le reste de notre conception les expressions sont typées et sont une spécialisation d'une classe Expression générale regroupant les comportements communs. Une méthode de classe d'Expression permet de créer le bon type d'expression. + +\section{Paquetage interpreteurlir.motscles} +\includegraphics[scale=0.60]{./img/COO/COO_prototype_1/PackageMotscles} +\par La conception de l'itération 1 contient ce qui devait être faits lors de cette itération à quelques détaille près comme la classe InstructionAffiche qui n'a pas été codée car non nécessaire aux fonctionnalités choisies. +L'itération 1 voulait permettre de manier des chaînes il fallait donc que les commandes connaissent le contexte contenant les variables. La solution choisie a été une attribut d'instance dans Commande initialiser à la construction de la commande par passage de la référence du contexte global par le constructeur. Une instance de commande correspond à un objet ayant toutes les informations nécessaire pour être exécuté (String arguments dans le constructeur). Les commandes et instructions fonctionnent en 2 temps, la construction qui valide les arguments et créer les éléments nécessaires à l'exécution puis l'exécution qui est la réalisation du comportement de la commande. + +\section{Paquetage interpreteurlir} +\includegraphics[scale=0.60]{./img/COO/COO_prototype_1/PackageInterpreteurlir} +\par Le contexte regroupe l'entièreté des variables définies dans la session courante. Une variable n'est accessible que par l'intermédiaire du contexte grâce à l'identificateur qui sert de clé. L'Analyseur est la classe qui permet le fonctionnement de tout. Une mainLoop permet de demander en continue une ligne à l'utilisateur puis celle-ci est analyser, à partir du mot clé une commande/instruction est crée en passant le reste de la ligne en argument. L'analyse des arguments se fait au niveau le plus interne possible (Analyseur analyse le mot cle, la commande les arguments qui construit ensuite les éléments dont elle a besoin qui s'occupe eux-mêmes de vérifier leur validité à la construction). Si une erreur dans la ligne à interprété est détecté alors une InterpreteurException est levée et se propage jusqu'à l'analyseur qui affiche l'erreur. + +\section{Illustration avec des diagrammes d'objets} +\includegraphics[scale=0.50]{./img/COO/COO_prototype_1/Objet} +\par Voici des diagrammes qui ont été faits pendant la réflexion de cette conception. Ils permettent d'illustrer le fait qu'une instruction créer les éléments dont elle a besoin. Seul changement dans la conception par rapport à ces diagrammes : les opérateurs sont gérer en interne des instructions (il n'y pas de classe Operateur). \ No newline at end of file diff --git a/documents/dossierPartieConception/fichiers/iteration2.tex b/documents/dossierPartieConception/fichiers/iteration2.tex index e69de29..e9ae725 100644 --- a/documents/dossierPartieConception/fichiers/iteration2.tex +++ b/documents/dossierPartieConception/fichiers/iteration2.tex @@ -0,0 +1,32 @@ +\par L'itération 2 avait pour objectif d'ajouter le type entier. Puis il fallait pourvoir faire une programme, c'est-à-dire des instructions ordonnées avec des étiquettes exécutables plus tard. Pour compléter les objectifs de cette itération certaines commandes et instructions ont été réalisées (efface, liste, lance/affiche, entre, vaen, procedure, stop, retour). + +\section{Diagrammes d'objets} +Comme conseillé par notre tuteur, nous avons commencé la conception de l'itération 2 par des diagrammes d'objets. Ci-dessous quelques exemples. +\par +\includegraphics[scale=0.5]{./img/COO/COO_prototype_2/digrammesObjet/Diagramme d'objet la commande liste} +\par Le premier montre que la commande liste fait appel au programme (contenant les lignes de codes constituant un programmes) pour exécuter son comportement. +\par +\includegraphics[scale=0.5]{./img/COO/COO_prototype_2/digrammesObjet/Diagramme d'objet de la commande efface} +\par La commande efface connait donc les deux étiquettes qui définissent sont comportement spécifique d'instance. Pour sont exécution elle doit connaitre le programme global de la session courante de l'interpréteur LIR. + +\section{Paquetage interpreteurlir.donnees(.litteraux)} +\par Les paquetages donnees et litteraux n'ont que très peu changé en conception mais les classe liées aux entiers ont été codés pendant cette itération. + +\section{Paquetage interpreteurlir.expressions} +\par Comme pour les données, pas de changement de conception mais programmtion de ExpressionEntier. + +\section{Paquetage interpreteurlir.programmes} +\includegraphics[scale=0.5]{./img/COO/COO_prototype_2/PackageProgrammes} +\par Premièrement la classe étiquette permet d'ordonner les lignes de codes. Le Programme contient des méthodes pour tous les comportement qu'il doit réaliser ce qui permet de les intégrés en interne ce qui rend leur usage plus simple pour les commandes et instructions. Seul la méthode vaen est absente de la conception car nous nous sommes rendu compte qu'elle était nécessaire pendant la programmation. Autre changement, le programme doit enregistrés les lignes de codes. La conception montre une classe LigneCode prévue à cet effet cependant sur le conseil de notre tuteur nous avons utilisé une TreeMap ce qui a rendu LigneCode obsolète. La classe avait été programmée et testée mais nous l'avons supprimée car TreeMap était une meilleur solution. + +\section{Paquetage interpreteurlir.motscles} +\includegraphics[scale=0.45]{./img/COO/COO_prototype_2/PackageCommande} +\par Les commandes à ajouter à cette itération ont été ajoutée à la conception en suivant le même principe de la dualité construction/exécution. Seul changement notable (non montré dans le diagramme car décidé pendant la programmation), l'ajout du programme nécessite que les commandes connaissent celui-ci. Après une longue réflexion nous avons choisis de le déclaré comme attribut protected dans la classe Commande et de le référencer au lancement de l'interpréteur sans savoir si c'était un bon choix ou non. + +\section{Paquetage interpreteurlir.motscles.instructions} +\includegraphics[scale=0.45]{./img/COO/COO_prototype_2/PackageInstruction} +\par Aucun changement notable, seulement ajout des nouvelles instructions. + +\section{Paquetage interpreteurlir} +\includegraphics[scale=0.45]{./img/COO/COO_prototype_2/PackageInterpreteurlir} +\par Ajout de l'exception ExecutionException lancée pour une erreur à l'exécution comme une division par 0 (contrairement à l'InterpreteurException qui est lancée à la construction). Elle également affichée par l'Analyseur. \ No newline at end of file diff --git a/documents/dossierPartieConception/fichiers/iteration3.tex b/documents/dossierPartieConception/fichiers/iteration3.tex index e69de29..f6e5f1a 100644 --- a/documents/dossierPartieConception/fichiers/iteration3.tex +++ b/documents/dossierPartieConception/fichiers/iteration3.tex @@ -0,0 +1,20 @@ +\par L'itération 3 à ajoutée les expressions booléennes avec l'instruction si vaen. Et les commandes permettent d'enregistrer et charger un programme LIR dans l'interpréteur (commande charge et sauve). + +\section{Diagrammes d'objets} +\includegraphics[scale=0.80]{./img/COO/COO_prototype_3/digrammesObjet/charge} +\par Les commandes sauve et charge sont liées au programme pour pouvoir charger ou récupérer des lignes de codes. Ces commandes connaissent une chaînes de texte correspondant au chemin du fichier. +\par +\includegraphics[scale=0.75]{./img/COO/COO_prototype_3/digrammesObjet/siVaen} +\par L'instruction si a besoin pour fonctionner d'une ExpressionBooleenne et de connaitre le contexte pour chercher les valeurs des variables à comparer. Elle doit connaitre l'étiquette où aller si la condition est vraie et donc du programme pour appeler la méthode du programme vaen. + +\section{Paquetage interpreteurlir.donnees(.litteraux)} +\includegraphics[scale=0.40]{./img/COO/COO_prototype_3/PackageDonnees} +\par Le type booléen hérite de Litteral pour garder la logique de Litteral pouvant référencer chaque type de valeur du programme. + +\section{Paquetage interpreteurlir.expressions} +\includegraphics[scale=0.45]{./img/COO/COO_prototype_3/PackageExpression} +\par L'expression booléenne ne s'obtient pas avec la méthode determinerExpression car celle-ci est utilisée que par si vaen qui utilise que ce type d'expression. Le constructeur d'ExpressionBooleenne est donc utilisé directement. + +\section{Diagramme de classe général} +\includegraphics[scale=0.35]{./img/COO/COO_prototype_3/Scéma général simplifié} +\par Les commandes sauve et charge ont été ajoutés à la conception mais sont similaires aux autres commandes. Pareil pour l'instruction si vaen. Ce diagramme général permet de voir l'ensemble de la conception pour ce qui est des associations et généralisation des classes. \ No newline at end of file diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_1/Objet.png b/documents/dossierPartieConception/img/COO/COO_prototype_1/Objet.png new file mode 100644 index 0000000..396de77 Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_1/Objet.png differ diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_1/PackageDonnees.png b/documents/dossierPartieConception/img/COO/COO_prototype_1/PackageDonnees.png new file mode 100644 index 0000000..feec639 Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_1/PackageDonnees.png differ diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_1/PackageExpressions.png b/documents/dossierPartieConception/img/COO/COO_prototype_1/PackageExpressions.png new file mode 100644 index 0000000..2594f5c Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_1/PackageExpressions.png differ diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_1/PackageInterpreteurlir.png b/documents/dossierPartieConception/img/COO/COO_prototype_1/PackageInterpreteurlir.png new file mode 100644 index 0000000..95a6261 Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_1/PackageInterpreteurlir.png differ diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_1/PackageLitteraux.png b/documents/dossierPartieConception/img/COO/COO_prototype_1/PackageLitteraux.png new file mode 100644 index 0000000..a39f24d Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_1/PackageLitteraux.png differ diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_1/PackageMotsCles.png b/documents/dossierPartieConception/img/COO/COO_prototype_1/PackageMotsCles.png new file mode 100644 index 0000000..cf1d10f Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_1/PackageMotsCles.png differ diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_2/PackageCommande.png b/documents/dossierPartieConception/img/COO/COO_prototype_2/PackageCommande.png new file mode 100644 index 0000000..f77e4be Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_2/PackageCommande.png differ diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_2/PackageDonnees.png b/documents/dossierPartieConception/img/COO/COO_prototype_2/PackageDonnees.png new file mode 100644 index 0000000..d3b8d01 Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_2/PackageDonnees.png differ diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_2/PackageExpression.png b/documents/dossierPartieConception/img/COO/COO_prototype_2/PackageExpression.png new file mode 100644 index 0000000..5c69658 Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_2/PackageExpression.png differ diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_2/PackageInstruction.png b/documents/dossierPartieConception/img/COO/COO_prototype_2/PackageInstruction.png new file mode 100644 index 0000000..4ed9bd1 Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_2/PackageInstruction.png differ diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_2/PackageInterpreteurlir.png b/documents/dossierPartieConception/img/COO/COO_prototype_2/PackageInterpreteurlir.png new file mode 100644 index 0000000..6baac48 Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_2/PackageInterpreteurlir.png differ diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_2/PackageProgrammes.png b/documents/dossierPartieConception/img/COO/COO_prototype_2/PackageProgrammes.png new file mode 100644 index 0000000..4b93a5a Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_2/PackageProgrammes.png differ diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_2/SchemaGeneralSimplifie.png b/documents/dossierPartieConception/img/COO/COO_prototype_2/SchemaGeneralSimplifie.png new file mode 100644 index 0000000..c957b1f Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_2/SchemaGeneralSimplifie.png differ diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_2/digrammesObjet/Diagramme d'objet de etiquette.png b/documents/dossierPartieConception/img/COO/COO_prototype_2/digrammesObjet/Diagramme d'objet de etiquette.png new file mode 100644 index 0000000..a700c3c Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_2/digrammesObjet/Diagramme d'objet de etiquette.png differ diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_2/digrammesObjet/Diagramme d'objet de l'instruction entre.png b/documents/dossierPartieConception/img/COO/COO_prototype_2/digrammesObjet/Diagramme d'objet de l'instruction entre.png new file mode 100644 index 0000000..d418f08 Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_2/digrammesObjet/Diagramme d'objet de l'instruction entre.png differ diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_2/digrammesObjet/Diagramme d'objet de l'instruction stop.png b/documents/dossierPartieConception/img/COO/COO_prototype_2/digrammesObjet/Diagramme d'objet de l'instruction stop.png new file mode 100644 index 0000000..6048eb9 Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_2/digrammesObjet/Diagramme d'objet de l'instruction stop.png differ diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_2/digrammesObjet/Diagramme d'objet de la commande efface.png b/documents/dossierPartieConception/img/COO/COO_prototype_2/digrammesObjet/Diagramme d'objet de la commande efface.png new file mode 100644 index 0000000..c15c95a Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_2/digrammesObjet/Diagramme d'objet de la commande efface.png differ diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_2/digrammesObjet/Diagramme d'objet de la commande lance.png b/documents/dossierPartieConception/img/COO/COO_prototype_2/digrammesObjet/Diagramme d'objet de la commande lance.png new file mode 100644 index 0000000..bf91eae Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_2/digrammesObjet/Diagramme d'objet de la commande lance.png differ diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_2/digrammesObjet/Diagramme d'objet la commande liste.png b/documents/dossierPartieConception/img/COO/COO_prototype_2/digrammesObjet/Diagramme d'objet la commande liste.png new file mode 100644 index 0000000..3f4bce9 Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_2/digrammesObjet/Diagramme d'objet la commande liste.png differ diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_3/PackageCommande.png b/documents/dossierPartieConception/img/COO/COO_prototype_3/PackageCommande.png new file mode 100644 index 0000000..b1c4f7f Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_3/PackageCommande.png differ diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_3/PackageDonnees.png b/documents/dossierPartieConception/img/COO/COO_prototype_3/PackageDonnees.png new file mode 100644 index 0000000..05ef907 Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_3/PackageDonnees.png differ diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_3/PackageExpression.png b/documents/dossierPartieConception/img/COO/COO_prototype_3/PackageExpression.png new file mode 100644 index 0000000..f628438 Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_3/PackageExpression.png differ diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_3/PackageInstruction.png b/documents/dossierPartieConception/img/COO/COO_prototype_3/PackageInstruction.png new file mode 100644 index 0000000..4ca98fb Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_3/PackageInstruction.png differ diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_3/PackageInterpreteurlir.png b/documents/dossierPartieConception/img/COO/COO_prototype_3/PackageInterpreteurlir.png new file mode 100644 index 0000000..7eff880 Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_3/PackageInterpreteurlir.png differ diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_3/PackageProgrammes.png b/documents/dossierPartieConception/img/COO/COO_prototype_3/PackageProgrammes.png new file mode 100644 index 0000000..d0dc908 Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_3/PackageProgrammes.png differ diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_3/Scéma général simplifié.png b/documents/dossierPartieConception/img/COO/COO_prototype_3/Scéma général simplifié.png new file mode 100644 index 0000000..2676b77 Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_3/Scéma général simplifié.png differ diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_3/digrammesObjet/charge.png b/documents/dossierPartieConception/img/COO/COO_prototype_3/digrammesObjet/charge.png new file mode 100644 index 0000000..8ac426c Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_3/digrammesObjet/charge.png differ diff --git a/documents/dossierPartieConception/img/COO/COO_prototype_3/digrammesObjet/siVaen.png b/documents/dossierPartieConception/img/COO/COO_prototype_3/digrammesObjet/siVaen.png new file mode 100644 index 0000000..a57768d Binary files /dev/null and b/documents/dossierPartieConception/img/COO/COO_prototype_3/digrammesObjet/siVaen.png differ diff --git a/documents/dossierPartieConception/img/COO/PackageDonnees.png b/documents/dossierPartieConception/img/COO/PackageDonnees.png new file mode 100644 index 0000000..9884c21 Binary files /dev/null and b/documents/dossierPartieConception/img/COO/PackageDonnees.png differ diff --git a/documents/dossierPartieConception/img/COO/PackageExpression.png b/documents/dossierPartieConception/img/COO/PackageExpression.png new file mode 100644 index 0000000..b33f16f Binary files /dev/null and b/documents/dossierPartieConception/img/COO/PackageExpression.png differ diff --git a/documents/dossierPartieConception/img/COO/PackageInstruction.png b/documents/dossierPartieConception/img/COO/PackageInstruction.png new file mode 100644 index 0000000..abd34cc Binary files /dev/null and b/documents/dossierPartieConception/img/COO/PackageInstruction.png differ diff --git a/documents/dossierPartieConception/img/COO/PackageInterpreteurlir.png b/documents/dossierPartieConception/img/COO/PackageInterpreteurlir.png new file mode 100644 index 0000000..1c28bee Binary files /dev/null and b/documents/dossierPartieConception/img/COO/PackageInterpreteurlir.png differ diff --git a/documents/dossierPartieConception/img/COO/PackageMotscles.png b/documents/dossierPartieConception/img/COO/PackageMotscles.png new file mode 100644 index 0000000..3ccfe75 Binary files /dev/null and b/documents/dossierPartieConception/img/COO/PackageMotscles.png differ diff --git a/documents/dossierPartieConception/img/COO/PackageProgrammes.png b/documents/dossierPartieConception/img/COO/PackageProgrammes.png new file mode 100644 index 0000000..01b3ab2 Binary files /dev/null and b/documents/dossierPartieConception/img/COO/PackageProgrammes.png differ