Vous êtes sur la page 1sur 21

1

Université de la Manouba
Ecole Supérieure de Commerce Electronique

Programmation Orientée Objet

2ème année E-Serv et E-com


2009/2010

Réalisé par : Nabil KHEMIRI

nabil.khemiri@yahoo.fr
2

Le Module P.O.O

 Pré requis :
Algorithmique

Langage C

 Déroulement du module

Cours : 1.5 h

TD/15 : 1.5 h

TP/15 : 1.5 h
3

Plan du cours

Introduction
Classes et objets
Héritage
Object, Interfaces, classes imbriquées
Exceptions
Entrée-sortie
Introduction à Swing
4

Introduction : évolution du logiciel

 Année 1950  1980


• Problème : comment développer du « hardware» permettant de
diminuer le coût des traitements et du stockage de données.

 Depuis 1980
• La puissance de calcule a beaucoup augmenté et les coûts ont
diminués.
• Problème : comment réduire le coût de production des logiciels et
améliorer leur qualité.
• Problème : Importance croissante du logiciel et de son évolution.
5

Introduction
 Complexité des développements logiciels
 Pas de distribution  Multi-utilisateurs,  Système distribués,
 Batch  Temps réel,  Système « Intelligent »,
 Logiciel client  Bases de données,  Informatique grand public
 Progiciel
 Système experts,
 Machines parallèles,
 Simulateurs

1950 1960 1970 1980 1990 2000


6

Introduction : Cycle de vie d’un logiciel

Analyse

Pré-analyse

Analyse
Développement

Conception

Programmation
Maintenance
Teste

Maintenance
7

Il est très difficile de faire évoluer et développer un logiciel. Par conséquent,


il doit répondre à un certains de facteurs de qualité pour minimiser les coûts
d’évolution et de développement.

J’ai besoin • La correction : « le système est supposé faire ce pourquoi il a été conçu »,
d’un • La robustesse : capacité d’un logiciel à répondre à des situations anormales,
logiciel • L’extensibilité : facilité du logiciel à s’adapter aux changements de
spécification,
• La ré-utilisabilité : capacité des éléments du logiciel à être réutilisés,
• La compatibilité : facilité avec laquelle les éléments du logiciel peuvent
être combinés,
• L’efficacité : capacité du logiciel à utiliser le minimum de ressources,
• La portabilité : facilité avec laquelle un logiciel peut s’exécuter sur
différente palte-formes.
8

Introduction
 Branchement par Goto : Assembleur
Si nous sommes en présence d’une grosse application, le programme à réaliser sera
alors gros et complexe : Lisibilité, maintenance et réutilisation du code ne sont pas
favorisées.
 Programmation structurée : C, PASCAL, etc.
Concevoir un ensemble de fonctions (et procédures)
permettant de résoudre un problème.
Trouver la manière appropriée de stocker les données.

Programmes = Algorithmes + Structures de données


 Réutilisation de fonctions,
 Maintenance : lorsque l’on désire changer les structures de données.
 Effets de bord : plusieurs procédures agissent sur la même donnée.
9

Introduction : L’approche objet

 Idée de base de l’Approche Orientée Objet (A.O.O.)


repose sur l’observation de la façon dont nous procédons
dans notre vie de tous les jours.

Modéliser le réel : objet


 Nous sommes entourés d'objets que nous manipulons. Il nous importe
peu de savoir comment ils sont fabriqués.
Objet
Objet : Un objet représente une entité du monde Attribut1, Atribut2,
réel, ou de monde virtuel dans le cas d’objets Attribut3, …
immatériels, qui se caractérisent pas une identité, Métode1
Méthode2
des états significatifs et par un comportement. Méthode3
10

L’approche objet
 Les objectifs :
Répondre aux critères de modularité c’est-à-dire
prendre en compte :
• Les facteurs logiciels qui requièrent des architectures
logiciel décentralisées : la réutilisabilité , l’extensibilité.

Répondre aux critères de fiabilité c’est-à-dire prendre en compte :


• les facteurs logiciels qui sont les plus importants aujourd’hui et qui
manquent le plus : la correction, la robustesse.

 Un programme est vu comme un ensemble d’entités, une société


d’entités. Au cours de son exécution, ces entités collaborent en
s’envoient des messages dans un but commun.
11

L’approche objet

public class etudiant {


String nom;
Attributs
int promo;
String traiterExam(String enonce)
{…}
}

public class prof {


String nom;
String faireSujetExam()
{…}
Méthodes
int corrigerExam(String copie)
{…}
}
12

Programmation Orientée Objet : P.O.O

 Objet
 Classe
 Encapsulation
 Héritage
 Surcharge
 Polymorphisme
