Parfait !
Voici un **cours détaillé, clair et facile à comprendre** sur la partie
suivante de ton programme Java, qui utilise un **constructeur** dans une
**classe `Person`**.
---
# 🎓 Cours Java — Les classes, objets et constructeurs
## 🧱 Exemple de base
```java
public class Person {
int age;
String name;
// Constructor method
public Person(int age, String name) {
[Link] = age;
[Link] = name;
public static void main(String[] args) {
Person Bob = new Person(31, "Bob");
Person Alice = new Person(27, "Alice");
```
---
## 1️⃣ C’est quoi une **classe** ?
Une **classe** en Java est un **modèle** ou **plan de construction** pour
créer des objets.
👉 Ici, la classe s’appelle `Person`, donc elle sert à créer des **personnes**.
```java
public class Person {
...
```
---
## 2️⃣ Déclaration des **attributs** (état de l’objet)
Dans la classe, on a deux **attributs** :
```java
int age;
String name;
```
🔹 `age` : un nombre entier (ex : 27, 45, etc.)
🔹 `name` : une chaîne de caractères (ex : "Bob", "Alice")
Ces deux variables définissent **l’état** ou les **caractéristiques** d’une
personne.
---
## 3️⃣ Le **constructeur** : méthode spéciale
```java
public Person(int age, String name) {
[Link] = age;
[Link] = name;
```
### ✅ À quoi ça sert ?
Un **constructeur** est une **méthode spéciale** qui est appelée
**automatiquement** quand on crée un objet avec `new`.
### ✅ Que fait ce constructeur ?
* Il **reçoit deux paramètres** : `age` et `name`
* Il les **stocke dans les variables de l’objet**
* `[Link] = age;`
→ le `[Link]` est l’attribut de l’objet,
→ le `age` vient du paramètre (entre les parenthèses)
### 🧠 Pourquoi utiliser `this` ?
Pour faire la **différence** entre la variable de la classe et le paramètre.
---
## 4️⃣ Création des **objets** dans `main`
```java
public static void main(String[] args) {
Person Bob = new Person(31, "Bob");
Person Alice = new Person(27, "Alice");
```
### 💡 Que se passe-t-il ici ?
* `new Person(31, "Bob")` → crée un objet `Person`
* Le constructeur est **automatiquement appelé**
* `Bob` a :
* `age = 31`
* `name = "Bob"`
Pareil pour `Alice`.
---
## ✅ Résumé tableau
| Élément | Rôle |
| -------------- | --------------------------------------- |
| `class Person` | Déclare un modèle pour des personnes |
| `int age` | Attribut pour l'âge |
| `String name` | Attribut pour le nom |
| `Person(...)` | Constructeur qui initialise les données |
| `new Person()` | Crée une personne avec des valeurs |
---
## 🧪 Amélioration avec une méthode d’affichage
Ajoute une méthode pour afficher les infos :
```java
public void afficherInfos() {
[Link]("Nom : " + name);
[Link]("Âge : " + age);
}
```
Puis dans `main` :
```java
[Link]();
[Link]();
```
---
## 🎯 Ce que tu as appris :
* Créer une classe avec des **attributs**
* Utiliser un **constructeur** pour initialiser un objet
* Créer des **objets** avec `new`
* Utiliser **`this`** pour distinguer les variables
* Ajouter des **méthodes** à une classe
Très bien ! Voici une **série d'exercices N°2** sur la notion de **constructeurs
en Java**, avec une difficulté progressive : **facile → moyen → difficile**.
À la fin, tu trouveras les **corrections** complètes. 🧠✅
---
# 🧪 **Série d’exercices 2 – Les Constructeurs en Java**
---
## 🌟 **Niveau Facile**
### 🟢 **Exercice 1 – Compléter le constructeur**
**Énoncé :**
Complète la classe `Person` pour qu’elle possède :
* un constructeur qui initialise l’âge et le nom,
* une méthode `afficherInfos()` qui affiche les deux attributs.
**Objectif :**
→ Comprendre comment utiliser un constructeur simple.
---
### 🟢 **Exercice 2 – Créer plusieurs personnes**
**Énoncé :**
Dans la méthode `main`, crée trois personnes avec des âges et noms différents.
Affiche les infos de chacune avec `afficherInfos()`.
**Objectif :**
→ Créer plusieurs objets à partir d’un même modèle.
---
## ⚙️**Niveau Moyen**
### 🟡 **Exercice 3 – Ajouter un attribut genre**
**Énoncé :**
Ajoute un troisième attribut `String genre` (Homme/Femme/Autre) dans la
classe.
Modifie le constructeur pour l’inclure. Affiche le tout dans `afficherInfos()`.
**Objectif :**
→ Étendre un constructeur avec plusieurs paramètres.
---
### 🟡 **Exercice 4 – Calculer l'année de naissance**
**Énoncé :**
basée sur l’âge (suppose que l’année actuelle est 2025).
Ajoute une méthode `anneeNaissance()` qui retourne l’année de naissance,
**Objectif :**
→ Ajouter une méthode de calcul à la classe.
---
## 🔥 **Niveau Difficile**
### 🔴 **Exercice 5 – Surcharge de constructeur**
**Énoncé :**
Ajoute un **deuxième constructeur** qui permet de créer une `Person` **sans
donner l’âge**, avec une valeur par défaut de 0.
Exemple :
```java
Person p = new Person("Inconnu");
```
**Objectif :**
→ Comprendre la **surcharge de constructeur** (`constructor overloading`).
---
### 🔴 **Exercice 6 – Affichage formaté**
**Énoncé :**
Améliore la méthode `afficherInfos()` pour afficher un message comme :
```
"Bonjour, je m'appelle Alice, j'ai 25 ans et je suis une Femme."
```
**Objectif :**
→ Travailler avec des chaînes formatées et les attributs de l’objet.
---
## ✅ **CORRECTIONS**
---
### ✔️Correction Exercice 1
```java
public class Person {
int age;
String name;
public Person(int age, String name) {
[Link] = age;
[Link] = name;
public void afficherInfos() {
[Link]("Nom : " + name);
[Link]("Âge : " + age);
}
```
---
### ✔️Correction Exercice 2
```java
public static void main(String[] args) {
Person p1 = new Person(30, "Sophie");
Person p2 = new Person(25, "Youssef");
Person p3 = new Person(40, "Nadia");
[Link]();
[Link]();
[Link]();
```
---
### ✔️Correction Exercice 3
```java
public class Person {
int age;
String name;
String genre;
public Person(int age, String name, String genre) {
[Link] = age;
[Link] = name;
[Link] = genre;
public void afficherInfos() {
[Link]("Nom : " + name);
[Link]("Âge : " + age);
[Link]("Genre : " + genre);
```
---
### ✔️Correction Exercice 4
```java
public int anneeNaissance() {
return 2025 - age;
// Dans main
[Link]("Année de naissance de " + [Link] + " : " +
[Link]());
```
---
### ✔️Correction Exercice 5
```java
// Premier constructeur
public Person(int age, String name, String genre) {
[Link] = age;
[Link] = name;
[Link] = genre;
// Surcharge (constructeur alternatif)
public Person(String name) {
[Link] = 0;
[Link] = name;
[Link] = "Non spécifié";
```
---
### ✔️Correction Exercice 6
```java
public void afficherInfos() {
[Link]("Bonjour, je m'appelle " + name +
", j'ai " + age + " ans et je suis " + genre + ".");