Classe Probleme
Description Générale
La classe Probleme
représente l'élément de base d'un algorithme dans l'éditeur graphique d'AlgoForge. Elle hérite de la classe ElementGraphique
et ajoute des fonctionnalités spécifiques pour gérer les données, les résultats, les sous-plans, et les interactions utilisateur. Chaque instance de Probleme
peut être manipulée graphiquement et exportée dans différents formats.
Responsabilités Principales
1. Gestion des Propriétés
-
Libellé :
- Propriété
_libelle
: Définit le nom ou la description du problème. - Méthodes associées :
get libelle()
: Renvoie le libellé du problème.set libelle(value)
: Définit un nouveau libellé.
- Propriété
-
Données et résultats :
- Propriétés
_listeDonnes
et_listeResultats
: Contiennent les données et résultats associés au problème. - Méthodes associées :
get listeDonnes()
etset listeDonnes(value)
: Accès et modification des données.get listeResultats()
etset listeResultats(value)
: Accès et modification des résultats.
- Propriétés
-
Parent et sous-plan :
- Propriété
_elemParent
: Définit le parent de l'élément. - Propriété
_sousPlan
: Référence à un sous-plan de travail associé au problème. - Méthodes associées :
get _elemParent()
etset _elemParent(value)
: Accès et modification du parent.peutEtreDecompose()
: Vérifie si le problème peut être décomposé.
- Propriété
2. Gestion des Interactions
-
Affichage :
- Méthode
afficher()
:- Affiche le problème à l'écran avec ses données, résultats, et libellé.
- Ajoute des événements pour gérer les interactions utilisateur (ex. : modification des données ou du libellé).
- Méthode
-
Options contextuelles :
- Méthode
genererOptionsContextuelles(editeur)
:- Génère une liste d'options contextuelles pour le problème.
- Exemples d'options :
- "Décomposer ailleurs" : Crée un sous-plan pour le problème.
- "Exporter le sous-arbre" : Exporte le problème et ses descendants dans différents formats.
- Méthode
-
Suppression :
- Méthode
supprimer()
:- Supprime le problème, ses liens avec le parent et les enfants, ainsi que son sous-plan (le cas échéant).
- Méthode
3. Gestion des Sous-Plans
-
Décomposition :
- Méthode
decomposerAutrePlan()
:- Crée un sous-plan pour le problème et y déplace ses descendants.
- Applique un décalage aux coordonnées des éléments pour les ajuster au nouveau plan.
- Méthode
-
Recomposition :
- Méthode
genererOptionsContextuelles()
:- Ajoute une option pour recomposer le problème sur le même plan en supprimant le sous-plan.
- Méthode
4. Exportation des Données
-
Formats supportés :
- JSON, PNG, JPG, SVG, CSV, XLSX, Markdown.
-
Méthodes associées :
toJSON()
:- Exporte les informations du problème sous forme JSON.
- Inclut les données, résultats, libellé, et enfants.
toJSONspecifier(listeElemEnfantsAConcerver)
:- Exporte les informations en spécifiant les enfants à conserver.
-
Options contextuelles d'exportation :
- Méthode
genererOptionsContextuelles()
:- Ajoute des options pour exporter le problème et ses descendants dans différents formats.
- Méthode
5. Détection des Anomalies
- Recherche des anomalies :
- Méthode
rechercherAnomalies()
:- Recherche les anomalies conceptuelles dans le problème.
- Exemples d'anomalies détectées :
- Données magiques.
- Données inutilisées.
- Résultats inutilisés.
- Syntaxe incorrecte dans les assignations.
- Trop de sous-éléments.
- Données dynamiquement typées.
- Méthode
6. Manipulation des Données
-
Extraction des informations :
- Méthode
extraireInformation()
:- Extrait les informations du problème, y compris les données, résultats, et variables du texte.
- Méthode
-
Renommage des informations :
- Méthode
renameInformation(ancienNom, nouveauNom)
:- Renomme une information dans le libellé, les données, et les résultats.
- Méthode
-
Recherche et remplacement :
- Méthodes associées :
replaceTexte(chaineAChercher, chaineARemplacer)
: Remplace une chaîne dans le libellé.replaceTexteDonnee(chaineAChercher, chaineARemplacer)
: Remplace une chaîne dans les données.replaceTexteResultat(chaineAChercher, chaineARemplacer)
: Remplace une chaîne dans les résultats.
- Méthodes associées :
7. Gestion des Coordonnées
-
Positionnement :
- Méthodes associées :
getTailleAbscisse()
: Renvoie la largeur du problème.getTailleOrdonnee()
: Renvoie la hauteur du problème.
- Méthodes associées :
-
Ancrages :
- Méthodes associées :
getAncreDecomposition()
: Renvoie l'ancre de décomposition.getAncreComposition()
: Renvoie l'ancre de composition.
- Méthodes associées :
Attributs Internes
Attributs principaux :
_libelle
: Libellé du problème._listeDonnes
: Liste des données associées au problème._listeResultats
: Liste des résultats associés au problème._elemParent
: Référence au parent de l'élément._sousPlan
: Référence au sous-plan associé au problème.
Méthodes Clés
Méthodes de gestion des propriétés :
get libelle()
etset libelle(value)
: Accès et modification du libellé.get listeDonnes()
etset listeDonnes(value)
: Accès et modification des données.get listeResultats()
etset listeResultats(value)
: Accès et modification des résultats.
Méthodes de gestion des interactions :
afficher()
: Affiche le problème à l'écran.genererOptionsContextuelles(editeur)
: Génère les options contextuelles pour le problème.supprimer()
: Supprime le problème.
Méthodes de gestion des sous-plans :
decomposerAutrePlan()
: Crée un sous-plan pour le problème.
Méthodes d'exportation :
toJSON()
: Exporte le problème sous forme JSON.toJSONspecifier(listeElemEnfantsAConcerver)
: Exporte le problème en spécifiant les enfants à conserver.
Méthodes de détection des anomalies :
rechercherAnomalies()
: Recherche les anomalies dans le problème.
Exemple d'Utilisation
Création d'un Problème
const probleme = new Probleme(10, 20, "Exemple de problème");
document.body.appendChild(probleme);
Modification des Données
probleme.listeDonnes = ["donnée1", "donnée2"];
console.log(probleme.listeDonnes);
Exportation en JSON
const json = probleme.toJSON();
console.log(json);
Détection des Anomalies
const anomalies = probleme.rechercherAnomalies();
console.log(anomalies);