Classes et Objets

JavaJavaBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous allez apprendre un modèle de programmation très important : la programmation orientée objet (object-oriented programming). Vous devez connaître la différence entre une classe (class) et un objet (object). Faites plus d'exercices pour mieux comprendre.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/ProgrammingTechniquesGroup(["Programming Techniques"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java/ProgrammingTechniquesGroup -.-> java/method_overloading("Method Overloading") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("Classes/Objects") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/constructors("Constructors") subgraph Lab Skills java/method_overloading -.-> lab-178544{{"Classes et Objets"}} java/classes_objects -.-> lab-178544{{"Classes et Objets"}} java/constructors -.-> lab-178544{{"Classes et Objets"}} end

Class and Object

Il existe de nombreux langages de programmation et presque autant de styles de programmation (parfois appelés paradigmes). Les programmes que nous avons écrits jusqu'à présent sont principalement procéduraux, car l'accent a été mis sur la spécification de procédures de calcul. La plupart des programmes Java sont orientés objet, ce qui signifie que l'attention est portée sur les objets et leurs interactions. Voici quelques-unes des caractéristiques de la programmation orientée objet :

Les objets représentent souvent les entités du monde réel. La majorité des méthodes sont des méthodes d'objet (comme les méthodes que vous invoquez sur les String) plutôt que des méthodes de classe (comme les méthodes Math). Les méthodes que nous avons écrites jusqu'à présent ont été des méthodes de classe. Dans ce chapitre, nous allons écrire quelques méthodes d'objet.

Les objets sont isolés les uns des autres en limitant les modes d'interaction, en particulier en empêchant l'accès aux variables d'instance sans invoquer de méthodes. Les classes sont organisées en arbres généalogiques où de nouvelles classes étendent des classes existantes, en ajoutant de nouvelles méthodes et en remplaçant d'autres.

En Java, chaque classe étend une autre classe, sauf la classe Object. La classe la plus de base est la classe Object. Elle ne contient aucune variable d'instance, mais elle fournit les méthodes equals et toString, entre autres.

De nombreuses classes étendent Object, y compris presque toutes les classes que nous avons écrites et de nombreux types Java comme Integer, Double, String, les tableaux (array), etc. Toute classe qui ne nomme pas explicitement une classe parente étend Object par défaut. L'« arbre généalogique » des classes est appelé hiérarchie de classes. Object apparaît généralement en haut, avec toutes les classes filles en dessous.

Les classes et les objets ont généralement des attributs qui sont utilisés pour décrire ces classes/objets, et les méthodes sont utilisées pour effectuer des fonctions spécifiques. Voici un exemple pour vous montrer à quoi ressemble une classe. Enregistrez le code dans objectTest.java et utilisez la ligne de commande pour exécuter le code.

Exemple :

Écrivez le code suivant dans le fichier /home/labex/project/objectTest.java :

// use keyword 'class' to create a new class named Person
class Person
{
    /*
     * there are four properties,
     * name of string type, age of int type
     * gender of string type, weight of float type
    */
    private String name;
    private int age;
    private String gender;
    private float weight;
    // this is a constructor with no return type, the same name as the class, no parameters
    public Person(){

    }
    //this is a constructor with two parameters
    public Person(String name, int age){
        // use parameters to set object's name and age
        this.name = name;
        this.age = age;
    }
    // this is a constructor with four parameters
    public Person(String name, int age, String gender, float weight){
        // use parameters to set object's name, age, gender and weight
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.weight = weight;
    }
       // this is an object method
    public void personInfo(){
        System.out.println("Name: " + this.name + "\nAge: "+ this.age + "\nGender: " + this.gender + "\nWeight: "+this.weight);
    }
}

public class objectTest{
    public static void main(String[] args){
        // use 'new' to create an instance of class Person
        Person p = new Person("aaa",18,"male",50.5f);  // p refers to  an object
        /* you can try these two different construction methods, and see what the output is.
         * Person p  = new Person();
         * Person p = new Person("aaa",18);
        */
        // use object to invoke method personInfo()
        p.personInfo();
    }
}

Sortie :

Exécutez le fichier objectTest.java en utilisant les commandes suivantes :

javac /home/labex/project/objectTest.java
java objectTest

Voyez la sortie :

Name: aaa
Age: 18
Gender: male
Weight: 50.5

Il y a quatre attributs dans la classe Person. Tous les attributs sont privés, donc ils ne peuvent pas être accédés depuis l'extérieur (ils ne peuvent être utilisés que dans la classe). Il y a une méthode d'objet nommée personInfo utilisée pour afficher les informations personnelles et il y a trois constructeurs ayant le même nom que la classe Person. La seule différence entre eux est leur paramètres. Ce comportement est appelé surcharge (overloading).

Résumé

Cette partie est très importante. Les classes (class) sont des abstractions d'entités ayant des caractéristiques communes, et les objets (object) sont des entités ayant des caractéristiques spécifiques. Vous devriez prendre plus de temps pour comprendre le style de programmation mentionné ci-dessus.