Upload
others
View
7
Download
0
Embed Size (px)
Citation preview
1
Université de la ManoubaUniversité de la ManoubaEcole Supérieure de Commerce Electronique Ecole Supérieure de Commerce Electronique
2ème année E-Serv et E-com 2009/2010
Programmation Orientée Objet
Réalisé par : Nabil KHEMIRI
2
Le Module P.O.OLe Module P.O.O
Algorithmique
Langage C
Pré requis : Pré requis :
Déroulement du moduleDéroulement du module
Cours : 1.5 h
TD/15 : 1.5 h
TP/15 : 1.5 h
3
Plan du cours Plan du cours
IntroductionClasses et objetsHéritageObject, Interfaces, classes imbriquéesExceptionsEntrée-sortie
Introduction à Swing
4
Introduction : 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
IntroductionIntroduction Complexité des développements logiciels
Pas de distribution Batch Logiciel client
Multi-utilisateurs, Temps réel, Bases de données, Progiciel
Système distribués, Système « Intelligent », Informatique grand public
Système experts, Machines parallèles, Simulateurs
1950 1960 1970 1980 1990 2000
6
Introduction : Cycle de vie d’un logicielIntroduction : Cycle de vie d’un logiciel
Analyse
Pré-analyse
Analyse Développement
Conception
Programmation
TesteMaintenance
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 d’un
logiciel
• La correction : « le système est supposé faire ce pourquoi il a été conçu », • La robustesse : capacité d’un logiciel à répondre à des situations anormales, • 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
IntroductionIntroduction 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 : 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
Objet : Un objet représente une entité du monde réel, ou de monde virtuel dans le cas d’objets immatériels, qui se caractérisent pas une identité, des états significatifs et par un comportement.
Nous sommes entourés d'objets que nous manipulons. Il nous importe peu de savoir comment ils sont fabriqués.
Objet
Attribut1, Atribut2,Attribut3, …
Métode1Méthode2Mé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; int promo; String traiterExam(String enonce) {…}}
public class prof { String nom; String faireSujetExam() {…} int corrigerExam(String copie) {…}
}
Attributs
Méthodes
12
PProgrammation rogrammation OOrientée rientée OObjet : P.O.Objet : P.O.O
Objet Classe Encapsulation Héritage Surcharge Polymorphisme
13
P.O.O : ObjetP.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 : ClasseP.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 : ClasseP.O.O : Classe
Class Personne {
String Nom;
String Prenom;
int age;
Void afficheNom() {…};
}
Objets
instanciation
Nom : aliPrenom : yousfiAge : 24
Nom : MohamedPrenom : kefiAge : 26
Nom : InesPrenom : jbaliAge : 22
Une classe peut être réutilisée pour instancier plusieurs objets
16
P.O.O : EncapsulationP.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 : EncapsulationP.O.O : Encapsulation
18
P.O.O : HéritageP.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.
Personne
Etudiant Enseignant
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 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 compilé de « Personne ».
19
P.O.O : HéritageP.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 Personne { String nom;
public void envoyerMail( String adr, String message) { ….}
}
public class Etudiant extends Personne { String noEtudiant;
Etudiant(String nom, String noEtudiant) { nom = nom; noEtudiant = noEtudiant; envoyerMail("[email protected]", "creation de dossier : " + nom); }}
20
P.O.O : PolymorphismeP.O.O : Polymorphisme
Le polymorphisme est la capacité d’un objet à posséder plusieurs formes.
Polymorphisme = poly + morphisme
plusieurs forme
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
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
1. Répertorier les objets2. En déduire les classes auxquelles ces objets appartiennent3. Architecturer l'ensemble des classes regroupant les données ou procédures communes à certaines classes d’où elles héritent.