0% ont trouvé ce document utile (0 vote)
51 vues47 pages

POO Chap 1

Le document présente un cours sur la Programmation Orientée Objet (POO), abordant ses principes fondamentaux tels que l'encapsulation, l'héritage, le polymorphisme et l'abstraction. Il décrit également l'historique de la POO, ses avantages, et fournit des études de cas pour illustrer son application dans des systèmes de gestion variés. Enfin, le document explique la structure des classes et des objets en Java, ainsi que les conventions de nommage et les méthodes constructrices.

Transféré par

Abira Zaro
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
51 vues47 pages

POO Chap 1

Le document présente un cours sur la Programmation Orientée Objet (POO), abordant ses principes fondamentaux tels que l'encapsulation, l'héritage, le polymorphisme et l'abstraction. Il décrit également l'historique de la POO, ses avantages, et fournit des études de cas pour illustrer son application dans des systèmes de gestion variés. Enfin, le document explique la structure des classes et des objets en Java, ainsi que les conventions de nommage et les méthodes constructrices.

Transféré par

Abira Zaro
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 47

Programmation Orientée

Objet (POO)
Abir ZEKRI BEN YAHIA
Plan du cours

1. Introduction à la Programmation Orientée Objet


2. Les principes fondamentaux de la POO
2.1. Encapsulation
2.2. Héritage
2.3. Polymorphisme
2.4. Absraction

2
Objectifs du cours POO

1. Appréhender les concepts de l'approche objet afin d’être


capable de comprendre toute technologie basée sur
l’objet.

Objet
Classe Héritage


2. S’initier à la programmation en java

3
Bref historique

Langages machine (0/1) Langages symboliques


(Assembleur)  Langages de haut niveau ou indépendants du
matériel (Basic, Fortran, Cobol, etc.)

Programmation structurée  Programmation procédurale 


Programmation modulaire  Programmation objet  ..

4
Bref historique

•Simula a été le premier langage de programmation à


implémenter le concept de classes en 1967 !

Ole-Johan Kristen
Dahl Nygaard

5
Bref historique

•Smalltalk, en plus d’implémenter les principaux concepts


de base (classe, objet, héritage, polymorphisme), introduit
la notion d'objet persistant, de traitement des exceptions et
le principe Modèle-Vue-Contrôleur. (les années 70).

6
Paradigmes de programmation

Un paradigme est une manière de programmer.

2 exemples : programmations Impérative et Orientée Objet


Procédurale Orientée Objet
• Que doit faire ce programme ? • Quelles sont les entités de ce
programme ?

•De quelles procédures ai-je • Quels sont les objets


besoin ? fondamentaux de l’application ?

Autres exemples : programmation Déclarative


-HTML, XML, etc. (descriptive),
- Lisp, etc. (fonctionnelle),
-Prolog, etc. (Logique), etc.

7
Principes de l’approche objet

•La programmation objet systématise la modularité et


permet la réutilisation de composants logiciels

•Maîtrise de la complexité d’un système, repose sur :

• L’abstraction
• La décomposition
• La connexion

8
Les raisons du succès de la POO

La programmation orientée objet (POO) offre de nombreux avantages


qui expliquent son utilisation répandue :

•Modularité : La POO permet de diviser efficacement un programme


en modules ou classes réutilisables, ce qui facilite la gestion et la
maintenance du code.

•Réutilisabilité : Avec la POO, il est possible de créer des objets qui


peuvent être utilisés plusieurs fois dans un programme ou même dans
différents programmes, ce qui permet d'économiser du temps et des
ressources lors du développement.
•L’héritage
•Le polymorphisme …
9
Les raisons du succès de la POO

•la POO reste populaire et largement utilisée dans de nombreux


