Module 3 : Programmation orientée objet en
Pascal (POO)**
Module 3 : Programmation orientée objet en Pascal (POO)
Dans ce module, nous abordons la Programmation Orientée Objet (POO) en Pascal, principalement
avec l'extension Object Pascal. Ce paradigme permet de concevoir des applications plus modulaires,
extensibles et robustes.
1. Introduction à la POO
1.1 Concepts clés de la POO
Classes : Structures qui regroupent des données (attributs) et des méthodes (fonctions/procédures
associées).
Objets : Instances d'une classe.
Encapsulation : Contrôle d'accès aux données via des modificateurs comme private , public ,
etc.
Héritage : Capacité d'une classe à hériter des propriétés et méthodes d'une autre classe.
Polymorphisme : Possibilité pour une méthode d'agir différemment selon le contexte.
2. Déclaration et utilisation des classes
2.1 Déclaration d’une classe
Exemple de base avec une classe Personne :
Type
Personne = Class
Private
Nom: String;
Âge: Integer;
Public
Procedure AfficherInfo;
Procedure Initialiser(n: String; a: Integer);
End;
2.2 Implémentation des méthodes
Implémentation dans le bloc Implementation :
Procedure [Link](n: String; a: Integer);
Begin
Nom := n;
Âge := a;
End;
Procedure [Link];
Begin
WriteLn('Nom : ', Nom);
WriteLn('Âge : ', Âge);
End;
2.3 Utilisation dans le programme principal
Exemple d'instanciation et d'utilisation :
Var
P1: Personne;
Begin
P1 := [Link];
[Link]('Ali', 25);
[Link];
[Link];
End.
3. Encapsulation et modificateurs d’accès
3.1 Niveaux d'accès
Public : Accessible de partout.
Private : Accessible uniquement au sein de la classe.
Protected : Accessible par la classe et ses descendants.
3.2 Exemple avec encapsulation
Utilisation de Private pour les attributs et de méthodes pour y accéder :
Type
Personne = Class
Private
Nom: String;
Public
Procedure SetNom(n: String);
Function GetNom: String;
End;
Procedure [Link](n: String);
Begin
Nom := n;
End;
Function [Link]: String;
Begin
GetNom := Nom;
End;
4. Héritage et polymorphisme
4.1 Héritage
Déclaration d'une classe fille qui hérite d'une classe mère :
Type
Personne = Class
Public
Nom: String;
Procedure AfficherInfo; Virtual;
End;
Étudiant = Class(Personne)
Public
Classe: String;
Procedure AfficherInfo; Override;
End;
4.2 Polymorphisme
Exemple d'utilisation du polymorphisme :
Procedure [Link];
Begin
WriteLn('Nom : ', Nom);
End;
Procedure É[Link];
Begin
Inherited AfficherInfo;
WriteLn('Classe : ', Classe);
End;
Var
P: Personne;
E: Étudiant;
Begin
P := [Link];
[Link] := 'Ali';
[Link];
E := É[Link];
[Link] := 'Fatima';
[Link] := 'Terminale';
[Link];
P := E; { Polymorphisme }
[Link];
[Link];
[Link];
End.
5. Gestion avancée des objets
5.1 Constructeurs et destructeurs
Constructeur : Méthode spéciale pour initialiser un objet.
Destructeur : Méthode spéciale pour libérer les ressources.
Exemple :
Type
Personne = Class
Public
Constructor Create(n: String);
Destructor Destroy; Override;
End;
Constructor [Link](n: String);
Begin
Nom := n;
WriteLn('Personne créée : ', Nom);
End;
Destructor [Link];
Begin
WriteLn('Personne détruite : ', Nom);
Inherited Destroy;
End;
Var
P: Personne;
Begin
P := [Link]('Ali');
[Link];
End.
5.2 Gestion dynamique de la mémoire
Exemple : Création d'une liste d'objets :
Var
Étudiants: Array of Personne;
i: Integer;
Begin
SetLength(Étudiants, 3);
For i := 0 To 2 Do
Étudiants[i] := [Link]('Étudiant ' + IntToStr(i + 1));
For i := 0 To 2 Do
Étudiants[i].AfficherInfo;
For i := 0 To 2 Do
Étudiants[i].Free;
End.
6. Applications pratiques de la POO en Pascal
6.1 Gestion d'une bibliothèque
Définition des classes :
Type
Livre = Class
Public
Titre: String;
Auteur: String;
Procedure AfficherInfo;
End;
Programme principal :
Var
L1: Livre;
Begin
L1 := [Link];
[Link] := 'Pascal Programming';
[Link] := 'John Doe';
[Link];
[Link];
End.
Conclusion
Ce module couvre les bases de la programmation orientée objet en Pascal, offrant une approche
puissante pour organiser et développer des programmes complexes. Si vous avez besoin d'exercices
pratiques ou de projets spécifiques, faites-le-moi savoir !