Objectifs du cours d aujourd hui



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

et Programmation Objet

Introduction à l héritage en C++

Une introduction à Java

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

TP1 : Initiation à Java et Eclipse

Premiers Pas en Programmation Objet : les Classes et les Objets

Introduction au langage C

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

Cours 1: Java et les objets

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

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

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

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

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

Chapitre 2. Classes et objets

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

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

Initiation à JAVA et à la programmation objet.

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

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

Plan Pédagogique du cours

as Architecture des Systèmes d Information

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

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

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

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

Classes et Objets en Ocaml.

Programmer en JAVA. par Tama

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

Java Licence Professionnelle CISII,

Cours d Algorithmique et de Langage C v 3.0

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

Création d objet imbriqué sous PowerShell.

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

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

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

Java c est quoi? Java pourquoi?

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

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

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Programme Compte bancaire (code)

Bases Java - Eclipse / Netbeans

Cours de Programmation 2

TP1. Outils Java Eléments de correction

ACTIVITÉ DE PROGRAMMATION

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

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Diagramme de classes

Auto-évaluation Programmation en Java

IRL : Simulation distribuée pour les systèmes embarqués

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

Programmation Objet Java Correction

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

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

OCL - Object Constraint Language

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

Programmation stochastique

Remote Method Invocation (RMI)

Introduction au pricing d option en finance

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

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 )

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

INITIATION AU LANGAGE JAVA

Chapitre VI- La validation de la composition.

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

INFO-F-105 Language de programmation I Séance VI

Programmation en Java IUT GEII (MC-II1) 1

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

TP1 : Initiation à Java et Eclipse

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)

Programmation MacOSX / ios

Module.NET 3 Les Assemblys.NET

Java DataBaseConnectivity

Programmation Orientée Objet

Le langage C. Séance n 4

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

4. Groupement d objets

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Introduction à C++ et à wxwidgets

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Utiliser Java sans BlueJ

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Projet de programmation (IK3) : TP n 1 Correction

Claude Delannoy. 3 e édition C++

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

Devenez un véritable développeur web en 3 mois!

Systeme d'exploitation

3. UML - Unified Modeling Language Diagrammes statiques

INTRODUCTION A JAVA. Fichier en langage machine Exécutable


Supervision des réseaux

Utilisation d objets : String et ArrayList

Programmation par les Objets en Java

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Transcription:

Objectifs du cours d aujourd hui Informatique II : Cours d introduction à l informatique et à la programmation objet Introduction à la Programmation Orientée Objet (POO) Introduire les notions d encapsulation et d abstraction Objets, instances et classes Classes en C++ p Variables d instance p Méthodes d instance p Encapsulation et Interfaces : public : et private : L objet this et le masquage Jamila Sam Haroud Laboratoire d Intelligence Artificielle Faculté I&C Informatique II Cours 15 : Introduction POO 1 Informatique II Cours 15 : Introduction POO 2 Objets : 1ère introduction Notion d encapsulation Vous avez appris à écrire des programmes de plus en plus complexes. Il faut donc maintenant des outils pour organiser ces programmes de façon plus efficace. C est l un des objectifs principaux de la notion d objet. Les objets permettent de mettre en œuvre dans les programmes les notions : d encapsulation d abstraction d héritage et de polymorphisme Informatique II Cours 15 : Introduction POO 3 Dans les programmes que vous avez écrits jusqu à maintenant, les notions de types de données et de traitement de ces données étaient séparées : type1 type2 typen fonction1 fonction2 fonctionm type : types de données (int,char, ) fonction : traitements auxiliaires utilisant ces types par exemple : type1 fonction2(type3 x1,type2 x2) ; concrètement : double surface(double hauteur, double largeur) ; Informatique II Cours 15 : Introduction POO 4

