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

  FORUM HardWare.fr
  Programmation
  Java

  [java] Philosophie java

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

[java] Philosophie java

n°721618
Giz
Posté le 11-05-2004 à 11:23:55  profilanswer
 

Bien j'ai un peu de mal a voir comment un programme java est qualifie de bien "structure". En clair je me trouve dans une situation un peu etrange : je desire trier simplement un tableau en passant en parametre a la fonction sort() le tableau et la fonction de comparaison.
Le probleme c'est que la fonction de comparaison est une interface. Pour implementer l'interface (Comparator), j'ai donc besoin de creer une classe avec le mot cle "implements" juste pour creer ma fonction de comparaison pour le trie du tableau.
Conclusion : je sais que java est fortement oriente objet, mais dans le cas d'un tri d'un pauvre tableau, suis-je vraiment oblige de creer une classe dans le but d'implementer l'interface ?
Je trouve ceci un peu etrange dans la mesure ou ma classe ne reflete nullement un objet mais une chose elementaire ; d'ou ma question :)

mood
Publicité
Posté le 11-05-2004 à 11:23:55  profilanswer
 

n°721630
the real m​oins moins
Posté le 11-05-2004 à 11:29:00  profilanswer
 

oui, tu dois.

n°721632
the real m​oins moins
Posté le 11-05-2004 à 11:29:23  profilanswer
 

tu peux aussi implementer Comparable sur les objet de ta collection ou de ton tableau

n°721639
darklord
You're welcome
Posté le 11-05-2004 à 11:31:00  profilanswer
 

Giz a écrit :

Bien j'ai un peu de mal a voir comment un programme java est qualifie de bien "structure". En clair je me trouve dans une situation un peu etrange : je desire trier simplement un tableau en passant en parametre a la fonction sort() le tableau et la fonction de comparaison.
Le probleme c'est que la fonction de comparaison est une interface. Pour implementer l'interface (Comparator), j'ai donc besoin de creer une classe avec le mot cle "implements" juste pour creer ma fonction de comparaison pour le trie du tableau.
Conclusion : je sais que java est fortement oriente objet, mais dans le cas d'un tri d'un pauvre tableau, suis-je vraiment oblige de creer une classe dans le but d'implementer l'interface ?
Je trouve ceci un peu etrange dans la mesure ou ma classe ne reflete nullement un objet mais une chose elementaire ; d'ou ma question :)


 
Bin le tri de ton bête tableau se base surement sur des bêtes critères mais faut bien les spécifier quelque part. Ce que tu spécifies c'est quelles sont les conditions pour qu'un objet soit "plus grand, plus petit ou égal" à un autre.
 
Tu veux écrire où ces critères sinon dans une classe? Ecrire une classe ne veut pas dire avoir un fichier .java avec rien que ce code là dedans (voir inner classes)

n°721642
gfive
Posté le 11-05-2004 à 11:31:36  profilanswer
 

Tu as des méthodes statiques de tri dans la classe java.util.Arrays
Attention, quand même : il faudra que les objets dans ton tableau soient comparables.
 
Et sinon, ta classe reflète une chose pas si élémentaire : c'est un trieur. Et une chose, c'est un objet, aussi.
 
[Edit] grillaid par Darklord et the real --, la classe! :D


Message édité par gfive le 11-05-2004 à 11:32:38
n°721643
gfive
Posté le 11-05-2004 à 11:31:55  profilanswer
 

'tain, des forumeurs que je connais! :D

n°721646
uriel
blood pt.2
Posté le 11-05-2004 à 11:33:23  profilanswer
 

[:drapo]


---------------
IVG en france
n°721715
nraynaud
lol
Posté le 11-05-2004 à 12:11:19  profilanswer
 

Pour un trieur sans état, tu peux faire une unique instance dans le système.
Dans ta classe à trier, tu mets un beau champ statique :
 

Code :
  1. public class Brol {
  2. public static final Comparator BrolTelCritèreComparator = new Comparator() {
  3.   public int compare(Object o1, Object o2) {
  4.      //blabla
  5.   }
  6. };
  7. //le reste de la classe
  8. }


 
Ce qui a pour gros bénéfice de ne pas te polluer ni l'espace de nom avec une classe dont on a rien à foutre, ni la mémoire avec des instances inutiles.


---------------
trainoo.com, c'est fini
n°721764
Giz
Posté le 11-05-2004 à 12:51:31  profilanswer
 

