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

  FORUM HardWare.fr
  Programmation
  Java

  Conversion de type

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Conversion de type

n°923770
joquetino
Posté le 15-12-2004 à 13:34:28  profilanswer
 

Bonjour à tous,  
 
J'ai un petit problème de conversion de type. J'ai un formulaire en java dans lequel se trouve une liste de choix. Par exemple, dans cette liste, on trouve "tri1" ou "tri2",....
J'ai dans mon programme des objets tri1:TRI.
Or selon le choix de l'utilisateur, j'aimerai appeler une méthode de la façon suivante : tri1.trier() ou tri2.trier(), .....
Comment pourrai je faire ceci?
 
Merci d'avance.
 

mood
Publicité
Posté le 15-12-2004 à 13:34:28  profilanswer
 

n°923773
Profil sup​primé
Posté le 15-12-2004 à 13:37:55  answer
 

C'est quoi le problème avec "tri1.trier()" et "tri2.tirer()" ?

n°923824
benou
Posté le 15-12-2004 à 14:36:17  profilanswer
 

j'ai pas compris le problême :??:


---------------
ma vie, mon oeuvre - HomePlayer
n°924102
Bidem
Posté le 15-12-2004 à 16:28:04  profilanswer
 

Si j'ai compris :
 
 - tu as une classe TRI et 2 instances de cette classe (tri1 et tri2).
 - tu récupères le choix de l'utilisateur dans une String monChoix qui peux avoir 2 valeurs ("tri1" et "tri2" )
 - si c'est ça la solution est :

Code :
  1. if("tri1".equals(monChoix)) {
  2.   tri1.trier();
  3. } else {
  4.   tri2.trier();
  5. }


 
Si j'ai tout faux, reformule ton problème :p

n°924126
axk47
Java Man vs Boolet Man
Posté le 15-12-2004 à 16:40:08  profilanswer
 

joquetino a écrit :

Bonjour à tous,  
 
J'ai un petit problème de conversion de type. J'ai un formulaire en java dans lequel se trouve une liste de choix. Par exemple, dans cette liste, on trouve "tri1" ou "tri2",....
J'ai dans mon programme des objets tri1:TRI.
Or selon le choix de l'utilisateur, j'aimerai appeler une méthode de la façon suivante : tri1.trier() ou tri2.trier(), .....
Comment pourrai je faire ceci?
 
Merci d'avance.


 
ce le principe de polymorphisme et de liaison dynamique
il faut faire une classe abstraite qui s'appelerai TRI et comportera une methode abstraite qui s'appelerai trier()
 
 

Code :
  1. public abstract class TRI{
  2. public abstract void trier();
  3. }


 
 
ensuite tu fais deux classes TRI1 et TRI,...., TRIn qui heritent de TRI et implementent la methode trier().
 
exemple pour la classe TRI1
 

Code :
  1. public class TRI1 extends TRI{
  2. public void trier(){
  3. System.out.println("Trier selon le choix 1" );
  4. }
  5. }


 
J'espere t'avoir eclairer
 
 

n°924227
sircam
I Like Trains
Posté le 15-12-2004 à 17:40:12  profilanswer
 

... Et tu auras certainement besoin d'une factory pour utiliser pleinement la solution de axk47, the Java Warrior taking a coffee.
 
Une classe SortFactory qui contient une méthode static acceptant en paramètre le type de tri et qui renvoie une instance du sous-type de TRI correspondant au paramètre !


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°924240
benou
Posté le 15-12-2004 à 17:57:35  profilanswer
 

je suis pas certain que joquetino en soit à appliquer des design pattern ...


---------------
ma vie, mon oeuvre - HomePlayer
n°924339
joquetino
Posté le 15-12-2004 à 18:53:34  profilanswer
 

benou a écrit :

je suis pas certain que joquetino en soit à appliquer des design pattern ...


C'est en effet assez compliqué pour mon problème.
Bidem a compris mon problème, enfin partiellement lié à un manque de communication de ma part.

