Classes et méthodes : conventions d'écriture

Résolu/Fermé
GMHB Messages postés 8 Date d'inscription jeudi 23 décembre 2021 Statut Membre Dernière intervention 4 janvier 2022 - 3 janv. 2022 à 13:33
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 - 4 janv. 2022 à 17:57
Bonjour,

Je lis sur mon bouquin d'initiation au Java que, par convention, le nom d'une classe commence par une majuscule et que le nom d'une méthode commence par une minuscule.

Dans la fonction System.out.println(), faut-il comprendre que "out" est une méthode de la classe "System". Que serait "println" ? Une sous-méthode ?

Dans l'égalité "perimetre = 2 * Math.PI * r ;" , "Math" semble être une classe si je me fie à la majuscule. Qu'est ""PI "? Une sous-classe, vu la majuscule ?

Si "Math" est bien une classe, comment comprendre qu'elle ne se comporte pas comme une classe dans la formulation de l'égalité ?

Je vous remercie.


Configuration: Windows / Firefox 95.0

5 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
3 janv. 2022 à 13:40
Bonjour
Dans les conventions habituelles, on trouve aussi les constantes écrites en Majuscule...
PI est une constante...
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
Modifié le 3 janv. 2022 à 14:36
Bonjour,

le nom d'une classe commence par une majuscule et que le nom d'une méthode commence par une minuscule
Mais il y a aussi d'autres choses qui sont nommés, notamment tout ce qui permet de stocker des valeurs (variables, paramètres de méthodes, attributs de classe, etc.)

Dans la fonction System.out.println(), faut-il comprendre que "out" est une méthode de la classe "System". Que serait "println" ? Une sous-méthode ?
out
est un attribut de classe, en l'occurrence ici un attribut static, de type PrintStream, et
println
est une méthode de la classe PrintStream

Dans l'égalité "perimetre = 2 * Math.PI * r ;" , "Math" semble être une classe si je me fie à la majuscule. Qu'est ""PI "? Une sous-classe, vu la majuscule ?
En effet Math est une classe et PI est une constante, en l'occurrence ici une constante static, de type double.
NB. Ici ce n'est pas une égalité mais une affectation.

Si "Math" est bien une classe, comment comprendre qu'elle ne se comporte pas comme une classe dans la formulation de l'égalité ?
C'est la valeur de PI qui compte dans ta formule, si on fait intervenir la classe Math c'est juste pour savoir où trouver PI.

Remarque : tes deux exemples, out et PI, sont static, peut être faudrait il revoir cette notion pour bien comprendre. Mais les sous classes et les sous méthodes ça n'existe pas.
0
GMHB Messages postés 8 Date d'inscription jeudi 23 décembre 2021 Statut Membre Dernière intervention 4 janvier 2022
3 janv. 2022 à 17:33
Grand merci à tous deux. J'y vois plus clair !
0
GMHB Messages postés 8 Date d'inscription jeudi 23 décembre 2021 Statut Membre Dernière intervention 4 janvier 2022
4 janv. 2022 à 11:10
Je reviens vers vous pour mieux comprendre l'écriture d'une constante.

La constante appartenant à la classe Math est nommée par des caractères uniquement majuscules.
Logiquement une constante perso devrait respecter cette convention.
Or mon bouquin propose une écriture identique à une écriture de classe :
public final static int TailleEcran = 600;

Concernant les mots public final static, je comprends :

public : la constante est accessible de partout
final : la valeur de celle-ci ne peut être modifiée
static : sa valeur n'occupe qu'un seul emplacement mémoire. Elle ne peut être dupliquée dans d'autres emplacements mémoire.
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
4 janv. 2022 à 14:30
Java est fortement documenté donc il est bon de revenir directement à la documentation officielle pour comprendre les choses.

https://www.oracle.com/java/technologies/javase/codeconventions-namingconventions.html
Constants :
The names of variables declared class constants and of ANSI constants should be all uppercase with words separated by underscores ("_"). (ANSI constants should be avoided, for ease of debugging.)
static final int MIN_WIDTH = 4;
static final int MAX_WIDTH = 999;
static final int GET_THE_CPU = 1;

Dans ton cas, en respectant les conventions de nommage tu devrais avoir :
public final static int TAILLE_ECRAN = 600;

Dans certains cas, lorsque la valeur n'est pas vraiment une constante mais un objet avec un état (ce qui n'est pas ton cas ici), on peut accepter d'avoir une variable static final écrite comme un attribut (ex: tailleEcran), mais en aucun cas on ne devrait voir TailleEcran écrit avec un T majuscule, cette nomenclature est réservée aux classes.
  • public : la constante est accessible de partout

Oui, par opposition à private ou protected
  • final : la valeur de celle-ci ne peut être modifiée

C'est un peu plus subtil que ça. Pour les types primitifs c'est vrai, mais pour les objets la valeur peut être modifiée, c'est la référence de l'objet qui ne peut pas être modifiée.
Une définition plus exacte serait : ne peut être affecté qu'une seule fois.
  • static : sa valeur n'occupe qu'un seul emplacement mémoire. Elle ne peut être dupliquée dans d'autres emplacements mémoire.

Oui et non. Il faut comprendre qu'une classe c'est ni plus ni moins qu'un objet (de type Class) et qu'une valeur static de la classe est une valeur porté par l'objet qui définit la classe, par opposition aux valeurs non static, qui sont portées indépendamment par chacun des objets créés par la classe.
Il va donc y avoir un partage de la même valeur static pour tous les objets de la classe puisque celle-ci est propre à la classe et non aux objets.
NB. Ce qui n'empêche en rien de pouvoir la dupliquer pour en faire autre chose.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 928
4 janv. 2022 à 17:57
Bonjour

Imaginons un constructeur automobile.
Son usine délivre à la chaîne quantité de voitures du modèle ccm2022.
Le plan de fabrication (à supposer qu’aujourd’hui il existe encore un plan papier) est la classe ccm2022.
Chaque voiture est une instance.
Elle a des attributs qui lui sont propres, la couleur, la motorisation etc…

Par contre elles ont toutes une chose en commun (unique pour toute, y’a qu’un seul emplacement mémoire utilisé => static) qui en plus est une constante, c’est le nom commercial : MaSuperVoiture


0