OK merci tous !
 
Pour la fonction de trie, elle a pour prototype :
static <T> void sort(T[] a, Comparator<? super T> c)
 
J'ai regarde la doc mais j'ai un peu de mal a comprendre ce que veut dire Comparator<? super T> c
Une autre chose le type <T> signifie quoi exactement ? : il faut cree un iterateur ? (l'interface Iterator est marquee comme suit sur la doc : Interface Iterator<E> )
Jsuis un peu paume la :/
 
PS : j'ai l'impression de devoir ecrire 100 lignes de code pour cette foutue fct de comparaison  :pfff:

n°721771
benou
Posté le 11-05-2004 à 12:57:08  profilanswer
 

houla, tu regardes le truc en jdk1.5 ... t'es sûr de toi là ? pkoi tu restes pas en 1.4 pour le moment ?
 
Sinon, c'est la signature d'une méthode prototypée. Ca signifie que le comparator que tu passes en paramêtre doit être un comparator de classe égale ou supérieur (dans la hierarchie d'héritage) à la classe de ton tableau.  
 
en gros, si tu lui passes un tableau d'Integer, il faut que le comparator soit un comparator d'Integer, de Number ou d'Object (je simplifie volontairement en ne parlant que d'héritage et pas d'implémentation).


---------------
ma vie, mon oeuvre - HomePlayer
mood
Publicité
Posté le 11-05-2004 à 12:57:08  profilanswer
 

n°721781
nraynaud
lol
Posté le 11-05-2004 à 13:08:03  profilanswer
 

saloperie de JDK 1.5 pas encore dispo pour mac :'(
 
java 1.5 sapu !


---------------
trainoo.com, c'est fini
n°721783
Giz
Posté le 11-05-2004 à 13:09:46  profilanswer
 

bon OK !
je lis sur la console :


[koko@localhost ant]$ java -version
Kaffe Virtual Machine
 
Copyright (c) 1996-2002 Kaffe.org project contributors (please see
  the source code for a full list of contributors).  All rights reserved.
Portions Copyright (c) 1996-2002 Transvirtual Technologies, Inc.
 
The Kaffe virtual machine is free software, licensed under the terms of
the GNU General Public License.  Kaffe.org is a an independent, free software
community project, not directly affiliated with Transvirtual Technologies,
Inc.  Kaffe is a Trademark of Transvirtual Technologies, Inc.  Kaffe comes
with ABSOLUTELY NO WARRANTY.
 
Engine: Just-in-time v3   Version: 1.1.2   Java Version: 1.1
[koko@localhost ant]$


 
J'ai dc le sdk 1.1 : la doc n'est meme pas presente sur le site de Java (ca commence au 1.2) :sweat:

n°721784
the real m​oins moins
Posté le 11-05-2004 à 13:10:30  profilanswer
 

au s'cours

n°721788
darklord
You're welcome
Posté le 11-05-2004 à 13:12:12  profilanswer
 


 
+1 [:mlc]


Message édité par darklord le 11-05-2004 à 13:12:21
n°721797
gfive
Posté le 11-05-2004 à 13:17:18  profilanswer
 

huhuhuhu! :D

n°721801
uriel
blood pt.2
Posté le 11-05-2004 à 13:20:44  profilanswer
 

[:ciler] mais pourquoi??


---------------
IVG en france
n°721805
gfive
Posté le 11-05-2004 à 13:22:27  profilanswer
 

Déjà, quand tu installes Linux, première chose à faire : désinstaller kafee, et installer le jdk.
Sinon, t'es pas dans la merde!
 
Là, si tu veux faire une analogie avec le C++, c'est un peu comme tu compilais avec Visual, tout en étant persuadé de faire du Borland, par exemple (je fais mon kéké, parce que y'a des mecs dans mon bureau qui se font des noeuds au cerveau avec ça. Moi, je les regarde, et je rigole.)


Message édité par gfive le 11-05-2004 à 13:23:15
n°721814
Giz
Posté le 11-05-2004 à 13:25:09  profilanswer
 

C'est pas possible...1.1 doit concerner autre chose :/
Bref, jsuis arriver a passer le probleme en utilisant la doc 1.4.2 ou le prototype est plus clair :
static void
sort(Object[] a, Comparator c)
:)

