[java] j'ai besoin explication de ce prg

Résolu/Fermé
domxaline - 7 avril 2015 à 20:59
 domxaline - 8 avril 2015 à 12:26
Bonjour,
voilà mon prg orgine:

public class Points2
{
public double abs;
public double ord;
public static int varStat;

public void initialiser ( double x, double y )
{
abs = x; ord = y;
}

public static double calculDistance (Points2 M, Points2 N)
{
double distance;
distance = Math.sqrt ( (N.abs - M.abs) * (N.abs - M.abs) + (N.ord - M.ord) * (N.ord - M.ord) );
return distance;
}

public double calculDistance (Points2 P)
{
double distance;
distance = Math.sqrt( (this.abs - P.abs) * (this.abs - P.abs) + (this.ord - P.ord) * (this.ord - P.ord) );
return distance;
}
}

public class Tester6Points2
{
public static void main (String [ ] args )
{
Points2 A = new Points2 ( );
Points2 B = new Points2 ( );
A.initialiser (2,7);
B.initialiser (3,13);
double longeur = A.calculDistance (B);
System.out.println("distance entre A et B =" + longeur );
}
}


je ne comprend pas,la partie qui suit:

public static double calculDistance (Points2 M, Points2 N)
{
double distance;
distance = Math.sqrt ( (N.abs - M.abs) * (N.abs - M.abs) + (N.ord - M.ord) * (N.ord - M.ord) );
return distance;
}

public double calculDistance (Points2 P)
{
double distance;
distance = Math.sqrt( (this.abs - P.abs) * (this.abs - P.abs) + (this.ord - P.ord) * (this.ord - P.ord) );
return distance;


la méthode calculDistance avec static:
N est B
M est A est ce que c'est ça?

la méthode calculDistance sans static:
this est A
P est B est ce que c'est ça ?

veuillez m'aider svp, je confonds tout

A voir également:

4 réponses

luckydu43 Messages postés 3470 Date d'inscription vendredi 9 janvier 2015 Statut Membre Dernière intervention 30 juin 2022 832
7 avril 2015 à 21:25
Bonjour !

Voyons ensemble :

Lorsque la méthode initialiser() de ta classe Point2 est appelée, 2 valeurs sont prises en paramètre et vont "remplir" les variables abs et ord.
Ces valeurs sont inhérentes à l'objet Points2 (instance de la classe). Cela signifie que this.abs va appeler le paramètre abs de l'objet Points2 (et pareil pour this.ord).

Si la méthode est statique, elle ne peut accéder aux paramètres de l'objet. Tes classes sont donc bien paramétrées;-)

Dans ta première méthode :
a est M, b est N.

Dans la seconde :
a est this (il d'agit de l'objet dont tu appelle la méthode dans le main =
A.calculDistance (B);

b est P

D'ailleurs, voici ta classe telle qu'elle devrait être ;-)
public class Points2 {
	private double abs;
	private double ord;

	/*
	 * Constructeur de la classe. Au moment de la création du point, 
	 * renseigner les valeurs abs et ord
	 */
	public Points2(double abs, double ord) {
		super();
		this.abs = abs;
		this.ord = ord;
	}

	/*
	 * Getters
	 */
	public double getAbs() {
		return abs;
	}
	
	public double getOrd() {
		return ord;
	}

	/*
	 * Setters
	 */
	public void setAbs(double abs) {
		this.abs = abs;
	}
	
	public void setOrd(double ord) {
		this.ord = ord;
	}

	/*
	 * La formule de calcul de la distance entre deux points est :
	 *              |-----------------\
	 * dist(a,b) = \|(xb-xa)²+(yb-ya)²
	 */
	/**
	 *  Méthode statique permettant de calculer la longueur
	 *  entre 2 points placés en paramètre
	 * @param M
	 * @param N
	 * @return
	 */
	public static double calculDistance(Points2 M, Points2 N) {
		return Math.sqrt((N.abs - M.abs) * (N.abs - M.abs)
				+ (N.ord - M.ord) * (N.ord - M.ord));
	}

	/**
	 * Méthode permettant de calculer la longueur entre ce point
	 * et le point placé en paramètre
	 * @param P
	 * @return
	 */
	public double calculDistance(Points2 P) {
		return Math.sqrt((this.abs - P.abs) * (this.abs - P.abs)
				+ (this.ord - P.ord) * (this.ord - P.ord));
	}
}



Voilà !
Si tu as d'autres questions, nous sommes à disposition !

Et bonne continuation dans la découverte de ce merveilleux langage qu'est Java !

Luc
0
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 3 005
7 avril 2015 à 22:51
Bonjour,

"bonne continuation dans la découverte de ce merveilleux langage qu'est Java"
Pour information, cela fait 6 ans que domxaline "découvre" le Java.
Je crois qu'à un moment il faut savoir être lucide et passer à autre chose...
0
domxaline > KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023
8 avril 2015 à 12:26
même s'il fallait toute ma vie,
je le ferai, en tant que je l' apprend.
merci de m'avoir répondu
0
Bonjour,
pourquoi vous dîtes ça
cette question est trop facile pour vous, pas pour moi
je mêle mes pinceaux
dîtes simplement est ce que je suis raison ou pas
0
luckydu43 Messages postés 3470 Date d'inscription vendredi 9 janvier 2015 Statut Membre Dernière intervention 30 juin 2022 832
7 avril 2015 à 21:29
Et sans la javadoc, voici le main :
public class Tester6Points2 {
	public static void main(String[] args) {
		Points2 A = new Points2(2, 7);
		Points2 B = new Points2(3, 13);
		double longueur = A.calculDistance(B);
		System.out.println("distance entre A et B =" + longueur);
	}
}
0
merci beaucoup
0
luckydu43 Messages postés 3470 Date d'inscription vendredi 9 janvier 2015 Statut Membre Dernière intervention 30 juin 2022 832
7 avril 2015 à 21:54
N'ayant pas lu le second post, je tiens à m'excuser si le ton de mon premier post était trop condescendant. Je n'ai absolument pas cette idée en tête !
J'ai commencé comme vous, et je comprend très bien les difficultés d'apprentissage de ce langage. Certes, depuis, mon niveau s'est quelque peu amélioré, mais je ne vous rabaisse pas, bien au contraire.
D'ailleurs, les 2 classes fournies en exemple vous permettront d'appréhender quelques subtilités : Constructeurs, getters/setters, private... tout cela est lié à la sécurité du code (même si la véritable sécurité au sens propre commencera un peu plus tard dans l'apprentissage).
La Javadoc (/** * * **/) est aussi importante ! On peut plus facilement comprendre un code commenté ;-)
Et il faut limiter le nombre de variables (certes, Java inclus le Garbage Collector, permettant de supprimer les objets obsolètes au fil de l'exécution du programme, mais c'est plus pour une question de lisibilité).

Si vous avez des questions au fil du temps, vous pouvez toujours vous tourner vers le forum, quelqu'un aura certainement les compétences nécessaires pour vous aider.
En vous souhaitant bon courage pour la suite !
Bonne soirée
0