Notions d encapsulation (2) Le principe d encapsulation consiste à regrouper dans le même objet informatique des structures de données particulières et les traitements qui leur sont spécifiques : Les structures de données définies dans un objet seront appelées les attributs de cet objet ; Les traitements/fonctions défini(e)s dans un objet seront appelées les méthodes de cet objet. Relation fondamentale : OBJET = attributs + méthodes Notion d encapsulation (3) Les objets sont définis par leurs attributs et leurs méthodes : attribut1.1 attribut1.2 attributk.1 Objet1 ObjetK Methode1.1 MethodeK.1 MethodeK.2 Informatique II Cours 15 : Introduction POO 5 Informatique II Cours 15 : Introduction POO 6 Notion d encapsulation (4) Pourquoi encapsuler? En plus du regroupement des données et des traitements relatifs à une entité, l encapsulation permet de définir deux niveaux de perception : Le niveau externe : partie visible de l objet prototype des méthodes et attributs visibles depuis l extérieur c est l interface de l objet avec l extérieur Le niveau interne : implémentation de l objet méthodes et attributs visibles uniquement depuis l intérieur de l objet définition de l ensemble des méthodes et attributs de l objet c est le corps de l objet L intérêt de séparer les niveaux interne et externe est de donner une cadre plus rigoureux à l utilisation des objets utilisés dans un programme Les objets ne peuvent être utilisés qu au travers de leur interfaces (niveau externe) et donc les éventuelles modifications de la structure interne restent invisibles à l extérieur (même idée que prototype / définition d une fonction) Règle : (masquage) les attributs d un objet ne doivent pas être accessibles depuis l extérieur, mais uniquement par des méthodes. Un autre intérêt d encapsuler est que cela permet d abstraire Informatique II Cours 15 : Introduction POO 7 Informatique II Cours 15 : Introduction POO 8

Encapsulation et Interface 1. Encapsulation = isolement et dissimulation des détails d implémentation Concentration des attributs/méthodes concernant l objet 2. Interface = ce que l utilisateur peut utiliser 3. Exemple : l interface d une voiture Volant, accélérateur, pédale de freins, etc. Tout ce qu il faut savoir pour la conduire (mais pas la réparer! ni comprendre comment ça marche) L interface ne change pas, même si l on change de moteur et même si on change de voiture (dans une certaine mesure) : abstraction de la notion de voiture (en tant qu «objet à conduire») Notion d abstraction (1) Pour être véritablement intéressant, un objet doit permettre un certain degré d abstraction. Exemple : Figures géométriques la notion d «objet rectangle» n est intéressante que si l on peut lui associer des propriétés et/ou mécanismes généraux propriétés et mécanismes valables pour l ensemble des rectangles et non pas pour un rectangle particulier. Les notions de largeur et hauteur sont des propriétés générales des rectangles (attributs), Le mécanisme permettant de calculer la surface d un rectangle (surface = largeur hauteur) est commun à tous les rectangles (méthodes) Informatique II Cours 15 : Introduction POO 9 Informatique II Cours 15 : Introduction POO 10 Notion d abstraction (2) Le processus d abstraction consiste à identifier pour un ensemble d éléments : des caractérisations valides pour tous les éléments des mécanismes communs à tous les éléments description générique de l ensemble considéré Abstraction Spécifique hauteur: 30 largeur:12 surface:324 hauteur: 15 largeur: 26 surface:390 hauteur:30 largeur:30 surface:900 hauteur: largeur: surface= hauteur x largeur générique Informatique II Cours 15 : Introduction POO 11 Informatique II Cours 15 : Introduction POO 12

En programmation Objet : Classes et Types le résultat du processus d abstraction s appelle une classe une classe définit un type (au sens du langage de programmation) une réalisation particulière d une classe s appelle une instance Classe Rectangle hauteur largeur surface =. instanciation Exemples Abstraction d objets en terme de classes : l ensemble des livres l ensemble des vélos le type «chaînes de caractères» (string) les fenêtres d une interface graphique Instances (réalisations particulières) : «C++ par la pratique» de la bibliothèque centrale le vélo de votre petit frère «Il était une fois dans l Ouest» la fenêtre dans laquelle s affiche Nestcape sur mon écran instances Informatique II Cours 15 : Introduction POO 13 Dans le jargon de la POO, INSTANCE = OBJET Informatique II Cours 15 : Introduction POO 14 Classes v.s. instances Plan Attributs: largeur hauteur Rectangle méthodes: dessine() surface() Existence conceptuelle (écriture du programme) Existence concrète (exécution) 12 30 26 30 15 30 classe (type abstrait) Notions d encapsulation et d abstraction Objets, instances et classes Passons à la pratique : Classes en C++ Variables d instance Méthodes d instance Encapsulation et Interfaces : public : et private : instance1 instance2 instance3 L objet this et le masquage Informatique II Cours 15 : Introduction POO 15 Informatique II Cours 15 : Introduction POO 16

Les classes en C++ En C++ une classe se déclare par le mot-clé class. Exemple : ; La déclaration d une instance d une classe se fait de la façon similaire à la déclaration d une variable classique : nom_classe nom_instance ; Déclaration des attributs La syntaxe de la déclaration des attributs est la même que celle des champs d une structure. type nom_attribut ; Exemple : les attributs hauteur et largeur, de type double, de la classe Rectangle pourront être déclarés par : double hauteur; double largeur; Exemple : Rectangle rect1; déclare une instance rect1 de la classe Rectangle. Informatique II Cours 15 : Introduction POO 17 Informatique II Cours 15 : Introduction POO 18 Accès aux attributs Déclaration des méthodes L accès aux valeurs des attributs d une instance de nom nom_instance se fait comme pour accéder aux champs d une structure : nom_instance.nom_attribut Exemple : la valeur de l attribut hauteur d une instance rect1 de la classe Rectangle sera référencée par l expression : rect1.hauteur La syntaxe de la définition des méthodes d une classe est la syntaxe normale de définition des fonctions : type_retour nom_methode (type_arg1 nom_arg1, ) { // corps de la méthode Exemple : une méthode surface() de la classe Rectangle pourrait être définie par : double surface() { return (hauteur * largeur); Informatique II Cours 15 : Introduction POO 19 Informatique II Cours 15 : Introduction POO 20

Accès aux méthodes L appel aux méthodes définies pour une instance de nom nom_instance se fait à l aide d expressions de la forme : nom_instance.nom_methode(val_arg1,) Exemple : la méthode void sethauteur(double h) ; définie pour la classe Rectangle peut être appelée pour une instance rect1 de cette classe par : rect1.sethauteur(3.5) Accès aux attributs et méthodes Chaque instance a ses propres variables : aucun risque de confusion d une instance à une autre. classe instances accès Rectangle double largeur ; double hauteur ; double surface() { rect1 largeur=4 hauteur=2 surface() rect2 largeur=2 hauteur=3 surface() rect1.largeur rect1.hauteur rect2.largeur rect2.hauteur rect2.surface() Informatique II Cours 15 : Introduction POO 21 Informatique II Cours 15 : Introduction POO 22 Portée des attributs Encapsulation et interface Remarque : Les attributs d une classe constituent des variables directement accessibles dans toutes les méthodes de la classes (i.e. des variables globales à la classe). Il n est donc pas nécessaire de les passer comme arguments des méthodes. Par exemple, dans toutes les méthodes de la classe Rectangle, l identificateur hauteur (resp. largeur) fait donc a priori référence à la valeur de l attribut hauteur (resp. largeur) de la classe. Exemple : définition d une méthode surface pour la classe Rectangle double surface() { return (hauteur * largeur); Tout ce qu il n est pas nécessaire de connaître à l extérieur d un objet devrait être déclaré comme private : double surface() { ; private: double hauteur; double largeur; Variable d instance privée = invisible depuis l extérieur de la classe. C est également valable pour les méthodes. Erreur de compilation si référence à une variable d instance privée : Rectangle.cc:16: double Rectangle::hauteur is private Informatique II Cours 15 : Introduction POO 23 Informatique II Cours 15 : Introduction POO 24

Encapsulation et interface (2) Méthodes «get» et «set» À l inverse ce qui doit être visible de l extérieur est «publique» : public : public: double surface() { ; Dans la plupart des cas : Privé : 1. Toutes les variables d instance 2. La plupart des méthodes d instance Publique : 1. Quelques méthodes d instance bien choisies (interface) Informatique II Cours 15 : Introduction POO 25 Toutes les variables d instance sont privées? Et si on a besoin de les utiliser depuis l extérieur de la classe? Si le programmeur le juge utile, il inclut les méthodes publiques nécessaires 1. Méthodes «set» : Modification Affectation de l argument à une variable d instance précise void sethauteur(double h) { hauteur = h ; void setlargeur(double L) { largeur = L ; 2. Méthodes «get» : Consultation Retour de la valeur d une variable d instance précise double gethauteur() { return hauteur ; double getlargeur() { return largeur ; Informatique II Cours 15 : Introduction POO 26 Masquage (shadowing) Masquage (2) masquage = un identificateur «cache» un autre identificateur Situation typique : le nom d un paramètre cache une variable d instance void sethauteur(double hauteur) { hauteur = hauteur; // Hmm. pas terrible! Si, dans une méthode, un attribut est masqué alors la valeur de l attribut peut quand même être référencée à l aide du mot réservé this. this est un pointeur sur l instance courante this «moi» Syntaxe pour spécifier un attribut en cas d ambiguïté : this->nom_attribut Exemple : void sethauteur(double hauteur) { this->hauteur = hauteur; // Ah, là ça marche! L utilisation de this est obligatoire dans les situations de masquage Informatique II Cours 15 : Introduction POO 27 Informatique II Cours 15 : Introduction POO 28

Portée des attributs (résumé) La portée des attributs dans la définition des méthodes peut être résumée dans le schéma suivant : class MaClasse { int x ; int y ; void une_methode ( int x ) { y x this->x Actions et Prédicats En C++ on peut distinguer les méthodes qui modifient l état de l objet («actions») de celles qui ne changent rien à l objet («prédicats»). On peut pour cela ajouter le mot const après la liste des arguments de la méthode : type_retour nom_methode (type_arg1 nom_arg1, ) const Exemple : double surface() const { return (hauteur * largeur); Informatique II Cours 15 : Introduction POO 29 Si jamais vous déclarez comme prédicat (const) une action, vous aurez à la compilation le message d erreur : assignment of data-member in read-only structure Informatique II Cours 15 : Introduction POO 30 Classes = super struct Pour résumer à ce stade, une classe c est une struct qui contient aussi des fonctions («méthodes») dont certains champs (internes) peuvent être cachés (private :) et dont d autres constituent l interface (public :) #include <iostream> using namespace std; Un exemple complet de classe // définition de la classe public: // définition des méthodes double surface() const { return (hauteur * largeur); double gethauteur() const { return hauteur; double getlargeur() const { return largeur; void sethauteur(double hauteur) { this->hauteur = hauteur; void setlargeur(double largeur) { this->largeur = largeur; private: // déclaration des attributs double hauteur; double largeur; ; Informatique II Cours 15 : Introduction POO 31 Informatique II Cours 15 : Introduction POO 32

Un exemple complet de classe (2) Objets et Classes en C++ //utilisation de la classe main() { Rectangle rect; double lu; cout << "Quelle hauteur? "; cin >> lu; rect.sethauteur(lu); cout << "Quelle largeur? "; cin >> lu; rect.setlargeur(lu); cout << "surface = " << rect.surface() << endl; Informatique II Cours 15 : Introduction POO 33 class MaClasse { déclare une classe. MaClasse obj1 ; déclare une instance (un objet) de la classe MaClasse Les attributs d une classe se déclarent comme des champs d une structure : class MaClasse { type attribut ; Les méthodes d une classe se déclarent comme des fonctions, mais dans la classe elle-même : class MaClasse { type methode(type1 arg1, ) ; Encapsulation et interface : class MaClasse { private : // attributs et methodes privees public : // interface : attributs et methodes publiques l attribut particulier this est un pointeur sur l instance courante de la classe. Exemple d utilisation : this->monattribut Informatique II Cours 15 : Introduction POO 34 Ce que j ai appris aujourd hui que l on peut encapsuler données et traitements en utilisant des classes d objets que les éléments de base de la POO en C++ sont : Variables et méthodes d instance Encapsulation et interface : public :, private :, méthodes «get» et méthodes «set». L objet this et le masquage je peux maintenant mieux concevoir mes programmes grâce à la programmation orientée objet Exercices de cet après-midi : La suite Premiers programmes orientés objets Le prochain cours : Suite des concepts de POO : constructeurs et destructeurs Ensuite : Héritage Polymorphisme Héritage multiples Informatique II Cours 15 : Introduction POO 35 Informatique II Cours 15 : Introduction POO 36