n°721826
gfive
Posté le 11-05-2004 à 13:31:40  profilanswer
 

non, mais au delà de ça....tu utilises une machine virtuelle qui s'appelle Kafee, et tu lis la doc associée à une machine virtuelle Sun....Donc, à moins d'une compatiblité à 100% entre la JVM Sun 1.4.x et la JVM Kaffee, tu cours vers les emmerdes à toute vitesse!!!!
 
Quand tu lances java --version, ça doit te répondre :  
 
java version "1.4.2_03"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_03-b02)
Java HotSpot(TM) Client VM (build 1.4.2_03-b02, mixed mode)
 
ou qqchse dans ce goût là.
 

n°721837
uriel
blood pt.2
Posté le 11-05-2004 à 13:35:22  profilanswer
 

gfive a écrit :

Déjà, quand tu installes Linux, première chose à faire : désinstaller kafee


 
en general il l'installe pas, en tout cas, pas par defaut


---------------
IVG en france
n°721840
Giz
Posté le 11-05-2004 à 13:36:20  profilanswer
 

gfive a écrit :

non, mais au delà de ça....tu utilises une machine virtuelle qui s'appelle Kafee, et tu lis la doc associée à une machine virtuelle Sun....Donc, à moins d'une compatiblité à 100% entre la JVM Sun 1.4.x et la JVM Kaffee, tu cours vers les emmerdes à toute vitesse!!!!
 
Quand tu lances java --version, ça doit te répondre :  
 
java version "1.4.2_03"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_03-b02)
Java HotSpot(TM) Client VM (build 1.4.2_03-b02, mixed mode)
 
ou qqchse dans ce goût là.


 
t'a raison, mais je pense bien que c'est compatible a 100% (je l'espere), sinon ca servirait a quoi Kaffe (ils ne vont pas reecrire toute la doc!)
La seule diff c que c de l'open source

n°721845
gfive
Posté le 11-05-2004 à 13:38:31  profilanswer
 

uriel a écrit :

en general il l'installe pas, en tout cas, pas par defaut


 
bah, je sais pas pkoi, moi, il me le met toujours! :) Ca doit être parce que je coche toutes les packages de dev à l'installation! :D

n°721847
uriel
blood pt.2
Posté le 11-05-2004 à 13:38:52  profilanswer
 

Giz a écrit :

