POO. par Jenny Benois-Pineau

Documents pareils
Introduction à l héritage en C++

Cours 1: Java et les objets

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Programmer en JAVA. par Tama

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Objets et Programmation. origine des langages orientés-objet

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

as Architecture des Systèmes d Information

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Programme Compte bancaire (code)

Cours d initiation à la programmation en C++ Johann Cuenin

Java Licence Professionnelle CISII,

Une introduction à Java

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Programmation Objet Java Correction

TP1 : Initiation à Java et Eclipse

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Initiation à JAVA et à la programmation objet.

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Systeme d'exploitation

ETUDE DE CAS en UML : GESTION DES COMMANDES DE PIECES FABRIQUEES PAR LA SOCIETE C

Introduction au langage C

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

Introduction à C++ et à wxwidgets

Premiers Pas en Programmation Objet : les Classes et les Objets

ACTIVITÉ DE PROGRAMMATION

Support de cours et TD Programmation Orientée Objet

Chapitre 10. Les interfaces Comparable et Comparator 1

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Plan du cours. Historique du langage Nouveautés de Java 7

TD3: tableaux avancées, première classe et chaînes

Département Automatisation et Informatisation Année Programmation en C++ Institut des Sciences et Techniques de l Ingénieur d Angers

Généralités sur le Langage Java et éléments syntaxiques.

Java c est quoi? Java pourquoi?

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Cours d Algorithmique et de Langage C v 3.0

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Programmation en C/C++

Plan Pédagogique du cours

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

INITIATION AU LANGAGE JAVA

Package Java.util Classe générique

Java DataBaseConnectivity

Programmation C++ (débutant)/instructions for, while et do...while

Intergiciels pour la répartition CORBA : Common Object Request Broker. Patrice Torguet torguet@irit.fr Université Paul Sabatier

Auto-évaluation Programmation en Java

et Programmation Objet

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Java Licence Professionnelle CISII,

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Génie Logiciel avec Ada. 4 février 2013

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Avertissement : Ce cours suppose la connaissance et la maîtrise du langage C CONTENU DU COURS BIBLIOGRAPHIE

Utiliser Java sans BlueJ

Programmation stochastique

Notions fondamentales du langage C# Version 1.0

Programmation avec des objets : Cours 7. Menu du jour

Corrigé des exercices sur les références

Héritage presque multiple en Java (1/2)

Programmation par les Objets en Java

Classe Interne, Anonyme & Enumération

Langage Java. Classe de première SI

Le langage C++ (partie I)


COMPARAISONDESLANGAGESC, C++, JAVA ET

1.6- Génération de nombres aléatoires

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

TP, première séquence d exercices.

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Projet de programmation (IK3) : TP n 1 Correction

Exercices sur les interfaces

Environnements de développement (intégrés)

Utilisation d objets : String et ArrayList

Tp 1 correction. Structures de données (IF2)

Programmation Orientée Objet application au langage Java Version Novembre 2007

Génie Logiciel I. Cours VI - Typage statique / dynamique, fonctions virtuelles et classes abstraites, flots d entrées / sorties, et string

Les structures. Chapitre 3

30.avr.10 Présentation miniprojet. 9.mars.10 Cours 3 4.mai.10 Cours C mars.10 Cours 4 11.mai.10 Cours C++ 2

Chapitre 2. Classes et objets

Derrière toi Une machine virtuelle!

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Java Licence professionnelle CISII,

TP1 : Initiation à Java et Eclipse

OS Réseaux et Programmation Système - C5

1 Définition d une classe en Java

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Programmation en Java IUT GEII (MC-II1) 1

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Transcription:

POO par Jenny Benois-Pineau 1 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) 2 1

POO vs PP/PI(I) Objet =<ensemble des données avec les opérations associées> PP : type abstrait=<données et traitements> PO : Objet =<données et traitements encapsulés> Exemple : modéliser une personne 3 POO vs PP/PI(II) Spécification Type abstrait Données - nom personne - la société Opérations -Se présenter= <afficher les informations> Objet Le nom de la personne ne peut pas être modifié; Restreindre l accès au champ «société» 4 2

