Introduction au concept de classe en Java
Tags: poo, java, class, beginners
Published: 2023-03-08 18:56:24

Java est un langage de programmation orienté objet (POO), ce qui signifie que les concepts clés tels que l'encapsulation, l'héritage et le polymorphisme sont au cœur de la conception du langage. L'une des fonctionnalités clés de la programmation orientée objet est la **classe**, qui est un élément fondamental de la **création d'objets en Java**. Dans cet article, nous allons explorer ce qu'est une classe en Java, comment les créer et comment les utiliser.

### Qu'est-ce qu'une classe en Java ?
Une **classe** en Java est un **modèle** qui définit les variables et les méthodes qui constituent un objet. La classe **décrit les caractéristiques et les comportements d'un objet** en définissant ses **propriétés** et ses **méthodes**. Une fois qu'une classe est définie, elle peut être utilisée pour créer des instances (objets) de cette classe.

Par exemple, nous pouvons définir une **classe** "**Personne**" qui a des propriétés telles que le **nom**, **l'âge**, le **sexe**, **l'adresse**, etc. et des **méthodes** telles que "**parler**", "**manger**", "**dormir**" (même si dormir n'est pas une action consciente mais ça c'est un autre débat 😌), etc. Une fois que nous avons défini la classe "Personne", nous pouvons créer des objets de cette classe qui représentent des personnes spécifiques avec leurs propres noms, âges, adresses, etc.

### Comment créer une classe en Java ?
La création d'une classe en Java est simple. Voici la syntaxe de base pour créer une classe en Java :
```java
public class MaClasse {
   // les variables et les méthodes sont définies ici
}
```
Commençons par examiner la première ligne. Le mot clé "**public**" est utilisé pour indiquer que la classe est **accessible à partir d'autres classes**. Si vous n'avez pas besoin que la classe soit accessible à partir d'autres classes, vous pouvez utiliser le mot clé "private" à la place.

Le mot clé "**class**" indique que nous sommes en train de définir une nouvelle classe. Nous pouvons donner un **nom** à notre classe en le plaçant juste après le mot clé "class". Dans cet exemple, le nom de la classe est "**MaClasse**".

Ensuite, nous pouvons définir les variables et les méthodes de notre classe entre les accolades. Les **variables** définies dans la classe sont appelées "**propriétés**" (ou attributs pour certains même si ce mot est lié au langage UML) et les **méthodes** définies dans la classe sont appelées "**méthodes de classe**".

Voici un exemple de classe "**Personne**" qui a des attributs pour le nom, l'âge et l'adresse, ainsi que des méthodes pour parler et dormir :
```java
public class Personne {
   // les attributs de la classe Personne
   public String nom;
   public int age;
   public String adresse;

   // les méthodes de la classe Personne
   public void parler() {
      System.out.println("Je parle.");
   }

   public void dormir() {
      System.out.println("Je dors.");
   }
}
```
Dans cet exemple, nous avons défini une classe "**Personne**" avec des propriétés pour le **nom**, **l'âge** et **l'adresse**, et des méthodes pour **parler** et **dormir**. Les **propriétés** sont définis en tant que **variables publiques**, ce qui signifie qu'ils sont **accessibles à partir de l'extérieur de la classe**. Les méthodes sont également publiques.

Cependant, il est généralement **recommandé** de définir les **propriétés** comme **private** (privés) et de fournir des **méthodes d'accès** (**getters**) et de **modification** (**setters**) pour accéder à ces propriétés à partir de l'extérieur de la classe. Cela s'appelle **l'encapsulation**, qui est l'un des principes fondamentaux de la programmation orientée objet. Voici comment définir les propriétés comme private et fournir des méthodes d'accès pour notre classe "Personne" :
```java
public class Personne {
    private String nom;
    private int age;
    private String adresse;

    public String getNom() {
        return nom;
    }

    public void setNom(String nom) {
        this.nom = nom;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getAdresse() {
        return adresse;
    }

    public void setAdresse(String adresse) {
        this.adresse = adresse;
    }

    public void parler() {
        System.out.println("Je parle.");
    }

    public void dormir() {
        System.out.println("Je dors.");
    }
}
```
Maintenant, les propriétés "nom", "age" et "adresse" sont définis en tant que variables privées, ce qui signifie qu'ils ne peuvent être accédés qu'à l'intérieur de la classe "Personne". Nous avons également ajouté des méthodes d'accès (getters) et de modification (setters) pour accéder à ces attributs à partir de l'extérieur de la classe.

En utilisant l'encapsulation, nous pouvons contrôler l'accès aux propriétés d'une classe et nous assurer que l'état de l'objet est maintenu de manière cohérente. Cela facilite également la modification de l'implémentation interne de la classe sans avoir à modifier le code qui utilise cette classe à l'extérieur.

### Comment utiliser une classe en Java ?
Maintenant que nous avons créé une classe, comment pouvons-nous l'utiliser dans notre programme Java ? Pour utiliser une classe en Java, nous devons créer une instance de cette classe. Pour créer une instance de classe, nous utilisons le mot clé "new". Voici comment créer une instance de notre classe "Personne" :

```java
Personne personne1 = new Personne();
```
Dans cet exemple, nous avons créé une nouvelle **instance** de la classe "**Personne**" en utilisant le mot clé "**new**". Nous avons ensuite stocké cette instance dans une variable appelée "**personne1**". Nous pouvons maintenant accéder aux méthodes et aux propriétés de la classe "Personne" en utilisant cette instance.

Par exemple, si nous voulons accéder à l'attribut "nom" de notre instance "personne1", nous pouvons utiliser la syntaxe suivante :
```java
personne1.nom = "John";
```
Dans cet exemple, nous avons défini la propriété "nom" de notre instance "personne1" sur "John". Nous pouvons également appeler des méthodes de notre instance en utilisant la syntaxe suivante :
```java
personne1.parler();
```

### Conclusion
Les classes sont un élément fondamental de la programmation orientée objet en Java. Les classes définissent les variables et les méthodes qui constituent un objet, et une fois qu'une classe est définie, elle peut être utilisée pour créer des objets de cette classe. En utilisant les classes, les développeurs peuvent créer des **programmes modulaires** et **réutilisables**. En créant des classes, ils peuvent également encapsuler la complexité de leur programme, ce qui **facilite la maintenance et la mise à jour du code**.