t'a raison, mais je pense bien que c'est compatible a 100% (je l'espere), sinon ca servirait a quoi Kaffe (ils ne vont pas reecrire toute la doc!)
La seule diff c que c de l'open source


 
elle est de taille pour certaines personnes cette difference


---------------
IVG en france
n°721848
Giz
Posté le 11-05-2004 à 13:39:06  profilanswer
 

uriel a écrit :

en general il l'installe pas, en tout cas, pas par defaut


 
exact, mais c t les package internet que j'avais (url sur des package Mandrake=>open source only=>kaffe).
Jverrais si ca me gonfle.
Mais mon programme n'est pas gros, c juste un truc a rajouter dans une librairie

n°721852
gfive
Posté le 11-05-2004 à 13:40:00  profilanswer
 

Giz a écrit :

t'a raison, mais je pense bien que c'est compatible a 100% (je l'espere),


 
ben a ta place, je serais pas si optimiste, mais bon.
 

n°721854
Giz
Posté le 11-05-2004 à 13:40:20  profilanswer
 

uriel a écrit :

elle est de taille pour certaines personnes cette difference


 
gcc est mieux que le compilo de visual  :o

n°721858
uriel
blood pt.2
Posté le 11-05-2004 à 13:41:01  profilanswer
 

gfive a écrit :

ben a ta place, je serais pas si optimiste, mais bon.


 
+1 , demandez a -- ce qu'on a vu au FOSDEM sur les JVM open  :sweat:


---------------
IVG en france
n°721860
Giz
Posté le 11-05-2004 à 13:41:30  profilanswer
 

gfive a écrit :

bah, je sais pas pkoi, moi, il me le met toujours! :) Ca doit être parce que je coche toutes les packages de dev à l'installation! :D


+1 c ce que j'ai fais  :whistle:

n°721867
gfive
Posté le 11-05-2004 à 13:44:49  profilanswer
 

uriel a écrit :

demandez a -- ce qu'on a vu au FOSDEM sur les JVM open  


 
Vazy, tonton --, racontes! :bounce: :D

n°721869
lorill
Posté le 11-05-2004 à 13:45:58  profilanswer
 

Giz a écrit :

t'a raison, mais je pense bien que c'est compatible a 100% (je l'espere), sinon ca servirait a quoi Kaffe (ils ne vont pas reecrire toute la doc!)
La seule diff c que c de l'open source


compatible avec la jdk1.1, pas la 1.4. lis tes messages.

n°721899
Taz
bisounours-codeur
Posté le 11-05-2004 à 14:03:56  profilanswer
 

za'vez quoi contre Kaffe ?

n°721940
nraynaud
lol
Posté le 11-05-2004 à 14:33:52  profilanswer
 

Taz a écrit :

za'vez quoi contre Kaffe ?

de la haine.


---------------
trainoo.com, c'est fini
n°721943
Taz
bisounours-codeur
Posté le 11-05-2004 à 14:36:29  profilanswer
 

oui mais pourquoi ? d'accord c'est pas aussi complet que le bazar de sun, mais sinon ?

n°721946
nraynaud
lol
Posté le 11-05-2004 à 14:40:22  profilanswer
 

ben on a un java pas complet et qui rame, c'est chiant.


---------------
trainoo.com, c'est fini
n°721965
darklord
You're welcome
Posté le 11-05-2004 à 14:54:56  profilanswer
 

Giz a écrit :

t'a raison, mais je pense bien que c'est compatible a 100% (je l'espere), sinon ca servirait a quoi Kaffe (ils ne vont pas reecrire toute la doc!)
La seule diff c que c de l'open source


 
Arrête de confondre pensée et certitude, ça sera déjà bien.

n°721967
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 11-05-2004 à 14:59:15  profilanswer
 

[:necris]

n°721968
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 11-05-2004 à 15:01:11  profilanswer
 

Giz a écrit :

gcc est mieux que le compilo de visual  :o


cay trolly

n°721975
gfive
Posté le 11-05-2004 à 15:05:24  profilanswer
 

Et pis, il est mieux, peut être, mais si tu codes avec la doc Visual, et que tu compiles avec gcc, ça va pas tout le temps marcher, et c'est ça qui importe, dans ton cas.

n°722023
benou
Posté le 11-05-2004 à 15:48:01  profilanswer
 

logiquement l'API est standard => d'une JVM à l'autre ca doit passer.
 
Mais le problème là c'est la version de java. Dans le 13 post on voit clairement :  

Citation :

Engine: Just-in-time v3   Version: 1.1.2   Java Version: 1.1


donc, regarder la javadoc de l'API 1.5 ca risque de poser problème forcément ...
 
D'ailleur je suis étonné que ton truc compile vu que la classe Arrays est apparu à la version 1.2 de java ...
 
bref, si tu ne tiens pas à totu prix à avoir un truc full open source, installe la jdk1.42.


---------------
ma vie, mon oeuvre - HomePlayer
n°722288
Giz
Posté le 11-05-2004 à 18:10:17  profilanswer
 

Un petit detail :
Soit une classe interne toto dans une autre classe :

public class parent
{
 public class toto
 {
  public void sort (...)
 }
 toto[] ex = new toto[20];
 ex.sort //compile pas
}

la ligne ex.sort ne compile pas car ex est un tableau.
les seuls 2 solutions sont bien :
-ex[0].sort(ex);//utliser la 1ere valeur par exmple pour l'appel
-toto bidon;//cree une variable bidon pour l'appel
bidon.sort(ex);
 
J'aurai voulu faire un truc du style toto.sort(ex) mais pour cela faut mettre la classe et la fonction en statique ce qui est refuse pour une classe interne par le compilo :/
Y'a-t-il mieux que les 2 solutions que j'ai propose ?


Message édité par Giz le 11-05-2004 à 18:10:48
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

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

  [java] Philosophie java

 

Sujets relatifs
[java] faire son navigateur[Java] Probleme de dependance/package/import [resolu]
[Java] appel du constructeur[XML - MathML - Java] Interpréter du MathML dans du Java (SWING)
[Java]Image de fond[java] swing : comment réaliser un arbre binaire
[Java] une erreur d'operation concurrente... je seche.[JAVA] Nombre limite de thread
[java] un problème d'accesseurs....[java] JTable : y a t'il un moyen de donner un nom aux lignes
Plus de sujets relatifs à : [java] Philosophie java


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