langages de programmation, tels que Java, C#, Python, C++, etc.
•Bien qu'il existe d'autres paradigmes de programmation émergents,
tels que la programmation fonctionnelle, la POO continue d'être
pertinente et tendance dans le domaine du développement logiciel.
•La Poo est particulièrement adaptée au développement
d'applications mobiles car elle permet de structurer efficacement le
code en classes et en objets, facilitant ainsi la maintenance et
l'extension des applications.
•Les principaux langages de programmation utilisés pour le
développement d'applications mobiles, tels que Java (pour Android)
et Swift (pour iOS), sont basés sur la Poo.

10
Plan du cours

1. Introduction à la Programmation Orientée Objet


2. Les principes fondamentaux de la POO
2.1. Encapsulation
2.2. Héritage
2.3. Polymorphisme
2.4. Absraction

11
La notion d’objet

Un objet est une abstraction d’un élément du monde réel.

Il possède un ensemble d'attributs caractérisant son état,


et un ensemble d'opérations (les méthodes) qui permettent
son comportement.

Un objet est l'instance d'une classe.

12
La notion d’objet

• Un objet est une variable (presque) comme les autres. Il


faut notamment qu’il soit déclaré avec son type.
• Le type d’un objet est un type complexe (par opposition
aux types primitifs entier, caractère, ...) qu’on appelle
une classe.

13
La notion de classe

• Une classe est un type de données qui regroupe un


ensemble de propriétés (qui peuvent être des attributs et
des méthodes) communes à des objets.

14
La notion de classe

• Par exemple, si on veut modéliser des voitures, on


pourrait créer une classe "Voiture" qui aurait des
attributs comme la marque, le modèle, la couleur, etc.
et des méthodes comme démarrer, accélérer, freiner,
etc.
• À partir de cette classe, on peut ensuite créer
plusieurs objets différents de voitures, chacun avec
ses propres valeurs d'attributs spécifiques.

15
La notion de classe
En résumé, une classe en POO est une structure qui permet
de regrouper des variables et des fonctions liées à un même
concept, et de créer des objets à partir de cette structure.

Classe = attributs + opérations

Objet = état (attributs) + comportement (méthodes)

• On parle d’encapsulation pour désigner le regroupement


de données dans une classe.

16
L‘encapsulation

• L'encapsulation est l'un des principes fondamentaux de la


programmation orientée objet (POO).
• Il s'agit de regrouper des données et des méthodes
(fonctions) connexes en une seule entité appelée classe.
• L'objectif principal de l'encapsulation est de cacher les
détails internes et de protéger les données de la classe
contre les accès non autorisés ou les modifications
inattendues.
• Pour mettre en œuvre l'encapsulation, les classes ont
généralement des attributs privés, qui ne peuvent être
accédés directement depuis l'extérieur de la classe, mais
uniquement à l'aide de méthodes spéciales appelées
getters et setters.

17
L‘encapsulation

• Les getters permettent d'obtenir la valeur d'un attribut


privé, tandis que les setters permettent de modifier la
valeur de l'attribut privé.

• L'encapsulation permet donc de garantir l'intégrité des


données en contrôlant strictement l'accès à celles-ci.

• Elle facilite également la maintenance et l'évolution du


code, car les détails internes peuvent être modifiés sans
affecter le code externe qui utilise la classe.

18
L‘encapsulation

L’encapsulation de données dans un objet permet de cacher


ou non leur existence
aux autres objets du programme. Une donnée peut être
déclarée en accès :
● public : les autres objets peuvent accéder à la valeur de
cette donnée ainsi que la modifier ;
● privé : les autres objets n’ont pas le droit d’accéder
directement à la valeur de cette donnée
(ni de la modifier). En revanche, ils peuvent le faire
indirectement par des méthodes de
l’objet concerné (si celles-ci existent en accès public).

19
Etude de cas 1 : gestion d’une bibliothèque
Vous êtes chargé de développer un système de gestion pour une
bibliothèque. Le système doit permettre de gérer les livres, les membres de
la bibliothèque et les emprunts de livres. Voici les fonctionnalités attendues :
1. Gestion des livres :
- Chaque livre a un titre, un auteur, une année de publication et un statut
(disponible ou emprunté).
- Le système doit permettre d'ajouter de nouveaux livres, de les supprimer et
de les mettre à jour.
- Il doit également être possible de rechercher des livres par titre, auteur ou
année de publication.
2. Gestion des membres :
- Chaque membre de la bibliothèque a un nom, une adresse et un identifiant
unique.
- Le système doit permettre d'ajouter de nouveaux membres, de les
supprimer et de les mettre à jour.
- Il doit également être possible de rechercher des membres par nom ou
identifiant.

20
Etude de cas 1 : gestion d’une bibliothèque

3. Gestion des emprunts :


- Un membre peut emprunter un livre s'il est disponible.
- Le système doit enregistrer la date d'emprunt et la date de retour prévue.
- Il doit également permettre de prolonger la durée de l'emprunt si
nécessaire.
- Lorsqu'un livre est emprunté, son statut doit être mis à jour.

Votre tâche consiste à concevoir et implémenter les classes nécessaires


pour ce système de gestion de bibliothèque en utilisant la programmation
orientée objet.

21
Etude de cas 1 : gestion d’une bibliothèque

Liste des Attributs Méthodes


classes

22
Etude de cas 2: Gestion de réservation de billets d'avion
Vous devez concevoir un système de réservation de billets d'avion pour une compagnie
aérienne. Le système devrait permettre aux passagers de rechercher, réserver et
annuler des vols. Vous devez utiliser la POO pour modéliser ce système. Voici
quelques exigences :
1.Vol : Chaque vol a un numéro de vol, une destination, une heure de départ,
un nombre de places disponibles, et un prix. Les vols sont répertoriés dans une
base de données.
2. Passager : Chaque passager a un nom, un numéro de passeport et un âge.
3. Réservation : Les passagers peuvent réserver un vol en fournissant leur nom,
numéro de passeport, numéro de vol et nombre de places souhaitées. Une réservation
doit vérifier la disponibilité de places sur le vol.
a. Annulation : Les passagers peuvent annuler leur réservation en
fournissant leur numéro de réservation. Cela libère les places réservées
pour d'autres passagers.
b. Affichage : Le système doit permettre d'afficher la liste des vols
disponibles, les détails d'un vol spécifique (y compris les passagers
réservés), et la liste des réservations pour un vol donné.
Votre tâche consiste à identifier les classes nécessaires pour modéliser ce système de
réservation de billets d'avion en utilisant les principes de la POO.

23
Etude de cas 3 : Gestion des informations des élèves dans une
école
L'école XYZ souhaite moderniser et optimiser la gestion des informations des élèves.
Description du système : Le système de gestion des informations des élèves sera basé
sur plusieurs éléments, tels que :
Élève : Cette classe représentera un élève et contiendra les attributs tels que le nom, le
prénom, l'adresse, le numéro de téléphone, la date de naissance, etc. Elle fournira
également des méthodes pour mettre à jour ces informations, afficher les détails de
l'élève et récupérer les résultats scolaires.
RésultatScolaire : Cette classe stockera les résultats scolaires d'un élève, tels que les
notes obtenues dans chaque matière, la moyenne générale, les appréciations, etc. Elle
permettra également de calculer la moyenne des notes et d'ajouter des commentaires
supplémentaires.
Absence : Cette classe enregistrera les absences d'un élève, incluant la date, le motif
et les éventuelles sanctions. Elle permettra de gérer et d'afficher les informations sur
les absences.

Paiement : Cette classe permettra de gérer les informations sur les paiements
effectués par les élèves, tels que les frais de scolarité, les activités parascolaires, etc.
Elle enregistrera les montants payés, les dates et les méthodes de paiement.

24
Méthode constructeur
• Chaque classe doit définir une ou plusieurs méthodes particulières appelées des
constructeurs.
• Un constructeur est une méthode invoquée lors de la création d’un objet.
• Cette méthode, qui peut être vide, effectue les opérations nécessaires à
l’initialisation d’un objet.
• Chaque constructeur doit avoir le même nom que la classe où il est défini et n’a
aucune valeur de retour (c’est l’objet créé qui est renvoyé).
• Plusieurs constructeurs peuvent être définis s’ils acceptent des paramètres d’entrée
différents.

25
Méthode constructeur
Fichier "Carre.java"
class Carre{
int x;
int y;
Carre(){ x=1;y=1 }
Carre(int a, int b, double l){ x=a;y=b; }

UABB-Tlemcen – Département 26
d’Informatique - cours de POO
Instanciation d’une classe
• Un objet est une instance (anglicisme signifiant « cas » ou « exemple ») d’une classe
et est référencé par une variable ayant un état (ou valeur).
• Pour créer un objet, il est nécessaire de déclarer une variable dont le type est la
classe à instancier, puis de faire appel à un constructeur de cette classe.

//déclaration de l’objet mon_caree de type Caree


Carre mon_caree ;
/*instanciation de l’objet mon_caree en utilisant le
constructeur de la classe Caree sans paramètre*/
mon_caree = new Caree();

27
Instanciation d’une classe
• Un objet est une instance (anglicisme signifiant « cas » ou « exemple ») d’une classe
et est référencé par une variable ayant un état (ou valeur).
• Pour créer un objet, il est nécessaire de déclarer une variable dont le type est la
classe à instancier, puis de faire appel à un constructeur de cette classe.

//déclaration de l’objet mon_caree de type Caree


Carre mon_caree ;
/*instanciation de l’objet mon_caree en utilisant le
constructeur de la classe Caree possédant deux
paramètres*/
mon_caree = new Caree(4,4);

28
Accès aux variables et aux méthodes
• Pour accéder à une variable associée à un objet, il faut préciser l’objet qui la
contient. Le symbole ’.’ sert à séparer l’identificateur de l’objet de l’identificateur de la
variable. Une copie de l’abscisse d’un carrée s’écrit :
• La même syntaxe est utilisée pour appeler une méthode d’un objet.

Carre mon_caree ; Appel de la propriété x de


la classe Carree
mon_caree = new Caree(4,4);
int abs=mon_caree.x;
Appel de la méthode
Mon_caree.depalcer(); depalcer() de la classe
Carree

29
Accès aux variables et aux méthodes
• Pour qu’un tel appel soit possible, il faut que trois conditions soient remplies :
1.La variable ou la méthode appelée existe !
2.Une variable désignant l’objet visé existe et soit instanciée.
3.L’objet, au sein duquel est fait cet appel, ait le droit d’accéder à la méthode ou à
la variable

30
Ce qu’il faut savoir sur java

Fichier de code source: .java


Fichier compilé (code intermédiaire ou byte code) : .class
Outils nécessaires : JRE, JDK, etc.
Environnement utilisé en TP : eclipse
Qualités essentielles : Portabilité (JVM) et Facilité d’utilisation

31
Ce qu’il faut savoir sur java

Conventions de nommage
• Organisation des fichiers
-Le fichier .java doit avoir le même nom que la classe publique qu’il
décrit
- 1 fichier .java par classe, même pour celle contenant le main() ,
exception pour les inner classes

• Eléments de base
- paquetages minuscules
- classes Majuscule Pour La Premiere Lettre De Chaque Mot
- interface Majuscule Pour La Premiere Lettre De Chaque Mot
- méthodes minuscule Pour La Premiere Lettre
- constantes MAJUSCULES
- variables minuscule Pour La Premiere Lettre

32
Ce qu’il faut savoir sur java

Exemple :

fichier Club.java

Class Club {
public static void main(String[] args) {

System.out.println("Club POO !");

}
}

33
Classes et objets

Définition d’une classe en java

class NomClasse {

// définition des Attributs

// définition des Méthodes

34
Classes et objets

Les attributs de classe


Fichier "Cercle.java"

class Cercle {
Point2D centre;
double rayon;
}
Fichier « Point2D.java"

class Point2D {
double x,y;
}

35
Classes et objets

Les méthodes
Fichier "Cercle.java"

class Cercle {
Point2D centre;
double rayon;

void deplacer (Vecteur2D vecteur) {


centre.x += vecteur.x;
centre.y += vecteur.y;
}
}

36
Classes et objets

Les méthodes
Fichier "Cercle.java"
class Cercle {
Point2D centre;
double rayon;

void deplacer (Vecteur2D vecteur) {


centre.x += vecteur.x;
centre.y += vecteur.y;
}
}
Fichier "Vecteur2D.java"

class Vecteur2D {
double x,y;
}

37
Classes et objets

La surcharge de méthodes
Fichier "Cercle.java"
class Cercle {
Point2D centre;
double rayon;

void deplacer (Vecteur2D vecteur) {


centre.x += vecteur.x;
centre.y += vecteur.y;
}
void deplacer (double x, double y) {
centre.x += x;
centre.y += y;
}
}

38
Classes et objets

Les méthodes
Fichier « Point2D.java"
class Point2D {

double x,y;

void afficher(){
System.out.print("[" + x + ", " + y + "]");
}

39
Classes et objets

Appel de méthodes
Fichier "Cercle.java"
class Cercle {
Point2D centre; double rayon;
void deplacer (Vecteur2D vecteur) { centre.x += vecteur.x; centre.y += vecteur.y; }
void deplacer (double x, double y) { centre.x += x; centre.y += y; }

void deplacerH(double x) { centre.x += x; }


void deplacerV(double y) { centre.y += y; }
void afficher(){
System.out.print("Objet Cercle :\n\tcentre : ");
centre.afficher();
System.out.println("\n\trayon : " + rayon);
}
}

40
Instanciation d’objets

On instancie un objet en appliquant l'opérateur new sur


un constructeur de classe.

Classe – Objet - Constructeur

Cercle monCercle = new Cercle();

41
Classes et objets

Classe principale
Fichier « Demarrer.java"
class Demarrer {

public static void main(String args[]){

Cercle c1=new Cercle();


Point2D c=new Point2D(5,4);
Cercle c2=new Cercle(c,3);

c1.afficher();
c2.afficher();
}
}

42
Quelques règles sur les constructeurs

•Si aucun constructeur n'est spécifié, dans la définition de la


classe, un constructeur par défaut vous est obligatoirement
fourni, celui-ci n'admettant aucun paramètre.

•Si vous en définissez au moins un, le constructeur par défaut


(qui n'admet pas de paramètres) n'est plus fourni. Si vous en
avez l'utilité il vous faudra alors le définir explicitement.

43
Destructeur

class Point2D {
//…
public void finalize() {
System.out.println(" Objet Point2D détruit");
}
}
Le ramasse-miettes
Le ramasse-miettes (ou GC [Garbage Collector]) se charge de
repérer les objets inutiles et de libérer leurs espaces mémoires
Il fonctionne en permanence dans un thread de faible priorité.

44
Méthodes et attributs statiques

Toute propriété (attribut ou méthode) statique existe indépendamment


de toute instanciation d'objet.

class Demarrer {

static int a = 3;

static public void main(String args[]){


a += 5;
System.out.println("a^2 = " + carre(a));
}

static int carre(int v){ return v*v; }


}

45
Méthodes et attributs statiques

class Demarrer {
static int a = 6;

static public void main(String args[]){


Demarrer d1=new Demarrer(), d2=new Demarrer();
d1.a++; d2.a++;
System.out.println("a = " + Demarrer.a);
}
}

>java Demarrer
8
>

46
Méthodes et attributs statiques

Les propriétés statiques d'une classe sont partagées par toutes les
instances de cette classe.

•Si une méthode est statique, et si elle doit utiliser des attributs ou des
méthodes de sa classe, il faut alors que ces propriétés soient elles aussi
déclarées static.

47

Vous aimerez peut-être aussi