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

Langage Java Discussion :

erreur dans programme java sur des vecteurs 3D


Sujet :

Langage Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Par défaut erreur dans programme java sur des vecteurs 3D
    Bonjour,

    Premier fichier nommé Point3D.java

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    public class Point3D
    {
    	private double x,y,z ;
    	public Point3D (double x, double y, double z)
    	{
    		this.x=x;
    		this.y=y;
    		this.z = z;
    	}
    	public void deplace(double dx, double dy, double dz)
    	{
    		x+=dx;y+=dy;z+=dz;
    	}
    	public void affiche()
    	{
    		System.out.println("coordonnées = " +x+" "+y+" "+z);
    	}
    	public double GetX()
    	{
    	return x;
    	}
    	public double GetY()
    	{
    	return y;
    	}
    	public double GetZ()
    	{
    	return z;
    	}
    	public void SetX(double x)
    	{ this.x = x;}
    	public void SetY(double Y)
    	{ this.y = y;}
    	public void SetZ(double z)
    	{ this.z = z;}
    }
    Deuxième fichier nommé Vecteur3D.java

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    public class Vecteur3D{
     
    	private Point3D origine, extremite;
    	private double composante_1, composante_2, composante_3;
    	private static Vecteur3D sommeAB;
     
    	Vecteur3D(double composante_1, double composante_2, double composante_3){
    	origine.SetX(0);
    	origine.SetY(0);
    	origine.SetZ(0);
    	this.composante_1=composante_1;
    	this.composante_2=composante_2;
    	this.composante_3=composante_3;
    	extremite.SetX(composante_1);
    	extremite.SetY(composante_2);
    	extremite.SetZ(composante_3);
    	}
     
     
     
    	public void affiche(){
    	System.out.println("Les coordonnées sont : <"+composante_1+", "+composante_2+", "+composante_3+" >");
    	}
     
    	public double norme(){
    	return Math.sqrt((extremite.GetX()-origine.GetX())*(extremite.GetX()-origine.GetX())+(extremite.GetY()-origine.GetY())*(extremite.GetY()-origine.GetY())+(extremite.GetZ()-origine.GetZ())*(extremite.GetZ()-origine.GetZ()));
    	}
     
    	public static Vecteur3D sommeVecteur3D(Vecteur3D A, Vecteur3D B){
    	sommeAB = new Vecteur3D(A.GetComposante_1()+B.GetComposante_1(), A.GetComposante_2()+B.GetComposante_2(), A.GetComposante_3()+B.GetComposante_3() );
    	return sommeAB;
    	}
     
    	public double produitScalaire(Point3D origine1, Point3D extremite1, Point3D origine2, Point3D extremite2){
    	double produit;
    	produit = ((extremite1.GetX()-origine1.GetX())*(extremite2.GetX()-origine2.GetX())+(extremite1.GetY()-origine1.GetY())*(extremite2.GetY()-origine2.GetY())+(extremite1.GetZ()-origine1.GetZ())*(extremite2.GetZ()-origine2.GetZ()));
    	return produit;}
     
    	public void SetOrigine(Point3D origine ){
    	this.origine = origine;}
     
    	public void SetExtremite(Point3D extremite){
    	this.extremite = extremite;}
     
    	public Point3D GetOrigine(){
    	return origine;}
     
    	public Point3D GetExtremite(){
    	return extremite;}
     
    	public void SetComposante_1(double composante_1){
    	this.composante_1 = composante_1;}
     
    	public void SetComposante_2(double composante_2){
    	this.composante_2 = composante_2;}
     
    	public void SetComposante_3(double composante_3){
    	this.composante_3 = composante_3;}
     
    	public double GetComposante_1(){
    	return composante_1;}
     
    	public double GetComposante_2(){
    	return composante_2;}
     
    	public double GetComposante_3(){
    	return composante_3;}
     
     
    }
    Troisième fichier nommé Test2.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class Test2{
    
    	public static void main(String [] args){
    	Vecteur3D A, B;
    	A = new Vecteur3D(2.0, 3.0, 4.0);
    	B = new Vecteur3D(5.0, 6.0, 7.0);
    	A.affiche();
    	B.affiche();
    	System.out.println("Produit Scalaire = "+produitScalaire(A.GetOrigine(), A.GetExtremite(), B.GetOrigine(), B.GetExtremite()));
    	System.out.println("Norme de A = "+A.norme());
    	System.out.println("Norme de B = "+B.norme());
    
    	}
    }
    Une erreur s'affiche au niveau de la ligne en rouge dans le dernier fichier.
    Si je la retire, j'ai une erreur :
    Exception thread main java.lang.NullPointerException
    at Vecteur3D.<init><Vecteur3D.java : 8>
    at Test2.main<Test2.java5>

    Impossible de régler le problème. J'ai essayé d'enlever toutes les lignes de mon fichier Test2.java et l'erreur viendrait en fait de quand je déclare mes deux vecteurs A et B dans main. Pourtant mon constructeur a l'air juste dans Vecteur3D.

    Merci pour votre aide

  2. #2
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    Citation Envoyé par HighSchool2005

    Une erreur s'affiche au niveau de la ligne en rouge dans le dernier fichier.
    Si je la retire, j'ai une erreur :
    Exception thread main java.lang.NullPointerException
    at Vecteur3D.<init><Vecteur3D.java : 8>
    at Test2.main<Test2.java5>
    et quand tu retires pas la ligne, c'est quoi l'erreur ?

    En fait dans ton constructeur, tu n'initialise pas "origine", d'où le nullpointer ...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Par défaut quand je ne retire pas la ligne erreur
    Quand je ne retire pas la ligne, mon erreur est :
    Test2.java:9: cannot find symbol
    symbol : method produitScalaire(Point3D,Point3D,Point3D,Point3D)
    location : class Test2
    la ligne en question avec ^ sous les parenthèses de B.GetExtremite()


    J'ai rejouté ces lignes pour initialiser mais 2 erreurs lors de la compilation de Vecteur3D.java :
    <identifier> expected
    et ^ sous le = de chaque ligne ajoutée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    origine = new Point3D(0., 0., 0.);
    	extremite = new Point3D(0., 0., 0.)

  4. #4
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    Citation Envoyé par HighSchool2005

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    origine = new Point3D(0., 0., 0.);
    	extremite = new Point3D(0., 0., 0.)
    euh tu peux me dire ce que c'est 0., une erreur de frappe ?

    parce qu'un double c'est plutot 0.0


    PS : n'envisages tu pas d'utiliser un IDE ? Ce genre d'erreur est directement detecté et en plus on te propose de les corriger automatiquement ... enfin je dis ça ...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Par défaut
    J'envisage d'utiliser un IDE quand je ne ferais plus des erreurs de ce genre parce que je veux maitriser le langage avant. J'ai déjà Eclipse de téléchargé et qui ne demande qu'à être utilisé mais je programme dans le cadre de mes études et le jour de l'examen, il faut que je sois capable de résoudre mes problèmes sans un IDE...
    Avec juste 0, 0. ou 0.0, il y a aussi l'erreur. toujour le ^ sous le =
    Merci encore pour ton aide.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 119
    Par défaut
    OKOK je suis sur que c ça

    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
    public class Vecteur3D{
     
    	private Point3D origine, extremite;
    	private double composante_1, composante_2, composante_3;
    	private static Vecteur3D sommeAB;
     
    	Vecteur3D(double composante_1, double composante_2, double composante_3){
    
                 origine = new Point3D(0,0,0);
    
    	this.composante_1=composante_1;
    	this.composante_2=composante_2;
    	this.composante_3=composante_3;
    
                 extremite = new Point3D(0,0,0);
    
    	}
    Tu ne peux affecter tes valeurs car ton objet n'est pas instancier en memoire !
    La fonction Set est utilisé si tu veux changer une valeur particuliere de ta classe Objet3D.
    Tu dois donc utiliser ton constructeur Objet3D que tu as surcharger pour pouvoir affecter tes nouvelles données.

    Tient moi au courant pour ton programme.

    Bon courage

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Par défaut
    Je ne comprends pas...
    Ma classe Point3D existe bien et il y a un constructeur pour cette classe qui prend 3 "arguments"
    Ensuite, origine et extremite sont bien référencés au début comme des objets point3D.
    Je n'ai pas de constructeur Objet3D Quel constructeur suggères-tu que j'utilise ?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 119
    Par défaut
    Je vais t'expliquer le fonctionnement :
    Voila ta class equivalente à Objet3D ( simplifié )
    Admetons une class "Objet"

    public class Objet {
    //Deux variables
    int a;
    int b;

    //ton constructeur
    public Objet(int a, int b){
    this.a = a;
    this.b = b;
    }
    }



    La class d'execution "Exe"

    public class Exe{

    static void main(String[] args){
    //Tu definis tes objets mais il ne sont toujours pas mis en memoire
    Objet monPremierObjet, monDeuxiemeObjet;
    //Ici tu instancie tes objets
    monPremierObjet = new Objet(5,9);
    monDeuxiemeObjet = new Objet(2,11);

    //Voila tes objets ont été créée, tu peux donc crée ce que tu veux dessus à partir de la
    }
    }

    Un constructeur de classe n'est pas appelé quand tu declares tes objets, tu definis juste le type de ton objet.

    Objet monpremierObjet ;
    monPremierObjet à pour valeur "NULL" --> Ton probleme


    il faut donc le construire soit par un constructeur que tu pourra definir ( ce que tu as fais )
    soit par defaut ( java possede des constructeurs internes au meme titre que des destructeurs ( garbage collector ).

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 119
    Par défaut
    Bon j'ai regardé ton probleme et chez moi ça compile si tu fais ces modifications :

    Dans Vecteur3D.java, remplace ton constructeur par :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Vecteur3D(double composante_1, double composante_2, double composante_3){
    origine = new Point3D(0,0,0);
    extremite = new Point3D(0,0,0);
    this.composante_1=composante_1;
    this.composante_2=composante_2;
    this.composante_3=composante_3;
    }
    et dans ton Test2.java :

    C'est ligne qui ne va pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("Produit Scalaire = "+A.produitScalaire(A.GetOrigine(), A.GetExtremite(), B.GetOrigine(), B.GetExtremite()));
    Tu appel une fonction ( produitScalaire ) defini dans un objet Vecteur3D.
    Tu dois referencer ton objet opur l'apl de la fonction

    Tu as fais donc DEUX erreurs, revise bien ces points pour ta futur interrogation car c'est sur tu tomberas dessus, c'est la base de java.

    N'hesite pas à me poser des questions, bon COURAGE ))))))

    N'oublie pas de referencer des methodes si tu les appelles d'une autre classe et surtout n'oublie pas d'instancier tes classes.

    A savoir , pour les erreurs ou il te sort ( Pointer NULL ) c'est à chauqe fois un objet non intancier ou une methode qui n'existe pas dans la classe ou tu l'as apl

    Je ne connais plus le principe d'un produit scalaire mais dans ton cas tu calcules le produit scalaire avec deux vecteurs, ta fonction de calcul se trouve dans une class vecteur.
    A mon avis il serait plus propre de mettre cette fonction dans ta classe Test2.java

    donc voila ta nouvelle classe :

    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 class Test2{
     
    	public static void main(String [] args){
    	Vecteur3D A, B;
    	A = new Vecteur3D(2.0, 3.0, 4.0);
    	B = new Vecteur3D(5.0, 6.0, 7.0);
    	A.affiche();
    	B.affiche();
    	System.out.println("Produit Scalaire = "+produitScalaire(A.GetOrigine(), A.GetExtremite(), B.GetOrigine(), B.GetExtremite()));
    	System.out.println("Norme de A = "+A.norme());
    	System.out.println("Norme de B = "+B.norme());
     
    	}
     
    	static double produitScalaire(Point3D origine1, Point3D extremite1, Point3D origine2, Point3D extremite2){
    	double produit;
    	produit = ((extremite1.GetX()-origine1.GetX())*(extremite2.GetX()-origine2.GetX())+(extremite1.GetY()-origine1.GetY())*(extremite2.GetY()-origine2.GetY())+(extremite1.GetZ()-origine1.GetZ())*(extremite2.GetZ()-origine2.GetZ()));
    	return produit;}
    }

  10. #10
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    Citation Envoyé par in, dans son PREMIER message
    En fait dans ton constructeur, tu n'initialise pas "origine", d'où le nullpointer ...

    ben oui, c'est ce que je disais depuis le début .... en plus en ce moment, la deuxième paire est à un € même en progressif solaire

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 119
    Par défaut
    LOL et oui )))))

    J'espere qu'il regardera le forum ça serait con de rester bloquer sur cette erreur ))))

    En plus les produit scalaire ça ressemble au TP qui te file ne cours ))

    Ils peuvent pas trouvé un peu plus simple quand meme comme opération ???

    Je v ecrire un tp moi aussi :

    Creer une classe qui calcul la tangeante derivé du produit scalaire en rapport avec la troisieme derivé de l'hyperbole de la classe Hyperbole3D.java que vous devrez ecrire

    Vous avez 30 min !!

    Bref à la fin vous serez un roi des math et une bille en java

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Par défaut merci à tous
    ah c'était ça mon erreur !!!

    Merci, oui oui je regarde le forum. Ce sont des erreurs auxquelles je n'avais pas pensé mais c'est super important. Donc, on ne peut appliquer une méthode sur un objet qu'une fois qu'il est créé et qu'on lui a donné une valeur dans la case mémoire. C'est l'encapsulation qui m'a piégé !

    Petite question supplémentaire : on applique produitScalaire sur un objet même si c'est une méthode static ?

  13. #13
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    Citation Envoyé par HighSchool2005
    Petite question supplémentaire : on applique produitScalaire sur un objet même si c'est une méthode static ?
    je comprends pas la question ...

    une méthode static peut être appelée indépendemment de toute instance.

    tu l'appelles de cette manière normalement :

    MaClasse.maMethodeStatic

    Tu peux évidemment l'appeler sur un objet, enfin je veux dire, tu n'auras pas d'erreur, mais en réalité c'est MaClasse.maMethodeStatic qui est exécutée ...

    [EDIT] d'ailleurs c'est ce que tu devrais faire, histoire d'être plus propre

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 119
    Par défaut
    J'ai mis static devant ta methode car on a pas besoin d'instancier la class test vu que l'on execute ton programme directement de la

    Voila bon courage

  15. #15
    Membre chevronné Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Par défaut
    Déjà je trouve un peu étrange ta méthode ProduitScalaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public double produitScalaire(Point3D origine1, Point3D extremite1, Point3D origine2, Point3D extremite2){
    	double produit;
    	produit = ((extremite1.GetX()-origine1.GetX())*(extremite2.GetX()-origine2.GetX())+(extremite1.GetY()-origine1.GetY())*(extremite2.GetY()-origine2.GetY())+(extremite1.GetZ()-origine1.GetZ())*(extremite2.GetZ()-origine2.GetZ()));
    	return produit;}
    Perso, je l'écrirais plus comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public double produitScalaire(Vecteur3D v2){
    	double produit;
    	produit =((this.getExtremite().getX()-this.getOrigine().getX())*(v2.getExtremite().getX()-v2.getExtremite().get()) + etc etc 
    	return produit;}
    Là tu applique en plus le principe d'une classe ...
    et tu fais le produit scalaire entre 2 vecteurs ... (plus simple, plus rigoureux je trouve)

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Par défaut
    Oui je suis d'accord avec toi : ta méthode est plus intéressante.

    As-tu regardé ma méthode sommeVecteur ? Je pense qu'elle peut aussi être amélioré. Je vais voir comment je peux la changer.

    En tout cas, merci

  17. #17
    Membre chevronné Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Par défaut
    Citation Envoyé par HighSchool2005
    Oui je suis d'accord avec toi : ta méthode est plus intéressante.

    As-tu regardé ma méthode sommeVecteur ? Je pense qu'elle peut aussi être amélioré. Je vais voir comment je peux la changer.

    En tout cas, merci
    Ben de la meme facon que le produitscalaire ...
    en faisant bien attention qu'elle te renvoit un 3ieme vecteur ....

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Par défaut
    oui je l'ai modifié tout fonctionne !
    Merci beaucoup à tous

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 119
    Par défaut
    oui c'est beaucoup mieux comme ça !

    Je sortirai quand cette fonction de cette classe et je creerai la fonction à l'interieur de la classe Test2

    enfin apres c'est une question de choix mais ta solution est un peu plus viable !!!!

Discussions similaires

  1. Petite erreur dans un cours sur la gestion des dates
    Par Alexandre T dans le forum Langage SQL
    Réponses: 0
    Dernier message: 05/02/2012, 15h39
  2. Gestion des erreurs (type Exception java) sur un tMap
    Par gavelin dans le forum Développement de jobs
    Réponses: 5
    Dernier message: 31/01/2011, 10h25
  3. Réponses: 4
    Dernier message: 07/12/2006, 09h53
  4. [MAC] Installer un programme java sur mac
    Par spekal dans le forum Général Java
    Réponses: 10
    Dernier message: 17/07/2006, 16h17
  5. Zoom sur des vecteurs ou lignes
    Par mat.M dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 25/11/2002, 10h40

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