Classe StructureSi
Description Générale
La classe StructureSi
représente une structure conditionnelle de type if-else
dans l'éditeur graphique d'AlgoForge. Elle permet de gérer des conditions multiples et leurs branches associées. Cette classe hérite de StructureAlternative
et ajoute des fonctionnalités spécifiques, telles que la transformation en structure switch
et la détection d'anomalies liées aux conditions.
Héritage
- Classe parente :
StructureAlternative
- La classe
StructureSi
hérite de toutes les fonctionnalités de base deStructureAlternative
, notamment la gestion des conditions, des enfants, et des interactions utilisateur.
- La classe
Responsabilités Principales
1. Gestion des Conditions
-
Liste des conditions :
- Propriété
_listeConditions
: Contient les conditions associées à la structureSi
. - Méthodes associées :
get _listeConditions()
: Renvoie la liste des conditions.set _listeConditions(value)
: Définit une nouvelle liste de conditions.
- Propriété
-
Ajout et suppression de conditions :
- Méthode
ajouterCondition()
:- Ajoute une nouvelle condition à la structure
Si
. - Ajoute un bouton interactif (
+
) pour permettre l'ajout de conditions via l'interface utilisateur.
- Ajoute une nouvelle condition à la structure
- Méthode
supprimerCondition()
:- Supprime une condition spécifique ou vide.
- Ajoute un bouton interactif (
-
) pour permettre la suppression de conditions via l'interface utilisateur.
- Méthode
2. Affichage
- Affichage de la structure
Si
:- Méthode
afficher()
:- Affiche la structure
Si
sur le plan de travail. - Ajoute des éléments visuels, tels que des triangles interactifs pour ajouter ou supprimer des conditions.
- Affiche les conditions dans un conteneur dédié.
- Affiche la structure
- Méthode
3. Exportation des Données
-
Formats supportés :
- JSON.
-
Méthodes associées :
toJSON()
:- Exporte les informations de la structure
Si
sous forme JSON. - Inclut les coordonnées et les conditions.
- Exporte les informations de la structure
toJSONspecifier(listeElemEnfantsAConcerver)
:- Exporte les informations en spécifiant les enfants à conserver.
4. Transformation en Structure Switch
-
Détection de la possibilité de transformation :
- Méthode
detecterPotentielTransformationSwitch()
:- Vérifie si la structure
Si
peut être transformée en une structureSwitch
. - Conditions nécessaires :
- Toutes les conditions doivent utiliser la même variable.
- Les conditions doivent être des comparaisons simples (ex. :
a = 1
,a = 2
).
- Vérifie si la structure
- Méthode
-
Transformation en structure
Switch
:- Méthode
genererOptionsContextuelles(editeur)
:- Ajoute une option contextuelle pour transformer la structure
Si
en une structureSwitch
. - Crée une nouvelle structure
Switch
et y transfère les conditions pertinentes.
- Ajoute une option contextuelle pour transformer la structure
- Méthode
5. Détection des Anomalies
- Recherche des anomalies :
- Méthode
rechercherAnomalies()
:- Recherche les anomalies spécifiques à la structure
Si
. - Exemples d'anomalies détectées :
- ErreurSyntaxeComparaison : Erreurs dans la syntaxe des comparaisons.
- AvertissementTropDeSousElements : Trop de sous-éléments dans la structure.
- AvertissementInformationsInconsistantesSi : Incohérences dans les informations des conditions.
- AvertissementStructureInoptimale : Structure mal optimisée.
- ErreurTypesInconsistantsAlternatif : Types incohérents dans les branches alternatives.
- Recherche les anomalies spécifiques à la structure
- Méthode
Attributs Internes
Attributs principaux :
_listeConditions
: Liste des conditions associées à la structureSi
._mouseDownTime
: Temps du clic de souris (utilisé pour des interactions spécifiques).
Méthodes Clés
Méthodes de gestion des conditions :
ajouterCondition()
: Ajoute une nouvelle condition.supprimerCondition()
: Supprime une condition spécifique ou vide.
Méthodes d'affichage :
afficher()
: Affiche la structureSi
sur le plan de travail.
Méthodes d'exportation :
toJSON()
: Exporte la structureSi
sous forme JSON.toJSONspecifier(listeElemEnfantsAConcerver)
: Exporte la structure en spécifiant les enfants à conserver.
Méthodes de transformation :
detecterPotentielTransformationSwitch()
: Vérifie si la transformation enSwitch
est possible.genererOptionsContextuelles(editeur)
: Ajoute une option pour transformer la structureSi
enSwitch
.
Méthodes de détection des anomalies :
rechercherAnomalies()
: Recherche les anomalies spécifiques à la structureSi
.
Exemple d'Utilisation
Création d'une Structure Si
const structureSi = new StructureSi(10, 20);
document.body.appendChild(structureSi);
Ajout d'une Condition
const condition = new Condition();
structureSi.ajouterCondition(condition);
Exportation en JSON
const json = structureSi.toJSON();
console.log(json);
Transformation en Structure Switch
if (structureSi.detecterPotentielTransformationSwitch().result) {
structureSi.genererOptionsContextuelles(editeur);
}
Détection des Anomalies
const anomalies = structureSi.rechercherAnomalies();
console.log(anomalies);