[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 foisDonc 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
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
Mais tu peux le remplacer par un new Operation et ça restera un singleton
De cette manière j'imagine
J'ai un problème dans NoeudBinaire.java, et particulièrement dans : switch(getKey(Operation.mesOP, monOP))
EDIT: j'ai rajouté un else finalement :
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
Mais tu peux le remplacer par un new Operation et ça restera un singleton
De cette manière j'imagine
J'ai un problème dans NoeudBinaire.java, et particulièrement dans : switch(getKey(Operation.mesOP, monOP))
EDIT: j'ai rajouté un else finalement :
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
{
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
Mais tu peux le remplacer par un new Operation et ça restera un singleton
De cette manière j'imagine
J'ai un problème dans NoeudBinaire.java, et particulièrement dans : switch(getKey(Operation.mesOP, monOP))
EDIT: j'ai rajouté un else finalement :
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
Là j'ai une boucle StackOverflow
Il faudrait remettre le instancce == null car en cours on a appris à écrire comme ça les singletons
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
Mais tu peux le remplacer par un new Operation et ça restera un singleton
De cette manière j'imagine
J'ai un problème dans NoeudBinaire.java, et particulièrement dans : switch(getKey(Operation.mesOP, monOP))
EDIT: j'ai rajouté un else finalement :
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
Là j'ai une boucle StackOverflowIl faudrait remettre le instancce == null car en cours on a appris à écrire comme ça les singletons
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
Mais tu peux le remplacer par un new Operation et ça restera un singleton
De cette manière j'imagine
J'ai un problème dans NoeudBinaire.java, et particulièrement dans : switch(getKey(Operation.mesOP, monOP))
EDIT: j'ai rajouté un else finalement :
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
Là j'ai une boucle StackOverflowIl faudrait remettre le instancce == null car en cours on a appris à écrire comme ça les singletons
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
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
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
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