13

P.O.O : Objet

 Objet = Attributs + méthodes


Ex. un objet "Télévision"
• ses états =
{ allumé/éteint, chaîne courante, volume du son },
• ses comportements =
{ allumer, changer de chaîne, changer de volume du son, éteindre }
14

P.O.O : Classe

 Classe : processus d’abstraction.


• On peut faire l'analogie avec la philosophie platonicienne : tout le monde
à une idée de ce qu'est un cheval, c'est un animal, qui a quatre pattes, une
crinière, etc. L'idée "cheval" est une classe.
• Une classe est un élément du logiciel qui décrit un type abstrait de
données.
• Une classe est un modèle de définition pour des objets.

• ayant même structure (même ensemble d'attributs),


• ayant même comportement (mêmes opérations,
méthodes),
• ayant une sémantique commune.

Notation UML
15

P.O.O : Classe

 Une classe peut être réutilisée pour instancier plusieurs objets

Objets
Class Personne {
Nom : ali
String Nom; Prenom : yousfi
Age : 24
String Prenom;
instanciation
int age;
Nom : Mohamed
Void afficheNom() Prenom : kefi
{…}; Age : 26

}
Nom : Ines
Prenom : jbali
Age : 22
16

P.O.O : Encapsulation
 Principe :
Consiste à regrouper dans le même objet informatique des
structures de données particulières et les méthodes qui leur sont
spécifiques. Isolement et dissimulation des détails
d’implémentation.

 Les méthodes n’ont jamais accès directement aux champs


d’instance dans une classe autre que la leur. Les programmes
doivent interagir avec les données d’un objet uniquement par
l’intermédiaire des méthodes de l’objet.

 Objectifs : Réutilisation et Sécurité : une classe peut complètement


modifier la manière dont elle modélise et stocke ses données, mais
tant qu’elle continue à offrir les mêmes méthodes pour les manipuler,
les autres objets n’en sauront rien et ne s’en préoccuperont pas
17

P.O.O : Encapsulation
18

P.O.O : Héritage
 Le développement de logiciel nécessite la mise en oeuvre d’un
grand nombre de classes : beaucoup sont des variantes d’autres.
• idée: il est nécessaire d’utiliser un mécanisme de classification pour maîtriser
la complexité potentielle qui peut en résulter.
• ce mécanisme s’appelle l’héritage.

 Utilisation de l’héritage :
• dans le sens “spécialisation” pour réutiliser par
modification incrémentielle les descriptions existantes.
• dans le sens “généralisation” pour abstraire en Personne
factorisant les propriétés communes aux sous-classes,
• L’héritage permet d’écrire une classe « Etudiant » qui
se comporte dans les grandes lignes comme la classe A,
mais avec quelques différences sans toucher au code
source de « Personne ». On a besoin seulement du code Enseignant
Etudiant
compilé de « Personne ».
19

P.O.O : Héritage

 La sous classe (ex. Etudiant) possède des attributs et des méthodes


définis dans la superclasse (ex. Personne).
 Ex.
public class Etudiant extends Personne {
public class Personne { String noEtudiant;
String nom; Etudiant(String nom, String noEtudiant) {
nom = nom;
public void envoyerMail( noEtudiant = noEtudiant;
String adr, String message) envoyerMail("admin@univ.fr",
{ ….} "creation de dossier : " + nom);
}
} }
20

P.O.O : Polymorphisme

Polymorphisme = poly + morphisme

plusieurs forme
 Le polymorphisme est la capacité d’un objet à posséder plusieurs
formes.
Marcher sur la queue d'un chat => il miaule,
Marcher sur la queue d'un chien => il aboie.

 Même nom de fonction, plusieurs implantations.


 Une classe peut "redéfinir" (c’est-à-dire modifier) certaines des
méthodes héritées de sa classe de base (classe mère).
21

Les Langages Orientés Objets

 Un Processus d'Analyse Orientée Objet


1. Répertorier les objets
2. En déduire les classes auxquelles ces objets appartiennent
3. Architecturer l'ensemble des classes regroupant les données ou
procédures communes à certaines classes d’où elles héritent.

 Un langage est orienté objet s’il possède les mécanismes


supportant le style de programmation orienté objet.
 Points de repères historiques :
• 1980 : SmallTalk 80 de Goldberg du Xerox Palo Alto Research Center.
• 1983 : C++ de Stroustrup de ATT & Bell – c’est aussi le C ANSI qui est crée à
cette époque.
• 1985 : Commercialisation C++ Version 1 – liaison dynamique, surcharge des
opérateurs, références.
• 1989 : C++ Version 2 – héritage multiple
• 1995 : JAVA