Méthodes/objets/ java ....???
Fermé
seljazou
Messages postés
175
Date d'inscription
dimanche 6 septembre 2009
Statut
Membre
Dernière intervention
25 décembre 2009
-
7 déc. 2009 à 02:52
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 7 déc. 2009 à 21:57
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 7 déc. 2009 à 21:57
A voir également:
- Méthodes/objets/ java ....???
- Waptrick java football - Télécharger - Jeux vidéo
- Site pour vendre des objets d'occasion - Guide
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
4 réponses
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
663
7 déc. 2009 à 03:51
7 déc. 2009 à 03:51
je pense qu'il faut mieux essayer de digérer ces concepts l'esprit plus réveillé, tu ferais mieux d'aller te coucher :) si c'est nouveau pour toi autant bien prendre le temps de comprendre.
voici un début de réponse :
lorsqu'on est en java, et qu'on veut utiliser une méthode de classe située dans une classe MaClasse, telle que la méthode est définie : public static float[] mafonction ( int x)
Lorsqu'on l'apele depuis une autre classe, on fait comme ça :
est ce que je me trompe????
Non, tu ne te trompes pas!
un peu bizarre ça, pour comprendre. Que veux-tu faire dans cet exemple exactement ?
Pourquo n'a ton pas passé objet2 en paramètre??
je ne comprends pas non plus bien cette question, pourquoi objet2 devrait être passé en paramètre? ça va avec ma question précédente.
public float[] mafonction ( int x) ;
s on veut la réutilser, on va declarer un objet "objet" puis on va dire par exemple :
float[] tableau;
int x
tableau = objet.mafonction(x);
oui c'est ça. Mais il faut créer (instancier) l'objet avant, avec un taClasse objet = new taClasse() .
Sinon objet n'est pas encore crée.
Mais tu te demandes peut-être : à quoi ça sert ?
L'utilité des objets est grande, mais le but de tout ça c'est de lier des données avec des fonctions qu'on peut appliquer dessus.
Par exemple
et dans ta classe principale de ton programme :
je te laisse essayer de comprendre ça toi -même pour l'instant, je suis fatigué moi aussi :)
voici un début de réponse :
lorsqu'on est en java, et qu'on veut utiliser une méthode de classe située dans une classe MaClasse, telle que la méthode est définie : public static float[] mafonction ( int x)
Lorsqu'on l'apele depuis une autre classe, on fait comme ça :
float tableau ; int x; tableau = MaClasse.mafonction(x) ;
est ce que je me trompe????
Non, tu ne te trompes pas!
String objet1 = new String (); String objet2 = new String(); objet1=objet2.lenght();
un peu bizarre ça, pour comprendre. Que veux-tu faire dans cet exemple exactement ?
Pourquo n'a ton pas passé objet2 en paramètre??
je ne comprends pas non plus bien cette question, pourquoi objet2 devrait être passé en paramètre? ça va avec ma question précédente.
public float[] mafonction ( int x) ;
s on veut la réutilser, on va declarer un objet "objet" puis on va dire par exemple :
float[] tableau;
int x
tableau = objet.mafonction(x);
oui c'est ça. Mais il faut créer (instancier) l'objet avant, avec un taClasse objet = new taClasse() .
Sinon objet n'est pas encore crée.
Mais tu te demandes peut-être : à quoi ça sert ?
L'utilité des objets est grande, mais le but de tout ça c'est de lier des données avec des fonctions qu'on peut appliquer dessus.
Par exemple
public class Rectangle { private int longueur, largeur; public int calculerAire() { return longueur*largeur; } public void initialiser(int a, int b) { longueur = a; largeur = b; }
et dans ta classe principale de ton programme :
public static main(...) { ... Rectangle Rect1, Rect2; int Aire1, Aire2; Rect1 = new Rectangle(); Rect1.initialiser(3, 8); Rect2 = new Rectangle(); Rect2.initialiser(4, 5) Aire1 = Rect1.calculerAire(); Aire2 = Rect2.calculerAire(); ... }
je te laisse essayer de comprendre ça toi -même pour l'instant, je suis fatigué moi aussi :)
seljazou
Messages postés
175
Date d'inscription
dimanche 6 septembre 2009
Statut
Membre
Dernière intervention
25 décembre 2009
1
7 déc. 2009 à 12:57
7 déc. 2009 à 12:57
voila j'ai trop dormi ( même trop ) :p je suis prête.
J'ai compri l'utilit" des objets. Je vais m'eclaircr les idées en ecrivant :
On a deux cas :
- Les méthodes et attributs de classe : précedés de static, si on veut avoir accès à une méthode de classe, on doit préciser la classe dans laquelles elle se trouve , c pour cela qu'on fait MaClasse.fonction( on lui passe ses paramètres) = paramètre de sortie.
-Les méthodes d'nstance : on a besoin d'objet pour avoir accès à eux. Leur rôle c d'avoir bcp d'objets dont chacun a ses propres carctéristiques ( dans ton exemple, Rect1 a des propriétés ( air + initialisation) differentes que Rect2.
C'est ça?
Mais bon j'aimerai bien que tu m'explique la "philosophie" de cette méthode.
String chaine = new String ( " CouCou Tout Le Monde"), chaine 2 = new String();
chaine2=chaine.length();
sachant que lenght() donne la taille d'une chaine de caractère.
et ce que j'ai pas compri, c que d'après l'expresson " chaine2=chaine.length(); " chaine est appliqué à lenght(). Alors la, si c comme ça, pourquoi on le passe pas en paramètres??
je compte sur votre aide.
Merci
J'ai compri l'utilit" des objets. Je vais m'eclaircr les idées en ecrivant :
On a deux cas :
- Les méthodes et attributs de classe : précedés de static, si on veut avoir accès à une méthode de classe, on doit préciser la classe dans laquelles elle se trouve , c pour cela qu'on fait MaClasse.fonction( on lui passe ses paramètres) = paramètre de sortie.
-Les méthodes d'nstance : on a besoin d'objet pour avoir accès à eux. Leur rôle c d'avoir bcp d'objets dont chacun a ses propres carctéristiques ( dans ton exemple, Rect1 a des propriétés ( air + initialisation) differentes que Rect2.
C'est ça?
Mais bon j'aimerai bien que tu m'explique la "philosophie" de cette méthode.
String chaine = new String ( " CouCou Tout Le Monde"), chaine 2 = new String();
chaine2=chaine.length();
sachant que lenght() donne la taille d'une chaine de caractère.
et ce que j'ai pas compri, c que d'après l'expresson " chaine2=chaine.length(); " chaine est appliqué à lenght(). Alors la, si c comme ça, pourquoi on le passe pas en paramètres??
je compte sur votre aide.
Merci
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
663
7 déc. 2009 à 21:57
7 déc. 2009 à 21:57
On a deux cas :
- Les méthodes et attributs de classe : précedés de static, si on veut avoir accès à une méthode de classe, on doit préciser la classe dans laquelles elle se trouve , c pour cela qu'on fait MaClasse.fonction( on lui passe ses paramètres) = paramètre de sortie.
-Les méthodes d'nstance : on a besoin d'objet pour avoir accès à eux. Leur rôle c d'avoir bcp d'objets dont chacun a ses propres carctéristiques ( dans ton exemple, Rect1 a des propriétés ( air + initialisation) differentes que Rect2.
C'est ça?
Oui c'est ça. Enfin ta dernière phrase pas trop en fait : "Leur rôle c'est d'avoir beaucoup d'objets", que veux tu dire par LEUR rôle ? le rôle des méthodes ? non, c'est plutot la volonté du programmeur ;) .
Dans mon exemple, Rect1 à des propriétés différentes : oui
air + intialisation : non, ce ne sont pas des propriétés ça, les propriétés ce sont plutot les variables longueur et largeur.
air et initialisation sont justement les méthodes de la classe. Elle permettent de faire le même calcul mais selon les propriétés de l'objet sur lequel elles sont appelées. Elles sont liés à l'objet lui même, et donc faire Rect1.calculerAire() ou Rect2.calculerAire() appelle la même méthode. Mais dans la méthode tu remarques que j'utilises les variables "longueur" et "largeur". Elles font référence justement aux propriétés de l'objet sur lequel la méthode est appelée ! C'est ça je crois que tu appelais "Passer en paramètre". L'idée c'est qu'en quelque sorte l'objet entier est passé en paramètre d'une méthode. Lorsque je dis "longueur*largeur" c'est la variable longueur et la var. largeur spécifique à Rect1 ou Rect2 selon les deux cas.
Mais bon j'aimerai bien que tu m'explique la "philosophie" de cette méthode.
C'est en fait de clairement séparer les données et les diverses fonctions qui ont trait à ces données.
L'utilité véritable est d'avoir un programme plus clairement porgrammé, avec des "modules" (les classes) qui exécutent certaines taches qui leur sont propres.
Par exemple pour les rectangles, imagine que ce code est dans un gros programme de plusieurs centaines de lignes, et qu'une équipe entière travaille dessus.
Le fait que le code concernant le calcul d'aire soit encapsulé avec une structure d'objet dans la classe rectangle permet de bien voir qu'est ce qu'il se passe, de pouvoir le modifier plus rapidement et plus "proprement" (avec moins de risque d'erreur) par toi ou par tes collègues.
De plus ça permet à des développeurs de créer des modules que d'autres pourront utiliser dans leurs programmes. En quelque sorte tu pourrais imaginer qu'on créer un nouveau "type de donnée" comme Double, Int, String...
L'utilité est difficile à comprendre si tu n'as pas déjà un peu programmé en "procédurial" où il n'y a pas de classes, juste des fonctions.
Ici c'est comme si tu faisais :
String chaine;
String chaine2;
(déclaration de deux variables objets de type (ou plutot de classe) String.
chaine = new String( " CouCou Tout Le Monde");
Ici on instancie l'objet sur lequel pointe la variable chaine. On appelle le constructeur de prototype : String(String). C'est un constructeur spécial qui est codé de sorte que l'objet String ainsi crée contiennent comme propriété principale la chaine "Coucou tout le monde".
chaine2= new String();
Ici on instancie l'objet sur lequel pointe la variable chaine2. On appelle le constructeur par défaut de prototype String(), qui pour ton info intilise la chaine contenue dans l'objet à la chaine vide "".
chaine2=chaine.length();
Ceci ne compile pas.
le fait d'appeler chaine.length() appelle la méthode length() de la classe String sur l'objet chaine. Cette méthode est de prototype int length(), et donc renvoie un int (qui est en l'occurence la longeur de la chaine contenue dans la variable "chaine":
sachant que lenght() donne la taille d'une chaine de caractère.
Mais ceci ne compile pas car tu ne peux pas faire une variable String = un int. (Erreur : Type mismatch: cannot convert from int to String)
tu pourrais faire par contre :
int taille;
taille = chaine.length();
et ce que j'ai pas compri, c que d'après l'expresson " chaine2=chaine.length(); " chaine est appliqué à lenght().
Donc voilà oui c'est ça.
Alors la, si c comme ça, pourquoi on le passe pas en paramètres??
Je pense donc avoir déjà répondu à ça : c'est le fait de dire "chaine.length()" qui passe "chaine" en "paramètre". Pour appliquer la méthode length avec l'objet chaine2, on aurait écrit : "chaine2.length()".
Voilà!
- Les méthodes et attributs de classe : précedés de static, si on veut avoir accès à une méthode de classe, on doit préciser la classe dans laquelles elle se trouve , c pour cela qu'on fait MaClasse.fonction( on lui passe ses paramètres) = paramètre de sortie.
-Les méthodes d'nstance : on a besoin d'objet pour avoir accès à eux. Leur rôle c d'avoir bcp d'objets dont chacun a ses propres carctéristiques ( dans ton exemple, Rect1 a des propriétés ( air + initialisation) differentes que Rect2.
C'est ça?
Oui c'est ça. Enfin ta dernière phrase pas trop en fait : "Leur rôle c'est d'avoir beaucoup d'objets", que veux tu dire par LEUR rôle ? le rôle des méthodes ? non, c'est plutot la volonté du programmeur ;) .
Dans mon exemple, Rect1 à des propriétés différentes : oui
air + intialisation : non, ce ne sont pas des propriétés ça, les propriétés ce sont plutot les variables longueur et largeur.
air et initialisation sont justement les méthodes de la classe. Elle permettent de faire le même calcul mais selon les propriétés de l'objet sur lequel elles sont appelées. Elles sont liés à l'objet lui même, et donc faire Rect1.calculerAire() ou Rect2.calculerAire() appelle la même méthode. Mais dans la méthode tu remarques que j'utilises les variables "longueur" et "largeur". Elles font référence justement aux propriétés de l'objet sur lequel la méthode est appelée ! C'est ça je crois que tu appelais "Passer en paramètre". L'idée c'est qu'en quelque sorte l'objet entier est passé en paramètre d'une méthode. Lorsque je dis "longueur*largeur" c'est la variable longueur et la var. largeur spécifique à Rect1 ou Rect2 selon les deux cas.
Mais bon j'aimerai bien que tu m'explique la "philosophie" de cette méthode.
C'est en fait de clairement séparer les données et les diverses fonctions qui ont trait à ces données.
L'utilité véritable est d'avoir un programme plus clairement porgrammé, avec des "modules" (les classes) qui exécutent certaines taches qui leur sont propres.
Par exemple pour les rectangles, imagine que ce code est dans un gros programme de plusieurs centaines de lignes, et qu'une équipe entière travaille dessus.
Le fait que le code concernant le calcul d'aire soit encapsulé avec une structure d'objet dans la classe rectangle permet de bien voir qu'est ce qu'il se passe, de pouvoir le modifier plus rapidement et plus "proprement" (avec moins de risque d'erreur) par toi ou par tes collègues.
De plus ça permet à des développeurs de créer des modules que d'autres pourront utiliser dans leurs programmes. En quelque sorte tu pourrais imaginer qu'on créer un nouveau "type de donnée" comme Double, Int, String...
L'utilité est difficile à comprendre si tu n'as pas déjà un peu programmé en "procédurial" où il n'y a pas de classes, juste des fonctions.
String chaine = new String ( " CouCou Tout Le Monde"), chaine2 = new String();
Ici c'est comme si tu faisais :
String chaine;
String chaine2;
(déclaration de deux variables objets de type (ou plutot de classe) String.
chaine = new String( " CouCou Tout Le Monde");
Ici on instancie l'objet sur lequel pointe la variable chaine. On appelle le constructeur de prototype : String(String). C'est un constructeur spécial qui est codé de sorte que l'objet String ainsi crée contiennent comme propriété principale la chaine "Coucou tout le monde".
chaine2= new String();
Ici on instancie l'objet sur lequel pointe la variable chaine2. On appelle le constructeur par défaut de prototype String(), qui pour ton info intilise la chaine contenue dans l'objet à la chaine vide "".
chaine2=chaine.length();
Ceci ne compile pas.
le fait d'appeler chaine.length() appelle la méthode length() de la classe String sur l'objet chaine. Cette méthode est de prototype int length(), et donc renvoie un int (qui est en l'occurence la longeur de la chaine contenue dans la variable "chaine":
sachant que lenght() donne la taille d'une chaine de caractère.
Mais ceci ne compile pas car tu ne peux pas faire une variable String = un int. (Erreur : Type mismatch: cannot convert from int to String)
tu pourrais faire par contre :
int taille;
taille = chaine.length();
et ce que j'ai pas compri, c que d'après l'expresson " chaine2=chaine.length(); " chaine est appliqué à lenght().
Donc voilà oui c'est ça.
Alors la, si c comme ça, pourquoi on le passe pas en paramètres??
Je pense donc avoir déjà répondu à ça : c'est le fait de dire "chaine.length()" qui passe "chaine" en "paramètre". Pour appliquer la méthode length avec l'objet chaine2, on aurait écrit : "chaine2.length()".
Voilà!
7 déc. 2009 à 03:18
C'est pour cela qu'il était confu :)
Normalement une méthode s'appelle sur un objet instancié particulier. Mais dans l'exemple que tu montres au début, c'est un cas spécial : c'est une méthode static, qui ne dépend que de la classe, pas d'un certain objet en particulier.