POO vs PP/PI(III) La mise en œuvre C++ procédural struct Personne { char Societe[32]; ; void SePresente(Personne P); Personne.cpp #include <iostream.h> #include <string.h> #include "personne.hpp" void SePresente(Personne P) { cout<<"je m'apelle "<<P.Nom<<endl; cout<<"je travaille à "<<P.Societe<<endl; int main() { SARL"); Personne Ind; strcpy(ind.nom, "Toto"); strcpy(ind.societe, "ABC SePresente(Ind); return 0; 5 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 6 3

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() L objet vérifie que le message correspond à un des comportements qu il encapsule (vérification au moment de la compilation) Comment déclarer un objet? 7 Classe : un moule pour les objets Classe Personne + Nom + Societe + SePresente Objets P R Instancier Q 8 4

Classe C++ public: char Societe[25]; void SePresente(); ; Personne.cpp #include ```` void Personne::SePresente(){ cout<<«je m'appelle" <<Nom<<endl; cout<<"je travaille à"<<societe<<endl; utilisepersonne.cpp #include <iostream> #include <string.h> #include "personne.hpp«using namespace std; int main() { Personne Ind; strcpy(ind.nom, "Toto"); strcpy(ind.societe, "ABC SARL"); Ind.SePresente(); return 0; Fonction-membre Fonction externe utilise les objets 9 Discipline de programmation Une classe = (1) fichier.hpp (2) fichier.cpp Le pourquoi : (1)Séparation de la déclaration et d implémentation (2)Compilation séparée 10 5

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 d erreur. 11 DIRECTIVE «include» Fichier MaClasse.cpp #include <iostream> #include MaClasse.hpp #include Util.h using namespace std; // utilisation de l espace de nommage int main(){ MaClasse C; return 0; 12 6

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; ; 13 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 d arguments: ABS( ABC ) ABC <0? ABC :- ABC 14 7

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 d un fichier-source Résultat : MaClasse.o fichier-objet 15 Inclusion conditionnelle(2) Dans un fichier.hpp #ifndef MaClasse_H #define MaClasse_H class MaClasse{ ;.. #endif 16 8

Branchement conditionnel #ifdef identificateur Partie alors #else Partie-sinon #endif Exemple : #ifdef VERBOSE cout<< Valeur a =<<a; 17 Classe Java Personne.java import java.awt.*; 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 d une classe Personne.java import java.awt.*; 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[ ]){.. 18 9

Fonctions membres C++(1) public: char Societe[25]; void SePresente(); ; Personne.CPP void Personne::SePresente(){ cout<<«je m'appelle" <<Nom<<endl; cout<<"je travaille à"<<societe<<endl; public: char Societe[25]; inline void SePresente(){ cout<<nom; cout<<societe; ; Fonction inline : le code est recopié à la place de l appel pour gagner du temps d exécution 19 Fonctions membres C++(2) public: char Societe[25]; void SePresente(); ; Personne.CPP void Personne::SePresente(){ cout<<«je m'apelle" <<Nom<<endl; cout<<"je travaille à"<<societe<<endl; public: char Societe[25]; void SePresente() const{ cout<<nom; cout<<societe; char* surname () const {return Nom;; ; Fonctions constantes laissent l objet inchangé 20 10

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 21 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, c est la méthode «const» qui est invoquée Java : la notion de fonction membre constante n existe pas 22 11

Protection des membres Personne - Nom - Societe + Public - Private O Protected + SePresente 23 Protection des données private : char Societe[25]; public : void SePresente(); ; Personne.CPP void Personne::SePresente(){ cout<<«je m'appelle" <<Nom<<endl; cout<<"je travaille à"<<societe<<endl; utilisepersonne.cpp #include <iostream.h> #include <string.h> #include "personne.hpp" int main() { Personne Ind; strcpy(ind.nom, "Toto"); Erreur de compilation strcpy(ind.societe, "ABC SARL"); Erreur de compilation Ind.SePresente(); return 0; 24 12

Accessibilité Classe Nom_Cls Fonctions usuelles private public 25 Masquage de l information File.hpp Class File{ private : xxxxxxxxxxx public : void enfiler(int valeur); void defiler(); int valeur_file const();.. ; Masquage de l implémentation La modification de la partie privée n affecte pas les programmes applicatifs efficacité du processus de développement. 26 13