Introduction à la Programmation Orientée Objet (POO) en Java
Introduction à la POO en Java
-
Objectifs
- Comprendre les concepts fondamentaux de la POO.
- Créer et instancier des classes simples
- Comprendre l’encapsulation et les visibilités
-
Introduction :
- La Programmation Orientée Objet est un paradigme de programmation qui utilise des objets pour représenter les données et les méthodes qui opèrent sur ces données. En Java, tout est basé sur des classes et des objets, et la POO est au cœur du langage.
-
Concepts Fondamentaux
- Les classes
- Classe : Une classe est une définition ou un modèle pour créer des objets. Elle peut contenir des attributs (variables) et des méthodes (fonctions).
- Les objets
- Objet : Un objet est une instance d’une classe. Il a un état (défini par ses attributs) et un comportement (défini par ses méthodes).
- Il est important de comprendre ce qu’est un objet. Pour cela, réfléchissons ensemble à ce qu’est un objet dans le monde réel. Prenons par exemple un ordinateur. Qu’est-ce qui va caractériser cet objet ?
- Ses attributs : un objet comme un ordinateur possède différents attributs, c’est-à-dire des caractéristiques. On peut en citer de nombreux, sa marque, son poids, sa taille, son numéro de série, son pays de fabrication, sa RAM, sa capacité de stockage, le nom de son processeur, etc.
- Ses mécanismes : un objet comme un ordinateur va posséder de nombreux mécanismes qui permettent son bon fonctionnement. Par exemple, un ensemble de mécanismes permet à l’ordinateur d’adopter un comportement précis lorsque l’on appuie sur le bouton « marche/arrêt ». En programmation orientée objet, on peut comparer ces ensembles de mécanismes visant un but aux méthodes.
- Un constructeur : un objet comme un ordinateur doit être construit pour exister en ayant des caractéristiques qui lui sont propres. C’est un peu pareil en programmation orientée objet. On va employer ce que l’on appelle des constructeurs.
- Un modèle de fabrication : on le sait aujourd’hui, les objets informatiques ne sont pas conçus à l’unité par des artisans. Les ordinateurs ne sont pas construits seuls, mais ils sont fabriqués par milliers, à partir d’un modèle. Ce modèle comporte toutes les instructions relatives aux attributs et aux mécanismes de cet ordinateur. C’est la recette qui va permettre de construire autant d’ordinateurs que possible. On peut rapprocher ce concept de celui de classe.
- Les 4 piliers de la POO : encapsulation, abstraction, héritage, polymorphisme.
-
Encapsulation
- Encapsulation : C’est le principe de regrouper les données (attributs) et les méthodes (fonctions) dans une classe, et de contrôler l’accès aux données via des méthodes publiques (getters et setters).
- L’encapsulation est le premier principe de base de la programmation orientée objet. Elle consiste à regrouper des propriétés et des méthodes associées en une seule unité, appelée une classe.
- Les propriétés sont cachées à l’extérieur de la classe et ne peuvent être accédées que par des méthodes spéciales appelées accesseurs (getters) et mutateurs (setters). Cela permet de protéger les données et de contrôler leur modification.
-
Héritage
- Héritage : Permet de créer une nouvelle classe basée sur une classe existante. La nouvelle classe hérite des attributs et méthodes de la classe parente.
- L’héritage est un autre principe important de la POO. Il permet à une classe d’hériter des propriétés et des méthodes d’une autre classe.
- La classe héritante est appelée sous-classe ou classe dérivée, tandis que la classe dont elle hérite est appelée super-classe ou classe de base.
- La sous-classe peut ajouter des fonctionnalités supplémentaires ou modifier les fonctionnalités existantes héritées de la super-classe.
-
Polymorphisme
- Polymorphisme : Permet d’utiliser une méthode de différentes manières, en fonction du contexte. Il peut être réalisé par la surcharge de méthode ou le remplacement de méthode dans une sous-classe.
- Le polymorphisme est un principe qui permet à une classe de se comporter de différentes manières. Cela signifie qu’un objet peut être utilisé comme une instance de sa propre classe ou comme une instance d’une de ses sous-classes.
-
Abstraction
- Abstraction : Permet de créer des classes qui définissent des comportements généraux sans fournir une implémentation complète. Les classes abstraites et les interfaces sont des outils pour l’abstraction.
- L’abstraction est le quatrième principe de la programmation orientée objet. Il consiste à définir une classe abstraite qui contient des méthodes abstraites (méthodes sans corps) qui doivent être implémentées par ses sous-classes.
- L’abstraction permet de définir un ensemble commun de méthodes et de propriétés qui peuvent être utilisées par des classes distinctes, tout en garantissant que chaque sous-classe implémente ces méthodes de manière appropriée.
-
Création d’une Classe en Java
-
Création d’un Objet
-
Héritage
-
Polymorphisme
-
Abstraction
-
Conclusion
- La Programmation Orientée Objet en Java facilite l’organisation du code et la réutilisation des composants. En utilisant les concepts de classes, objets, encapsulation, héritage, polymorphisme et abstraction, vous pouvez créer des applications robustes et maintenables. Continuez à explorer ces concepts pour approfondir votre compréhension de la POO en Java.
public class Personne {
// Attributs
private String nom;
private int age;
// Constructeur
public Personne(String nom, int age) {
this.nom = nom;
this.age = age;
}
// Méthodes
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 void afficherInfos() {
System.out.println("Nom : " + nom + ", Age : " + age);
}
}
public class TestPersonne {
public static void main(String[] args) {
// Création d'un objet de la classe Personne
Personne personne1 = new Personne("Alice", 30);
// Utilisation des méthodes
personne1.afficherInfos();
// Modification des attributs
personne1.setNom("Bob");
personne1.setAge(25);
// Affichage des nouvelles informations
personne1.afficherInfos();
}
}
// Classe de base
public class Animal {
public void manger() {
System.out.println("L'animal mange");
}
}
// Classe dérivée
public class Chien extends Animal {
public void aboyer() {
System.out.println("Le chien aboie");
}
}
// Test de l'héritage
public class TestAnimal {
public static void main(String[] args) {
Chien monChien = new Chien();
monChien.manger(); // Méthode héritée
monChien.aboyer(); // Méthode spécifique à Chien
}
}
// Classe de base
public class Forme {
public void dessiner() {
System.out.println("Dessiner une forme");
}
}
// Classe dérivée
public class Cercle extends Forme {
@Override
public void dessiner() {
System.out.println("Dessiner un cercle");
}
}
// Test du polymorphisme
public class TestForme {
public static void main(String[] args) {
Forme maForme = new Cercle();
maForme.dessiner(); // Appelle la méthode dessiner() de Cercle
}
}
// Classe abstraite
public abstract class Vehicule {
public abstract void demarrer();
public void arreter() {
System.out.println("Le véhicule s'arrête");
}
}
// Classe concrète
public class Voiture extends Vehicule {
@Override
public void demarrer() {
System.out.println("La voiture démarre");
}
}
// Test de l'abstraction
public class TestVehicule {
public static void main(String[] args) {
Vehicule maVoiture = new Voiture();
maVoiture.demarrer();
maVoiture.arreter();
}
}
Code