Leçons du module (1/2)
Classes et Objets
Java est un langage centré sur la Programmation Orientée Objet (POO). En POO, nous modélisons le monde réel en utilisant des objets. Un objet possède un état (les données) et des comportements (les actions).
Classes et Objets
- Classe : C'est un modèle (ou blueprint) qui définit les caractéristiques et le comportement d'un type d'objet.
- Objet : C'est une instance concrète créée à partir d'une classe.
Par exemple, si Car est la classe, votre voiture dans le garage est l'objet réel.
Champs d'Instance et Constructeurs
Les données à l'intérieur d'une classe sont appelées champs d'instance (ou attributs). Pour initialiser l'état d'un objet au moment de sa création, on utilise un méthode spéciale appelée constructeur.
Un constructeur a le même nom que la classe et n'a pas de type de retour (pas même void).
class Dog {
// Campi istanza
String name;
int age;
// Costruttore
public Dog(String name, int age) {
this.name = name; // 'this' fa riferimento al campo dell'oggetto corrente
this.age = age;
}
}
Créer un Objet avec new
Pour créer un objet en mémoire, nous utilisons le mot-clé new suivi du constructeur de la classe :
public class Main {
public static void main(String[] args) {
// Creazione di un oggetto Dog
Dog myDog = new Dog("Fido", 3);
// Accesso ai campi
System.out.println(myDog.name + " ha " + myDog.age + " anni.");
}
}
La Référence this
Le mot-clé this en Java fait référence à l'objet actuel sur lequel est exécuté le constructeur ou une méthode. Il est utilisé principalement pour éviter les ambiguïtés lorsque les paramètres du constructeur ont le même nom que les champs d'instance de l'objet (masquage de variables) :
class User {
String username;
public User(String username) {
this.username = username; // this.username è il campo istanza, username è il parametro
}
}
Allocation de Mémoire : Stack vs Heap
Comprendre comment Java alloue la mémoire est fondamental :
- Stack (Pile) : C'est une zone de mémoire rapide et organisée où sont stockées les variables primitives et les références aux objets (adresses mémoire) locales à l'intérieur des méthodes.
- Heap (Tas) : C'est une zone de mémoire plus grande et dynamique où sont alloués les objets réels (avec le mot-clé
new).
Lorsque nous déclarons Dog myDog = new Dog("Fido", 3); :
- La référence
myDogest créée dans le Stack. - L'objet réel
Dogavec ses données est créé dans le Heap. - La variable
myDogpointe vers l'emplacement de l'objet dans le Heap.
À vous de jouer
Complétez la classe Person en ajoutant le champ name et un constructeur approprié. Ensuite, dans la méthode main, créez un objet Person nommé p avec le nom Alice.
Afficher l'indice
Écrivez `String name;` dans la classe, déclarez le constructeur `public Person(String name) { this.name = name; }` et instanciez avec `new Person('Alice')`.
Solution disponible après 3 tentatives
Créez une classe Book avec les champs title (String) et pages (int), un constructeur complet, et instanciez dans la méthode main un livre nommé b avec le titre Moby Dick et 600 pages.
Afficher l'indice
Pensez à définir les deux champs dans Book, à les mapper dans le constructeur en utilisant `this.title = title;` et `this.pages = pages;`, et à utiliser `new Book('Moby Dick', 600)`.
Solution disponible après 3 tentatives
Créez une classe Product avec les champs name (String) et price (double), et un constructeur qui initialise les deux champs. Dans la méthode main, créez un objet Product nommé p avec le nom Laptop et le prix 999.99.
Afficher l'indice
Déclarez les champs `String name;` et `double price;` dans Product, affectez-les dans le constructeur avec `this.name = name;` et `this.price = price;`, puis créez l'objet dans la méthode main.
Solution disponible après 3 tentatives