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

avec Java Discussion :

Une simple question


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 80
    Points : 38
    Points
    38
    Par défaut Une simple question
    Bonjour,

    je n'ai pas de problème de développement. J'ai fini un programme tout simple et j'ai juste une question, qui est juste pour ma culture personnelle.
    J'ai développé une méthode d'addition de deux vecteurs sous Eclipse dont voila la version qui marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    	public Vecteur add(Vecteur v)
    	{
     
    		v.x=this.x+v.x;
    		v.y=this.y+v.y;
    		return v;
    	}
    et la deuxième version qui ne fonctionnait pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	public Vecteur add(Vecteur v)
    	{
    		Vecteur res = new Vecteur();
    		res.x=this.x+v.x;
    		res.y=this.y+v.y;
    		return res;
    	}
    Juste pour savoir, il y avait un problème avec le vecteur res dans cette méthode ?

  2. #2
    Membre expérimenté
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Points : 1 640
    Points
    1 640
    Par défaut
    et la deuxième version qui ne fonctionnait pas :
    C'est-à-dire ?

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Peux-tu montrer le code de la classe Vecteur ?

    A+

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 80
    Points : 38
    Points
    38
    Par défaut
    C'est à dire que lors de l'execution, il n'y avait pas d'erreur de compilation, mais la méthode ne faisait rien.

    Voila le code de la 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
    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
     
    public class Vecteur {
     
    	protected double x, y;
     
    	public Vecteur(double abs, double ord)
    	{
    		x=abs;
    		y=ord;
    	}
     
    	public Vecteur()
    	{
    		x=0.0;
    		y=0.0;
    	}
     
    	public void affect(Vecteur v)
    	{
    		this.x=v.x;
    		this.y=v.y;
    	}
     
    	public Vecteur add(Vecteur v)
    	{
     
    		v.x=this.x+v.x;
    		v.y=this.y+v.y;
    		return v;
    	}
     
    public static void main(String[] args) {
     
     
    		Vecteur v = new Vecteur(1.5 , 2.1);
    		Vecteur u = new Vecteur();
     
    		u.affect(v);
    		System.out.println("Affectation "+u.x+" "+u.y);
    		u.add(u);
    		System.out.println("Addition : "+u.x+" "+u.y);
    		u.add(u);
    		System.out.println(u.x+" "+u.y);
             }
    }

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Le problème est là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        
    public Vecteur add(Vecteur v)
    {        
       this.x += v.x;
       this.y += v.y;
    //  "return v" n'est pas faux, mais je suppose que tu veux renvoyer l'instance  en cours...    
       return this;
    }
    Dans ton code, tu ajoutais la valeur de l'objet en cours à la valeur de l'objet passé en paramètre, à priori, ce n'est pas ce que tu voulais faire...

    A+

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 169
    Points : 113
    Points
    113
    Par défaut
    Je pense que :

    Dans le cas de ta méthode qui ne "fonctionnait pas", il fallait l'utiliser comme ça :

    au lieu de seulement
    Car tu fabriques un nouveau vecteur que tu ne récupérais pas.Tu vois ?

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 80
    Points : 38
    Points
    38
    Par défaut
    Oui je vois, effectivement ca marche mieux comme ca

    @ OButterlin : je voulais bien ajouter la valeur de l'objet en cours à la valeur de l'objet passé en paramètre.

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Alors la manière de procéder est surprenante... (à l'envers)
    Tu devrais utiliser la méthode que je t'ai montrée comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ...
    Vecteur v1 = new Vecteur(10, 500);
    Vecteur v2 = new Vecteur(1, 102);
     
    v1.add(v2);
     
    // et là, v1 = (11, 602)
    Ca me paraît plus logique, mais bon, à toi de voir...
    A+

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 80
    Points : 38
    Points
    38
    Par défaut
    Effectivement, j'ai procédé à l'envers...
    Je ne sais pas pourquoi j'ai écrit ca. C'est toi qui a raison OButterlin

  10. #10
    Membre habitué Avatar de fomazou
    Inscrit en
    Mars 2004
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 220
    Points : 151
    Points
    151
    Par défaut
    Au depart l'auteur du message propose deux bou de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public Vecteur add(Vecteur v)
    	{
     
    		v.x=this.x+v.x;
    		v.y=this.y+v.y;
    		return v;
    	}
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public Vecteur add(Vecteur v)
    	{
    		Vecteur res = new Vecteur();
    		res.x=this.x+v.x;
    		res.y=this.y+v.y;
    		return res;
    	}
    moi je ne vois aucun probleme dans le deux codes. les pbs sont juste au niveau du programme principales.

  11. #11
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par fomazou Voir le message
    Au depart l'auteur du message propose deux bou de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public Vecteur add(Vecteur v)
        {
     
            v.x=this.x+v.x;
            v.y=this.y+v.y;
            return v;
        }
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public Vecteur add(Vecteur v)
        {
            Vecteur res = new Vecteur();
            res.x=this.x+v.x;
            res.y=this.y+v.y;
            return res;
        }
    moi je ne vois aucun probleme dans le deux codes. les pbs sont juste au niveau du programme principales.
    Et alors ?

Discussions similaires

  1. une simple question
    Par Ganondorf dans le forum Langage
    Réponses: 2
    Dernier message: 17/11/2007, 13h28
  2. Une simple question de théorie
    Par JackBeauregard dans le forum Langage
    Réponses: 18
    Dernier message: 16/10/2006, 07h06
  3. [Forum]Une simple question à propos d'un utilisateur du forum
    Par Satch dans le forum La taverne du Club : Humour et divers
    Réponses: 76
    Dernier message: 26/07/2006, 10h56
  4. PageControl -> Une simple question
    Par Invité dans le forum C++Builder
    Réponses: 4
    Dernier message: 08/05/2004, 09h19

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