Code :
  1. 1. if("tri1".equals(monChoix)) {
  2.    2.   tri1.trier();
  3.    3. } else {
  4.    4.   tri2.trier();
  5.    5. }


 
Je voudrai adapter ce code pour un nombre de tris très importants.
Je vais avoir dans ma liste un grand nombre de tri. C'est assez fastidieux  de faire ceci pour chaque type de tri.
J'aimerai ainsi recuperer la valeur choisi, dans une variable monChoix.
Serait-il possible de "caster" le type String vers le type TRI pour appliquer à cet objet la méthode trier()?
Suis-je explicite? Je ne suis pas certain ...

n°924391
Profil sup​primé
Posté le 15-12-2004 à 19:34:42  answer
 

Je suppose que ta question est de savoir si on peut invoquer un objet par son nom en String. Je ne crois pas que ça soit possible en Java (en C et C++ c'est impossible du fait qu'à l'execution les objets ne sont pas référencés par les noms que tu leur as donné dans ton code source).
 
A part ça une solution pourrait être de créer une Hashtable (ou un objet équivalent du point de vue fonctionnel) contenant des paires choix/objet_à_trier ce qui te permettrait d'invoquer ta méthode trier de cette façon :
 

TRI tri = (TRI)table.get("monChoix" );
tri.trier();


Message édité par Profil supprimé le 15-12-2004 à 19:41:12
n°924392
benou
Posté le 15-12-2004 à 19:35:20  profilanswer
 

plutot que de mettre une String dans ta liste, met plutot directement l'objet TRI avec une méthode toString qui retourne la chaine à afficher. Comme ca tu pourras caster l'objet sélectionné dans ta liste en TRI et lui appliquer trier().
 
bien sur, tu ne peux pas directement caster une String en une variable d'un autre type. Ca n'a pas de sens ...


---------------
ma vie, mon oeuvre - HomePlayer
mood
Publicité
Posté le 15-12-2004 à 19:35:20  profilanswer
 

n°924407
joquetino
Posté le 15-12-2004 à 19:55:42  profilanswer
 

ok merci beaucoup.

n°924778
sircam
I Like Trains
Posté le 16-12-2004 à 10:01:10  profilanswer
 

Je ne vois pas en quoi la factory method est plus compliquée que la solution finalement proposée, si ce n'est qu'on perd le bénéfice d'un pattern au profit d'une solution moins élégante (mais tout aussi compliquée).
 
joquetino, même si tu n'es pas encore costaud en java et/ou en design, je ne te conseille pas de t'arrêter à des solutions de facilité telles que if .. else .. pour chaque tri.
 
C'est confortable de se raccrocher à qq chose qu'on connait, mais tu vas finalement déployer autant d'efforts et recontrer autant de difficultés (genre est-il possible de "caster une String en un TRI) qu'avec une solution éprouvée pour un résultat bien plus maigre.
 
Benou, tu as raison de dire qu'une factory ne soit manifestement pas directement abordable, et mon explication narrative à la classe SortFactory qui contient une méthode static acceptant en paramètre le type de tri et qui renvoie une instance du sous-type de TRI correspondant au paramètre n'évoque sûrement rien pour lui.
 
Mais je suis sûr qu'en complétant le code de axk47 par un code pour la factory et qq mots d'accompagnement, tout deviendra limipe.
 


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°924824
benou
Posté le 16-12-2004 à 10:53:12  profilanswer
 

bha juste fais le [:spamafote]
 
mais avec le dernier truc que je proposais, y a plus un seul if ...  
personellement, j'ai pas bien compris en quoi la factory allait arranger son problème de if. Mais j'ai peut être mal compris ...


---------------
ma vie, mon oeuvre - HomePlayer
n°925178
axk47
Java Man vs Boolet Man
Posté le 16-12-2004 à 16:33:45  profilanswer
 


Je suis entierement d'accord avec SirCam...
Moi je me demande à quoi sert la programmation Objet et sa puissance
(liaison dynamique, polymorphisme,...) si a chaque fois on se doit passer outre et faire de la programmation conditionnelle avec plein de IF ELSE partout.
 
Si tu peux avoir milles choix et Ben tu auras milles classes(ça commence a faire bcp mais le nombre de choix est aussi large) differentes avec chacune  
sa methode trier().
 
C modulaire, flexible et tu n'a pas besoin de retoucher a toutes tes classes a chaque fois que tu rajoute un nouveau choix.
 
et c'est un bon entrainement pour le jour ou tu auras un projet plus complexe a gerer

n°925248
benou
Posté le 16-12-2004 à 18:05:13  profilanswer
 

axk47 a écrit :

Je suis entierement d'accord avec SirCam...


moi aussi dans l'absolu !
mais, je commencerai pas à parler de DP à un débutant en java ...  
 
mais dans son cas, c'est quoi l'intérêt de la factory ??
le polymorphisme je vois bien, mais je vois pas où ni pourquoi utiliser une factory ...


---------------
ma vie, mon oeuvre - HomePlayer
n°925280
Profil sup​primé
Posté le 16-12-2004 à 18:54:14  answer
 

Euh son problème à la base c'était pas juste d'appeler la méthode "trier" sur un objet de type TRI suivant le choix de l'utilisateur ? Parce que dans ce cas je ne vois pas ce que vient faire le polymorphisme là-dedans. :??:

n°925306
benou
Posté le 16-12-2004 à 19:24:13  profilanswer
 

alerim a écrit :

Euh son problème à la base c'était pas juste d'appeler la méthode "trier" sur un objet de type TRI suivant le choix de l'utilisateur ? Parce que dans ce cas je ne vois pas ce que vient faire le polymorphisme là-dedans. :??:


bha on peut imaginer que ses objets sur lequel il va apeler "trier" sont de classe différente ...


---------------
ma vie, mon oeuvre - HomePlayer
n°925867
axk47
Java Man vs Boolet Man
Posté le 17-12-2004 à 11:37:26  profilanswer
 

exactement  benou ;Chaque classe implementant sa propre methode trier()!

n°925868
axk47
Java Man vs Boolet Man
Posté le 17-12-2004 à 11:38:44  profilanswer
 

benou a écrit :

moi aussi dans l'absolu !
mais, je commencerai pas à parler de DP à un débutant en java ...  
 
mais dans son cas, c'est quoi l'intérêt de la factory ??
le polymorphisme je vois bien, mais je vois pas où ni pourquoi utiliser une factory ...


 
ta raison benou pas besoin d'une factory pour ça, introduit un DP inutilement
 
je sens que je vais me faire des amis sur ce forum :)  :)  

n°925889
sircam
I Like Trains
Posté le 17-12-2004 à 12:00:36  profilanswer
 

Qu'est-ce qu'on s'amuse ici :)
 
En fonction du "choix", comment obtenir une instance du sous-type approprié de TRI ?
 
TRI tri = (TRI)table.get("monChoix" );
 
=> cela suppose que l'instance est déjà dans le pool, ce qui n'est pas forcément le but !!!
 
 
Benou : a priori, se lancer dans DP est ardu. Je ne les ai découverts que sur le tard, à la fin des mes études. Et là, je me suis rendu compte (avec mes condisciples) que j'en utilisait une bonne panoplie sans le savoir, simplement parce que les profs nous avaient habitués à programmer et à faire un design correct dès le départ.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}

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

  Conversion de type

 

Sujets relatifs
Conversion de chiffresConversion HTML en TXT
conversion de type en openCVconversion d'une chaine de caractère en un entier unique
recupération d'un input type = file[VB6] Conversion .doc en .pdf [résolu]
[PostgreSql] Index et type[C++] conversion de type avec visual C++
[SQL] conversion de type de données[SQL]conversion de type
Plus de sujets relatifs à : Conversion de type


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