IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Besoin d'aide pour passage d'un algo au langage JAVA


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Par défaut Besoin d'aide pour passage d'un algo au langage JAVA
    J'ais posté un lien sur le forum algo, pour réussire a créer un algo faisant ce que je voulais
    L'algo

    Plusieur personnes m'ont dit de le poster ici alors c'est ce que je fais... Je n'arrive toujours pas à résoudre mon problème (crée l'algo) mais je poste ici au cas ou quelqu'un aurait une idée aprés avoir vu tout ceci pour créer le programe en JAVA... je suis bloqué la dessus depuis plusieurs jours... alors si quelqu'un sais comment m'aider son aide est la bienvenue... D'avance merci

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    - deux interfaces: operator et operand
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public interface Operator {
    	Operand getResult(List<Operand> operands);
    }
    public interface Operand {
    	double getValue();
    }
    - des implementations d'operand : Expression, Value, ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    public class Expression implements Operand {
    	private Operator operator = null;
    	private List<Operand> operandList = null;
    	public Expression(Operator op, Operand[] operands) {
    		this.operator=op;
    		this.operandList=Arrays.asList(operands);
    	}
    	public double getValue() {
    		return operator.getResult(operandList).getValue();
    	}
    }
     
    public class Value implements Operand {
    	private double value;
    	public Value(double value) {
    		this.value = value;
    	}
    	public double getValue() {
    		return this.value;
    	}
    }
    - des implementations d'operator : Add, Sub, Mul, ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class Add implements Operator {
    	public Operand getResult(List<Operand> operands) {
    		double d = operands.get(0).getValue() + operands.get(1).getValue();
    		return new Value(d);
    	}
    }
    et hop. fini !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    public static void main(String[] args) {
    	// exp = 1 + ( 10 + 5 )
    	Expression exp = new Expression(
    		new Add(),
    		new Operand[] {
    			new Value(1),
     
    			new Expression(
    				new Add(),
    				new Operand[] {
    					new Value(10),
    					new Value(5)
    				}
    			)
    		}
    	);
    	System.out.println("result="+exp.getValue()); //  = 16 :-)
    }
    NB: on peut aussi mettre toutes les implementations d'operator dans un Enum, ca fait plus joli.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre éclairé Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Par défaut
    Je suis désolé vraiment, je te remercie pour m'avoir aider mais j'ais du mal a comprendre ton code... pourrais tu m'éclairer???

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par Spinoza23
    Je suis désolé vraiment, je te remercie pour m'avoir aider mais j'ais du mal a comprendre ton code... pourrais tu m'éclairer???
    Et depuis quand on doit expliquer et documenter son code ?

    Bon alors, tout est dans la définition des interfaces.
    - Operator: Decrit une opération (addition, soustraction, etc.)
    - Operand: Décrit une expression/valeur qui est utilisé par un Operator


    Regardons Operator de plus pres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public interface Operator {
    	Operand getResult(List<Operand> operands);
    }
    Un operator, quel qu'il soit, prend une liste d'operand en entrée et renvoie une (et une seule) operand en sortie.

    Par exemple, l'addition:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class Add implements Operator {
    	public Operand getResult(List<Operand> operands) {
    		double d = operands.get(0).getValue() + operands.get(1).getValue();
    		return new Value(d);
    	}
    }
    Cet Operator recupere les valeurs des 2 premieres Operand de la liste, les additione, et créé une nouvelle operand de sortie (ici une Value)


    Regardons Operand de plus pres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public interface Operand {
    	double getValue();
    }
    Une Operand doit juste renvoyer sa valeur sous forme de double.

    On distingue 2 types d'Operand.
    - Les Operand qui sont des nombres (la classe Value)
    - Les Operand qui sont des expressions qu'il faudra evaluer (la classe Expression)

    Il reste a implementer la methode "getValue()" pour ces 2 types d'Operand.

    Pour les nombres, c'est tout bete. Un simple wrapper sur un double.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    new Value(double value);
     
    Value.getValue() --> { return this.value; }
    Les expressions sont définies comme etant un Operator ET une liste d'Operand (les operand peuvent elles meme etre des expressions ou des nombres). Pour connaitre la valeur de l'expression, on demande a l'Operator de faire son boulot: prendre la liste d'operand en entrée et nous renvoyer l'operand résultat en sortie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    new Expression(Operator op, Operand[] operands)
     
    Expression.getValue() --> { return operator.getResult(operands).getValue() }
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre éclairé Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Par défaut
    Ok je te remercie, ca a l'air tendu mais je vais tacher de me débrouiller au mieux avec cela... meme si je vais peu etre changer totalement d'idée...

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par Spinoza23
    Ok je te remercie, ca a l'air tendu mais je vais tacher de me débrouiller au mieux avec cela... meme si je vais peu etre changer totalement d'idée...
    Tendu ? lol... heureusement que j'ai pas utilisé de les EJB 2.0 !!!

    Si tu as des questions, n'hesite pas...
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/11/2014, 21h57
  2. Besoin d'aide pour implementer un algo
    Par mobscene dans le forum Langage
    Réponses: 7
    Dernier message: 30/11/2006, 16h17
  3. Besoin d'aide pour algo
    Par vodevil dans le forum Langage
    Réponses: 8
    Dernier message: 08/03/2006, 13h45
  4. Besoin d'aide pour passage de mysql a sql server
    Par mobscene dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 07/12/2005, 07h55
  5. besoin d'aide pour des algos
    Par mathieu77 dans le forum Algorithmes et structures de données
    Réponses: 23
    Dernier message: 08/11/2005, 18h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo