Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1529 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Analyse sytaxique orientée objet

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Analyse sytaxique orientée objet

n°1303449
vouzico
Bro Naoned e Breizh
Posté le 11-02-2006 à 13:58:25  profilanswer
 

Dans le cadre d'un projet de C++ il est demandé d'analyser une ligne de commandes entrée par l'utilisateur et, si elle n'est pas juste, de préciser à cet utilisateur quelles erreurs il a fait.
Le prof nous a bien précisé de faire ca avec la "philosophie orienté objet" mais je vois pas trop comment faire :heink:  
 
Voila tous les cas possibles :  
 
-Pour la creation
create triangle  nomtriangle  couleur  coord1 coord2 coord3
create rond   nomcarre  couleur  coord1 coord2
create rectangle  nomrectangle couleur  coord1 coord2
create parralelogramme  couleur  coord1   coord2 coord3 coord4
 
-Pour l'affichage  
displayall
 
-Pour placer derriere/devant
put back nomfigure
put front  nomfigure
 
-Changer de groupe/sortir du groupe :
move nomfigure groupe
move nomfigure
 
Je pensais mettre un classe de base Analyse qui contiendrait :
 
-la chaine entrée par l'utilisateur
-une méthode pour voir si une figure existe déjà  
 
et faire des classes heritees de cette classe de base genre
 
-CreateTriangle qui aurait des methodes en plus pour vérifier qu'il y a bien 3 parametres et qu'ils ne forment pas une ligne (tous la meme ordonnee/abscisse), que la couleur existe.
-CreateCarre qui verifierait que le carré formé n'est pas une ligne
etc...
 
Problème : je dois analyser les 2 premiers mots par qui ? La classe Analyse ?  
Qui recupere le resultat de cet premiere analyse et instancie la classe CreateTriangle ? La classe Analyse ou je fais ca dans le .cpp ?
 
Si vous avez de meilleures idées merci de m'en faire part [:cupra] sachant que le prof insiste bien sur la notion d'orienté objet (bon en C j'aurais fait ca en 30 secondes mais bon [:mcwimpy4]
 
Merci d'avance


Message édité par vouzico le 14-02-2006 à 16:05:34
mood
Publicité
Posté le 11-02-2006 à 13:58:25  profilanswer
 

n°1304012
Veovis27
Posté le 13-02-2006 à 09:28:24  profilanswer
 

Salut,
 
Moi je te conseillerais de faire :
 
class Erreur; //Pour gérer toutes les erreurs (tu géres cette class selon l'analyse que tu vas faire, descendante, ascendante, etc...)
class Analyse; //Tu prends une phrase rentrer par l'utilisateur, et tu retournes soit un token, soit un caractere et c tout
 
class Creation : public Analyse; //Dedans tu implements ta grammaire, etc... pour les autres
class Affichage : public Analyse;
class Placer : public Analyse;
class Changer : public Analyse;

n°1305323
vouzico
Bro Naoned e Breizh
Posté le 14-02-2006 à 15:39:50  profilanswer
 

merci ca me parait un bon modèle d'autant plus qu'après avoir posé la question j'étais pas loin de le trouver tout seul :)
 
Cependant un autre truc :
j'ai une série de fonctions qui peuvent aider à corriger l'orthographe d'un mot par rapport à un modele (elles se trouvent dans la classe Analyse) elles seront utilisées par toutes les classes filles (Creation, Placer, Changer, etc...)
 
Mon idée était donc de faire un constructeur pour Creation qui enverrait un tableau de chaines de caracteres (les modeles qui sont propres à chaque classe fille) et les comparer un par un au mot rentré par l'utilisateur (dans la classe analyse). Cette dernière renverrait le mot correct à la classe Creation par exemple (avec une methode char* getResult()).  
Sachant que dans d'autre classes il y a d'autres vérifications que juste l'orthographe du premier mot (ca justifie l'héritage)
 
Seulement je ne sais pas comment passer le tableau de caractères propre à chaque Classe. En gros :
 
Dans mon code :  
=>analyse = correction
=> Creation = analyse
 
 

Code :
  1. #include "correction.h"
  2. class Analyse : public Correction
  3. {
  4. private :
  5.  char *chainebase;
  6.  char **tab;
  7. public :
  8. //////////////////////////////////////// CONSTRUCTEUR \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
  9.    
  10. Analyse::Analyse (char *chaine) :
  11.       Correction (chainebase, tab) // => Le problème est là : comment passer le bon tableau {"create", "displayall", "move", "put"} par exemple en paramètre pour faire une instance de Correction
  12.  {
  13.   int i=0, j=0;
  14.   while(chaine[i]!=' ')
  15.   {
  16.    i++;
  17.   }
  18.   chainebase = new char [i];
  19.   while(j!=i)
  20.   {
  21.    chainebase[j]=chaine[i];
  22.    j++;
  23.   }
  24.  }


Message édité par vouzico le 14-02-2006 à 16:04:50

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Analyse sytaxique orientée objet

 

Sujets relatifs
[JS] Variable dans le nom d'un objet...Petite question ajout d'objet pendant l'execution
VB6 dessiner objet DirectX sous PictureBoxprobleme pour créer objet
comment supprimer un objet que l'on crée[C#] Serializer un objet 'Font'
Probleme de serialisation d'objetProblème d'objet instancié?
Création d'objet dynamiqueconception classique ou objet ?
Plus de sujets relatifs à : Analyse sytaxique orientée objet


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR