Topic de SangreLatino :

[CUL 10/10][AIDE] Problème Patron COMPOSITE JAVA

Supprimé

Le 28 septembre 2021 à 23:40:32 :

Le 28 septembre 2021 à 23:38:09 :

Le 28 septembre 2021 à 23:35:31 :
Veirifie la liste mesOp pour voir si ton " diff " est enregistré

Il n'y a que le premier add qui est enregistré
D'où le fait que la taille de mesOP donne 1 :-(

Ça confirme ce que je dis kheyou

Le
" if (instance==null) " ne passe qu'une fois

Donc apres quand tu reappelles getInstance il ne lance plus les lignes
new Operagion(Op)
AjouterOperation(Op)

Et passe direct à return instance (qui est un " add " depuis le 5+3 )

Ouais je remarque ça en déboguant :(

Du coup je vois pas trop comment faire pour modifier cela (sans ajouter de méthode publique) :(

Le 28 septembre 2021 à 23:43:03 :
Déjà si on te demande de faire un singleton c'est que celui qui fait lénoncé ne maîtrise pas m'orienté objet

Les singletons c'est vraiment nul pour le coup :(

Tu peux pas rajouter à la suite du if(instance==null) (pseudo code fais pas gaffe a la syntaxe)

If(instance != null) (un else quoi)
{
Instance.nomOp = nomOp
This.nomOp = nomOp
AjouterOperarion(nomOp)
}

Ou juste :

{
Instance = new Operation(nomOp);
}
? Bah oui tu recrees un Operation mais il n'y en a toujours qu'un, comme le sujet demande.

Edit : oublie le premier car le instance est private :hap:

Mais tu peux le remplacer par un new Operation et ça restera un singleton

Le 28 septembre 2021 à 23:46:15 :
Tu peux pas rajouter à la suite du if(instance==null) (pseudo code fais pas gaffe a la syntaxe)

If(instance != null) (un else quoi)
{
Instance.nomOp = nomOp
This.nomOp = nomOp
AjouterOperarion(nomOp)
}

Ou juste :

{
Instance = new Operation(nomOp);
}
? Bah oui tu recrees un Operation mais il n'y en a toujours qu'un, comme le sujet demande.

Edit : oublie le premier car le instance est private :hap:

Mais tu peux le remplacer par un new Operation et ça restera un singleton

https://image.noelshack.com/fichiers/2021/39/2/1632865734-capture-d-ecran-du-2021-09-28-23-48-46.png

De cette manière j'imagine :hap:

J'ai un problème dans NoeudBinaire.java, et particulièrement dans : switch(getKey(Operation.mesOP, monOP))

EDIT: j'ai rajouté un else finalement :

https://image.noelshack.com/fichiers/2021/39/2/1632865900-capture-d-ecran-du-2021-09-28-23-51-29.png

Il faut aider ce Khey de qualitay ! :ok:

Le 28 septembre 2021 à 23:50:02 :

Le 28 septembre 2021 à 23:46:15 :
Tu peux pas rajouter à la suite du if(instance==null) (pseudo code fais pas gaffe a la syntaxe)

If(instance != null) (un else quoi)
{
Instance.nomOp = nomOp
This.nomOp = nomOp
AjouterOperarion(nomOp)
}

Ou juste :

{
Instance = new Operation(nomOp);
}
? Bah oui tu recrees un Operation mais il n'y en a toujours qu'un, comme le sujet demande.

Edit : oublie le premier car le instance est private :hap:

Mais tu peux le remplacer par un new Operation et ça restera un singleton

https://image.noelshack.com/fichiers/2021/39/2/1632865734-capture-d-ecran-du-2021-09-28-23-48-46.png

De cette manière j'imagine :hap:

J'ai un problème dans NoeudBinaire.java, et particulièrement dans : switch(getKey(Operation.mesOP, monOP))

EDIT: j'ai rajouté un else finalement :

https://image.noelshack.com/fichiers/2021/39/2/1632865900-capture-d-ecran-du-2021-09-28-23-51-29.png

Enleve le if en fait

Dans tous les cas tu vas rajouter ta nouvelle instance

Et oublie pas ton ajouterOperarion sinon MesOp fera la mauvaise taille

Pour moi getInstance devrair simplement être :
{
Instance = new Operation();
AjouterOperztion();
}

Le 28 septembre 2021 à 23:53:01 :

Le 28 septembre 2021 à 23:50:02 :

Le 28 septembre 2021 à 23:46:15 :
Tu peux pas rajouter à la suite du if(instance==null) (pseudo code fais pas gaffe a la syntaxe)

If(instance != null) (un else quoi)
{
Instance.nomOp = nomOp
This.nomOp = nomOp
AjouterOperarion(nomOp)
}

Ou juste :

{
Instance = new Operation(nomOp);
}
? Bah oui tu recrees un Operation mais il n'y en a toujours qu'un, comme le sujet demande.

Edit : oublie le premier car le instance est private :hap:

Mais tu peux le remplacer par un new Operation et ça restera un singleton

https://image.noelshack.com/fichiers/2021/39/2/1632865734-capture-d-ecran-du-2021-09-28-23-48-46.png

De cette manière j'imagine :hap:

J'ai un problème dans NoeudBinaire.java, et particulièrement dans : switch(getKey(Operation.mesOP, monOP))

EDIT: j'ai rajouté un else finalement :

https://image.noelshack.com/fichiers/2021/39/2/1632865900-capture-d-ecran-du-2021-09-28-23-51-29.png

Enleve le if en fait

Dans tous les cas tu vas rajouter ta nouvelle instance

Et oublie pas ton ajouterOperarion sinon MesOp fera la mauvaise taille

https://image.noelshack.com/fichiers/2021/39/2/1632866070-capture-d-ecran-du-2021-09-28-23-54-23.png
Là j'ai une boucle StackOverflow :hap:

Il faudrait remettre le instancce == null car en cours on a appris à écrire comme ça les singletons :hap:

Le 28 septembre 2021 à 23:55:25 :

Le 28 septembre 2021 à 23:53:01 :

Le 28 septembre 2021 à 23:50:02 :

Le 28 septembre 2021 à 23:46:15 :
Tu peux pas rajouter à la suite du if(instance==null) (pseudo code fais pas gaffe a la syntaxe)

If(instance != null) (un else quoi)
{
Instance.nomOp = nomOp
This.nomOp = nomOp
AjouterOperarion(nomOp)
}

Ou juste :

{
Instance = new Operation(nomOp);
}
? Bah oui tu recrees un Operation mais il n'y en a toujours qu'un, comme le sujet demande.

Edit : oublie le premier car le instance est private :hap:

Mais tu peux le remplacer par un new Operation et ça restera un singleton

https://image.noelshack.com/fichiers/2021/39/2/1632865734-capture-d-ecran-du-2021-09-28-23-48-46.png

De cette manière j'imagine :hap:

J'ai un problème dans NoeudBinaire.java, et particulièrement dans : switch(getKey(Operation.mesOP, monOP))

EDIT: j'ai rajouté un else finalement :

https://image.noelshack.com/fichiers/2021/39/2/1632865900-capture-d-ecran-du-2021-09-28-23-51-29.png

Enleve le if en fait

Dans tous les cas tu vas rajouter ta nouvelle instance

Et oublie pas ton ajouterOperarion sinon MesOp fera la mauvaise taille

https://image.noelshack.com/fichiers/2021/39/2/1632866070-capture-d-ecran-du-2021-09-28-23-54-23.png
Là j'ai une boucle StackOverflow :hap:

Il faudrait remettre le instancce == null car en cours on a appris à écrire comme ça les singletons :hap:

Je suis d'accord mais du coup c'est juste pas adapté...

Le 28 septembre 2021 à 23:59:32 :

Le 28 septembre 2021 à 23:55:25 :

Le 28 septembre 2021 à 23:53:01 :

Le 28 septembre 2021 à 23:50:02 :

Le 28 septembre 2021 à 23:46:15 :
Tu peux pas rajouter à la suite du if(instance==null) (pseudo code fais pas gaffe a la syntaxe)

If(instance != null) (un else quoi)
{
Instance.nomOp = nomOp
This.nomOp = nomOp
AjouterOperarion(nomOp)
}

Ou juste :

{
Instance = new Operation(nomOp);
}
? Bah oui tu recrees un Operation mais il n'y en a toujours qu'un, comme le sujet demande.

Edit : oublie le premier car le instance est private :hap:

Mais tu peux le remplacer par un new Operation et ça restera un singleton

https://image.noelshack.com/fichiers/2021/39/2/1632865734-capture-d-ecran-du-2021-09-28-23-48-46.png

De cette manière j'imagine :hap:

J'ai un problème dans NoeudBinaire.java, et particulièrement dans : switch(getKey(Operation.mesOP, monOP))

EDIT: j'ai rajouté un else finalement :

https://image.noelshack.com/fichiers/2021/39/2/1632865900-capture-d-ecran-du-2021-09-28-23-51-29.png

Enleve le if en fait

Dans tous les cas tu vas rajouter ta nouvelle instance

Et oublie pas ton ajouterOperarion sinon MesOp fera la mauvaise taille

https://image.noelshack.com/fichiers/2021/39/2/1632866070-capture-d-ecran-du-2021-09-28-23-54-23.png
Là j'ai une boucle StackOverflow :hap:

Il faudrait remettre le instancce == null car en cours on a appris à écrire comme ça les singletons :hap:

Je suis d'accord mais du coup c'est juste pas adapté...

L'exercice est mal fait du coup selon toi ?
En fait l'usage de Singleton est juse à chier dans cet exo, je comprends pourquoi on voudrait l'utiliser mais comment bien le coder c'est autre chose :-(

package com.company;

public class OperationNode {
    private String operationType;
    private OperationNode leftOperationNode;
    private OperationNode rightOperationNode;
    private Double leafNumber;


    public OperationNode(String operationType, OperationNode leftOperationNode, OperationNode rightOperationNode) {
        this.operationType = operationType;
        this.leftOperationNode = leftOperationNode;
        this.rightOperationNode = rightOperationNode;
    }

    public OperationNode(double leafNumber) {
        this.leafNumber = leafNumber;
    }

    public double getResult(){
        if(this.leafNumber!=null)
            return this.leafNumber;

        double result = 0;
        double leftOperand = this.leftOperationNode.getResult();
        double rightOperand = this.rightOperationNode.getResult();
        switch (this.operationType){
            case "+": result = leftOperand+rightOperand;break;
            case "-": result = leftOperand-rightOperand;break;
            case "*": result = leftOperand*rightOperand;break;
            case "/": result = leftOperand/rightOperand;break;
            default:break;
        }
        return result;
    }

}
package com.company;

public class Main {

    public static void main(String[] args) {
    // write your code here
        OperationNode operationNode1 = new OperationNode(
                "+",
                new OperationNode(10),
                new OperationNode(2)
        );
        OperationNode operationNode2 = new OperationNode("/", operationNode1,
                new OperationNode(6));




        System.out.println(operationNode2.getResult());

    }
}

Le singleton ne sert à rien. Une sorte d'arbre binaire qui a soit une operation soit un nombre parait beaucoup plus simples. Une classe suffit pour ça, et très peu de code

il faut dire à la personne qui a fait cet énoncé pourquoi elle veut un singleton. Il faut arrêter avec ces mauvaises pratiques

Le 29 septembre 2021 à 00:23:44 :
<code>package com.company;

public class OperationNode {
private String operationType;
private OperationNode leftOperationNode;
private OperationNode rightOperationNode;
private Double leafNumber;

public OperationNode(String operationType, OperationNode leftOperationNode, OperationNode rightOperationNode) {
this.operationType = operationType;
this.leftOperationNode = leftOperationNode;
this.rightOperationNode = rightOperationNode;
}

public OperationNode(double leafNumber) {
this.leafNumber = leafNumber;
}

public double getResult(){
if(this.leafNumber!=null)
return this.leafNumber;

double result = 0;
double leftOperand = this.leftOperationNode.getResult();
double rightOperand = this.rightOperationNode.getResult();
switch (this.operationType){
case "+": result = leftOperand+rightOperand;break;
case "-": result = leftOperand-rightOperand;break;
case "*": result = leftOperand*rightOperand;break;
case "/": result = leftOperand/rightOperand;break;
default:break;
}
return result;
}

}
</code>

package com.company;

public class Main {

    public static void main(String[] args) {
  // write your code here
        OperationNode operationNode1 = new OperationNode(
                "+",
                new OperationNode(10),
                new OperationNode(2)
        );
        OperationNode operationNode2 = new OperationNode("/", operationNode1,
                new OperationNode(6));




        System.out.println(operationNode2.getResult());

    }
}

Le singleton ne sert à rien. Une sorte d'arbre binaire qui a soit une operation soit un nombre parait beaucoup plus simples. Une classe suffit pour ça, et très peu de code

Merci pour ça :cimer:
Une autre implémentation du diagramme fonctionne parfaitement et plus condensée mais on préfère un putain de Singleton :)

Le truc c'est que ça respecte pas le diagramme du prof du coup :)

Mais après le code que t'as produit donne des idées :ok:

Pour le faire en respectant le schéma que tu as donné, il faut me payer ou me donner un truc en échange; j'ai beaucoup de travail qui m'attend demain.

Je suis très curieux de savoir d'où vient cet exercice, et quel en est la correction

Le 29 septembre 2021 à 00:39:05 :
Pour le faire en respectant le schéma que tu as donné, il faut me payer ou me donner un truc en échange; j'ai beaucoup de travail qui m'attend demain.

Je suis très curieux de savoir d'où vient cet exercice, et quel en est la correction

La correction je ne l'ai pas :)

L'exercice vient d'un polycopié universitaire (je ne peux en dire plus)

J'imagine que 2 culs ne suffisent pas en échange :)
Je ne payerai pas pour cet exercice, j'espère que tu comprendras

Mais sinon je supprime le topic et je referai le même topic demain, à moins que j'ai une illumination :)

Donc le problème vient de la classe Operateur, je vois...

Données du topic

Auteur
SangreLatino
Date de création
28 septembre 2021 à 23:17:31
Date de suppression
29 septembre 2021 à 01:15:45
Supprimé par
Auteur
Nb. messages archivés
38
Nb. messages JVC
38
En ligne sur JvArchive 310