Champs de classe
L'essence de la programmation orientée objet est de représenter le programme comme une interaction d'objets.
 
Un objet est une sorte d'entité avec certaines propriétés et certaines opérations.

Les objets ont été créés à l'origine pour simuler la réalité : beaucoup de choses qui nous entourent peuvent être représentées comme un objet. Par exemple, un livre que vous avez lu récemment peut être considéré comme un objet avec les propriétés 'nom', 'auteur', 'classe d'âge', 'texte du livre', 'nombre de pages', etc. Au-dessus du livre vous peut effectuer des opérations comme "lire un livre", "graver un livre", etc.
Dans la terminologie du langage de programmation Java, ces "propriétés" sont appelés champs et les opérations sur les objets sont appelées méthodes.
Étant donné que Java est un langage à typage statique, tout objet doit être créé selon un modèle. En Java, ces modèles sont des classes. La classe décrit les champs qu'un certain type d'objet peut avoir et les opérations qui y sont définies.
La différence entre classe et objet est analogue à la différence entre "voiture" et "Toyota Camry garée au 5ème bâtiment de la rue Cheburekovo".

Considérez la procédure de création de votre propre classe d'objets avec des champs en Java. livre de classe { nom de chaîne ; Chaîne authorName ; int ageRequirement ; Stringtext ; int pageCount ; } Ce code crée la classe"Livre". objetsde la classe «Livre» il existe deux propriétés entières (nommées «ageRequirement» et «pageCount») et trois propriétés de type «String» (avec les noms "name", "authorName" et "text".
La syntaxe générale pour créer une classe avec des champs est la suivante.
  classe <nom de classe> { <premier type de propriété> <premier nom de propriété> <deuxième type de propriété> <deuxième nom de propriété> &helli; <type de dernière propriété> <nom de la dernière propriété> }

Bien sûr, en Java, vous pouvez créer des classes non seulement de cette manière (il existe également des méthodes, des modificateurs d'accès et bien plus encore), mais vous en reparlerez plus tard.

Méthodes de classe
Les opérations sur les objets en Java sont appelées méthodes. Les méthodes sont comme des fonctions mathématiques : elles peuvent accepter des argumentset renvoyer une valeur. D'autre part, les méthodes en Java ont également accès à tous les champs d'un objet.

Pour créer une méthode dans une classe, vous devez l'inclure dans la classe. Par exemple, nous pouvons définir une méthode print(age) qui imprimera des informations sur notre livre et affichera un avertissement si l'utilisateur n'est pas encore assez âgé pour ce livre.

    classe Livre
    {
        Nom de la chaîne ;
        Chaîne authorName ;
        int ageRequirement ;
        Texte de chaîne ;
        int pageCount ;
        // créer une méthode d'impression
        vide imprimer(int âge)
        {
            Système.out.< span style="color:#7d9029">println("Nom : " +nom);
            Système.out.< span style="color:#7d9029">println("Auteur : " +nom de l'auteur);
            Système.out.< span style="color:#7d9029">println("Nombre de pages : "+Entier.toString(exigence d'âge);
            // le code de vérification va ici
        }
    }
 
Analysons la syntaxe pour créer une méthode.
1) La première ligne d'une méthode est sa signature.
2) Le type de retour de la méthode est écrit en premier. Notre méthode ne renvoie aucune valeur, nous écrivons donc void.
3) Ensuite dans la signature se trouve le nom de la méthode (print).
4) Entre parenthèses, il y a une liste d'arguments. Les arguments sont séparés par des virgules. Pour chaque argument, son type et son nom sont spécifiés, séparés par un espace. Dans notre cas, il n'y a qu'un seul argument, il a le type int et le nom age, donc il n'y a pas de virgules.
5) Après cela vient le code de la méthode entre accolades. Pour renvoyer une valeur d'une méthode, écrivez return <value>;. Dans l'exemple, la méthode ne renvoie rien, donc return peut être omis. Pour terminer prématurément l'exécution d'une méthode, vous pouvez écrire return;.
6) Dans la classe elle-même, on peut faire référence aux champs de l'objet de cette classe par leur nom.

Modificateurs d'accès
Par défaut, tous les champset méthodes d'une classe en Java sont privés. Cela signifie que personne ne peut y accéder, ce qui signifie qu'en dehors des objets de cette classe, aucune méthode ne peut utiliser les champs et méthodes des objets de cette classe.

Les champs et les méthodes peuvent être rendus publics avec le modificateur d'accès public. Il existe également un modificateur private qui rend le champ privé. Il est facultatif car tous les champs et méthodes sont privés par défaut. Voici un exemple d'utilisation des modificateurs public  et private. livre de classe { nom de chaîne public ; Chaîne authorName ; privé int ageRequirement ; Stringtext ; public int pageCount ; int getTextLength() { retourner la longueur du texte(); } public int getAverageLetterCount() { retourne getTextLength() / pageCount ; } privé int getDifficuiltyLevel() { return 5 * ageRequirement * text.Length(); } }
Dans cette version de la classe Book , les champs name et pageCount sont rendus publics pour lecture et modification dans d'autres objets. La méthode getAverageLetterCount() peut également être appelée à partir d'objets d'autres classes. Tous les autres champs et méthodes restent privés et ne sont disponibles que dans les méthodes de cette classe. Dans la méthode publique getAverageLetterCount() nous pouvons appeler la méthode privée getTextLength() car getAverageLetterCount() appartient à la classe elle-même. Mais cela ne fonctionnera pas à partir d'une méthode d'une autre classe.

Mais pourquoi alors rendre les champs privés ? Dans le code Java, vous ne verrez principalement que des champs privés. Le fait est que si l'accès aux champs privés est effectué via les méthodes publiques de l'objet, alors avec un tel accès aux champs privés, il sera possible d'effectuer des actions et des vérifications supplémentaires. Vous en saurez plus dans la leçon sur l'encapsulation.

Jusqu'à présent, les leçons ont traité de la création de classes, qui sont des modèles pour la création d'objets. Dans la même leçon, le processus de création et d'utilisation des objets eux-mêmes sera décrit.

Liens
Dans le langage Java, une variable ne peut jamais stocker un objet. Au lieu de cela, Java a des références qui pointent vers l'emplacement d'un objet en mémoire.
La syntaxe de création d'une variable de type référence d'objet est la suivante :
<Nom de la classe> <nom de variable>;
Il est à noter que nous indiquons immédiatement la classe dont les objets seront référencés.

Exemple : une variable nommée "b" pointant vers la classe Book :

Livre b ;

De la même manière, vous pouvez créer des champs de classe (vous pouvez y ajouter un modificateur d'accès). Vous pouvez créer des tableaux de références et les renvoyer à partir de méthodes. Exemple :

public classe Bibliothèque {
  Livre public[] livres ;
  public Livre findBookWithName(Nom de chaîne) {
//code qui trouve le bon livre
  }
} ;


Conclusion : à bien des égards, vous pouvez travailler avec des références de la même manière qu'avec des variables d'autres types élémentaires (int, long, double...).