La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

27/12/2013 1 POO par Jenny Benois-Pineau. 27/12/2013 2 Introduction Pourquoi POO ? Crise du logiciel Robustesse, interchangeabilité des composantes, réutilisation.

Présentations similaires


Présentation au sujet: "27/12/2013 1 POO par Jenny Benois-Pineau. 27/12/2013 2 Introduction Pourquoi POO ? Crise du logiciel Robustesse, interchangeabilité des composantes, réutilisation."— Transcription de la présentation:

1 27/12/ POO par Jenny Benois-Pineau

2 27/12/ Introduction Pourquoi POO ? Crise du logiciel Robustesse, interchangeabilité des composantes, réutilisation du code, extensibilité, protection Langages : Java, Smalltalk, Eiffel, C++ Objectif de ce cours : appréhender les concepts objet à travers les langages C++ (essentiellement) et Java (exemples)

3 3 POO vs PP/PI(I) Objet = PP : type abstrait= PO : Objet = Exemple : modéliser une personne

4 4 POO vs PP/PI(II) Spécification Type abstrait Données - nom personne - la société Opérations -Se présenter= Objet … Le nom de la personne ne peut pas être modifié; Restreindre laccès au champ « société »

5 5 POO vs PP/PI(III) La mise en œuvre C++ procédural Personne.hpp struct Personne { char Nom[25]; char Societe[32]; }; void SePresente(Personne P); Personne.cpp #include #include "personne.hpp" void SePresente(Personne P) { cout<<"Je m'apelle "<

6 6 POO vs PP/PI(IV) Les inconvénients Séparation des données des traitements Contrôles difficiles : … Personne Ind; SePresente(Ind); - le résultat??? Accès libre à toutes les composantes->possibilité de modifier malencontreusement

7 7 POO : encapsulation Objet P rassemble dans une même entité – encapsule- les données et les comportements Un objet contrôle ses comportements : P.SePresente() vs SePresente(P) On envoie un « message » à objet pour déclencher un traitement P.SePresente() Lobjet vérifie que le message correspond à un des comportements quil encapsule (vérification au moment de la compilation) Comment déclarer un objet?

8 8 Classe : un moule pour les objets Personne + Nom + Societe + SePresente Classe Objets P R Q Instancier

9 9 Classe C++ Personne.hpp Class Personne { public: char Nom[25]; char Societe[25]; void SePresente(); }; Personne.cpp #include ``Personne.hpp`` void Personne::SePresente(){ cout<<« Je m'appelle" <

10 27/12/ Discipline de programmation Une classe = (1) fichier.hpp (2) fichier.cpp Le pourquoi : (1)Séparation de la déclaration et dimplémentation (2)Compilation séparée

11 27/12/ Directives de pré-compilateur Lorsque on parle de compilation du programme on sous-entend traitement du code source par -pré-compilateur -compilateur proprement dit du fichier – résultant de la précompilation -fonctions du pré-compilateur : inclusion des fichiers, définitions des constantes et des macro-commandes, inclusion conditionnelle, pilotage des messages derreur.

12 27/12/ DIRECTIVE « include » Fichier MaClasse.cpp #include #include MaClasse.hpp #include Util.h using namespace std; // utilisation de lespace de nommage int main(){ MaClasse C; … return 0; }

13 27/12/ Directive « define » Directive « define » est utilisée pour la définition des constantes, des macro-fonctions, Syntaxe : #define identificateur chaîne de substitution Ex : #define TailleMax 1000 classe Tableau{ int Tab[TailleMax]; int longueur_eff; };

14 27/12/ Definition des macro-fonctions #define identificateur(paramètre,…) Exemple : #define ABS(x) x<0? x:-x …. x=-2; ABS(x); cette affectation sera substituée par x<0?x:-x Veiller à la correspondance du nombre et du type darguments: ABS(ABC) ABC <0? ABC :- ABC

15 27/12/ Inclusion conditionnelle(1) Compilation séparée : permet de corriger les erreurs de syntaxe, des erreurs de correspondance des déclarations aux implémentations, … pour chaque classe séparément. g++ -c MaClasse.cpp –compilation dun fichier-source Résultat : MaClasse.o –fichier-objet

16 27/12/ Inclusion conditionnelle(2) Dans un fichier.hpp #ifndef MaClasse_H #define MaClasse_H class MaClasse{ ….. }; #endif

17 27/12/ Branchement conditionnel #ifdef identificateur Partie –alors #else Partie-sinon #endif Exemple : #ifdef VERBOSE cout<< Valeur a =<

18 18 Classe Java Personne.java import java.awt.*; Class Personne { public String Nom; public String Societe public void Se Presente(){ System.out.println ("Je m'appelle" +Nom); System.out.println ("Je travaille à" +Societe); } public static void main (String args[ ]){ Personne P; P=new Personne(); P.nom=Personne(); P. societe=``ABC``; P.SePresente(); } //toute méthode fait partie dune classe Personne.java import java.awt.*; Class Personne { public String Nom; public String Societe public void SePresente(){ System.out.println ("Je m'appelle" +Nom); System.out.println ("Je travaille à" +Societe); } Class Test{ public static void main(String args[ ]){ ….. }

19 19 Fonctions –membres C++(1) Personne.hpp Class Personne { public: char Nom[25]; char Societe[25]; void SePresente(); }; Personne.CPP void Personne::SePresente(){ cout<<« Je m'appelle" <

20 20 Fonctions –membres C++(2) Personne.hpp Class Personne { public: char Nom[25]; char Societe[25]; void SePresente(); }; Personne.CPP void Personne::SePresente(){ cout<<« Je m'apelle" <

21 27/12/ Fonctions constantes(1) On déclare les objets constants afin de ne pas pouvoir les changer (héritage du langage C) class point { public : double x; double y; void affiche(); }; const point c; c.affiche(); //erreur de compilation

22 27/12/ Fonctions constantes(2) ….. public : Double x; Double y; void affiche(); //les deux fonctions sont identiques void affiche () const; // mais! }; …. int main(){ const point c; c.affiche(); //compilation normale, cest la méthode « const » qui est invoquée … } Java : la notion de fonction membre constante nexiste pas

23 27/12/ Protection des membres Personne - Nom - Societe + SePresente + Public - Private O Protected

24 24 Protection des données Personne.hpp Class Personne { private : char Nom[25]; char Societe[25]; public : void SePresente(); }; Personne.CPP void Personne::SePresente(){ cout<<« Je m'appelle" <

25 27/12/ Accessibilité Nom_Cls private public Fonctions usuelles Classe

26 27/12/ Masquage de linformation File.hpp Class File{ private : xxxxxxxxxxx public : void enfiler(int valeur); void defiler(); int valeur_file const(); …….. }; Masquage de limplémentation La modification de la partie privée naffecte pas les programmes applicatifs – efficacité du processus de développement.


Télécharger ppt "27/12/2013 1 POO par Jenny Benois-Pineau. 27/12/2013 2 Introduction Pourquoi POO ? Crise du logiciel Robustesse, interchangeabilité des composantes, réutilisation."

Présentations similaires


Annonces Google