Programmation Orientée Objet C++ Cours 1



Documents pareils
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

et Programmation Objet

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

COMPARAISONDESLANGAGESC, C++, JAVA ET

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

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

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

Initiation à JAVA et à la programmation objet.

Cours 1: Java et les objets

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

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

Chapitre 2. Classes et objets

Une introduction à Java

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

as Architecture des Systèmes d Information

Introduction à l héritage en C++

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Université de Bangui. Modélisons en UML

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

Introduction à C++ et à wxwidgets

TP1 : Initiation à Java et Eclipse

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

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

Plan Pédagogique du cours

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

Premiers Pas en Programmation Objet : les Classes et les Objets

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

UE C avancé cours 1: introduction et révisions

UE Programmation Impérative Licence 2ème Année

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

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

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

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

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

Programmation en Java IUT GEII (MC-II1) 1

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

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

Programmer en JAVA. par Tama

Processus d Informatisation

Programmation par composants (1/3) Programmation par composants (2/3)

Chapitre VI- La validation de la composition.

TD/TP PAC - Programmation n 3

Java c est quoi? Java pourquoi?

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

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

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Langage Java. Classe de première SI

Programmation Orientée Objet

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

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

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

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

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

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

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

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

Programmation stochastique

TD/TP PAC - Programmation n 3

C++ : PROGRAMMATION-OBJET

Cours d Algorithmique et de Langage C v 3.0

Claude Delannoy. 3 e édition C++

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

Bases de programmation. Cours 5. Structurer les données

LE LANGAGE C++ ENAC 1997 A. DANCEL


Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Introduction au Génie Logiciel

Chap III : Les tableaux

IFT2255 : Génie logiciel

DES CONCEPTS OBJET PAR JAVA

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

Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object

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

Programmation MacOSX / ios

INITIATION AU LANGAGE JAVA

Programmation par les Objets en Java

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

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

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Bases Java - Eclipse / Netbeans

Les structures. Chapitre 3

TP : Gestion d une image au format PGM

Création d objet imbriqué sous PowerShell.

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Introduction au langage C

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Diagramme de classes

Programmation Objet Java Correction

Le langage C. Introduction, guide de reference

Le langage C. Séance n 4

Chapitre 1 : La gestion dynamique de la mémoire

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

2. Comprendre les définitions de classes

Le langage C++ (partie I)

Programmation avec des objets : Cours 7. Menu du jour

Programmation système I Les entrées/sorties

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Transcription:

Programmation Orientée Objet C++ Cours 1 P. Pesneau pierre.pesneau@math.u-bordeaux1.fr Université Bordeaux 1 Bât A33 - Bur 265

Ouvrages de référence B. W. Kernighan et D. M. Ritchie - Le langage C : Norme ANSI. Editions Dunod, 2004. C. Delannoy - Programmer en langage C : Cours et exercices corrigés. Editions Eyrolles, 2009. B. Stroustrup - Le langage C++. Editions Pearson Education, 2004. C. Delannoy - Programmer en langage C++. Editions Eyrolles, 2011.

Sommaire La Programmation Orientée Objet 1 La Programmation Orientée Objet 2

Problématique de la programmation Concevoir des logiciels avec des exigences de qualité : Exactitude : aptitude d un logiciel à fournir les résultats voulus dans des conditions normales d utilisation. Robustesse : aptitude à bien réagir quand on s écarte des conditions normales d utilisation. Extensibilité : facilité avec laquelle un programme pourra être adapté pour satisfaire à l évolution de la demande. Réutilisabilité : possibilité d utiliser certaines parties du logiciel pour résoudre d autres problèmes. Portabilité : facilité avec laquelle on peut exploiter un même logiciel dans différentes implémentations. Efficience : temps d exécution, taille mémoire...

Programmation structurée Repose sur l équation de Writh : Algorithmes + Structures de données = Programmes Les algorithmes étant dissociés des données, il est nécessaire d établir le lien entre eux lors de la conception du programme. La modification du logiciel par la remise en cause de l un des éléments nécessite souvent la remise en cause de l ensemble des éléments.

Programmation Orientée Objet Repose sur le concept d objet qui est une association de données et de procédures (ou méthodes) agissant sur ces données : Méthodes + Données = Objet Un programme est alors constitué d un ensemble d objets communiquant par des requêtes (ou messages). La POO permet une modélisation plus naturelle des systèmes considérés. et propose un ensemble de concepts indépendants de tout langage de programmation facilitant le représentations des objets : du monde réel (personne, voiture,...). d un domaine particulier (vecteur, matrice, complexe,...)

Concept objet Un objet est caraxtérisé par un état : ensemble de valeurs, les données. un comportement : ensemble d opérations réalisables. Ex : un véhicule Un objet : connaît ses caractéristiques. sait comment effectuer les opérations qui le concernent. réagit à des messages lui demandant d effectuer un certain traitement.

Concept de classe C est une généralisation de la notion de type. C est la description d un ensemble d objet ayant une structure de données commune et disposant des même méthodes. Une classe décrit le domaine de définition d un ensemble d objets. Chaque objet est une instance d une classe (mécanisme d instanciation). Une classe est décrite par : Le type des données représentées (déclaration des attributs). Le prototype (ou interface) des méthodes accedant aux attributs. La réalisation (ou définition) des méthodes.

Autres concepts de la POO Modularité : décomposition d un système en modules cohérents et faiblement couplés (notions de classes et d objets) Abstraction des données : ignorer les détails pour ne conserver qu une notion générale. Encapsulation des données : on n agit pas directement sur les données d un objet. On interagit par l intermédiaire de ses méthodes. Cela facilite la maintenance et la réutilisation. Héritage : permet de définir une nouvelle classe à partir d une classe existante à laquelle on ajoute de nouvelles données et méthodes. (Spécialisation et réutilisation.) Polymorphisme : donner plusieurs formes à une même classe d objets en fonction des données.

Le C++ La Programmation Orientée Objet Sur-ensemble du langage C offrant les possibilités de la POO. Ce n est pas un langage de POO pure. C++ = C ± E + S + P avec : C : le C norme ANSI. E : les écarts de C++ avec la norme ANSI. S : les spécificités du C++ qui ne sont pas de la POO. P : les possibilités de la POO. Structuration d un programme : déclaration des classes dans des fichiers.hpp (de préférence un fichier par classe). réalisation des méthodes de classes dans des fichiers.cpp (de préférence un par classe). implémentation du programme principal dans un fichier.cpp.

Sommaire La Programmation Orientée Objet 1 La Programmation Orientée Objet 2

Introduction Elles généralisent les structures en C. Elles constituent un modèle ou type abstrait permettant de déclarer des instances (objets) ayant les caractéristiques de la classe. Une classe contient : des données-membres ou attributs. des fonctions-membres ou méthodes. Chaque membre se voit définir un droit d accès par l un des mots-clés public, private ou protected. Seuls les membres publics sont accessible de l extérieur de la classe. Ceci renforce l encapsulation des données. Les membres publics constituent l interface pour l utilisateur.

Avantages Seule l interface a besoin d être considérée par l utilisateur. Les détails techniques d implémentation sont dissimulés dans les réalisations des méthodes. C est le principe d abstraction. Le programme utilisateur ne peut pas accéder directement aux membres privés ou protégés d un objet. Ce sont les principes de masquage de l information et d encapsulation des données. Il est possible de modifier l implémentation d une méthode sans répercution sur le texte des programmes utilisateurs (à condition de respecter la même interface). C est le principe de séparation de l interface er de la réalisation. Il facilite l évolutivité d un logiciel.

Squelette d une classe class Nom_class { private: // Déclaration des attributs // et méthodes privés protected: // Déclaration des attributs // et méthodes protégés public: // Déclaration des attributs // et méthodes publics };

Exemple : la classe Point Fichier Point.hpp : class Point { private: }; int coord_x; int coord_y; public: void SetCoord(const int & x, const int & y); void Deplacer(const int & dx, const int & dy); void Afficher() const;

Les constructeurs Avant de pouvoir être utilisé, un objet doit être construit. Cette opération est effectuée par des méthodes spécifiques : les constructeurs. On peut en avoir plusieurs pour une même classe. Ils portent toujours le nom de la classe. Ils ne retournent aucun résultat, pas même void. Si aucun constructeur n est déclaré, un constructeur par défaut, sans paramètres, est automatiquement créé. Ce constructeur fera appel aux constructeurs par défaut des attributs qui composent l objet. Le constructeur de copie est un constructeur qui prend en paramètre un objet de la même classe et qui construit une copie de cet objet. Si le constructeur de copie n est pas déclaré, un constructeur de copie par défaut est créé qui fera appel au constructeur de copie de chacun des attributs qui composent l objet.

Exemple : la classe Point Fichier Point.hpp : class Point { private: }; int coord_x; int coord_y; public: Point(); Point(const in & x, const int & y); Point(const Point & p); void SetCoord(const int & x, const int & y); void Deplacer(const int & dx, const int & dy); void Afficher() const;

Le destructeur Lorsqu un objet devient inutile, il doit être détruit. Cette opération est réalisée par le destructeur. Caractéristiques : Il est unique. Son nom est le nom de la classe précédé par un. Il n a pas de paramètre. Il ne retourne aucun résultat, pas même void. Il doit restituer la place mémoire allouée dynamiquement par l objet. Un destructeur n est jamais appelé explicitement. Il est exécuté automatiquement lorsqu un objet atteint la fin de la portée de sa déclaration, ou comme conséquence d un ordre delete.

Exemple : la classe Point Fichier Point.hpp : class Point { private: }; int coord_x; int coord_y; public: Point(); Point(const in & x, const int & y); Point(const Point & p); ~Point(); void SetCoord(const int & x, const int & y); void Deplacer(const int & dx, const int & dy); void Afficher() const;

Utilisation des objets #include "Point.hpp" int main(){ Point p1; Point p2(5,3); Point p3(p1); Point p4 = p2; p2.afficher(); p1.setcoord(7,2); // Constructeur par defaut // Constructeur avec parametre // Constructeur de copie // Constructeur de copie // Affiche le point p2 // Modifie les coordonnées de p1 Point * pt1; // Déclaration d un pointeur sur un Point pt1 = new Point; // Allocation dynamique - Const. par defaut Point * pt2; // Déclaration d un pointeur sur un Point pt2 = new Point(3,1) // Allocation dynamique - Const. avec param (*pt1).afficher() pt1->afficher() delete pt1; delete pt2; // Affiche le point pointe par pt1; // Idem instruction precedente // Appel destructeur pour *pt1 // Appel destructeur pour *pt2 return 0; } // Appel destructeur pour p1, p2, p3 et p4

Réalisation des fonctions-membres On écrit généralement les fonctions-membres en dehors de la classe dans un fichier.cpp. On utilise alors l opérateur :: de réalisation de domaine pour préfixer le nom de la classe au nom de la méthode. A l intérieur de la fonction-membre, on travaille toujours par défaut sur l instance acteur courante (celui-ci correspond à l objet sur lequel on a appelé la méthode). Les membres (attributs et méthodes) de cet objet sont accessibles directement par leur nom, sans préfixe. Les membres des autres objets de la même classe, sont accessible par la notation pointée. Toute fonction-membre possède un argument implicite noté this qui est un pointeur sur l instance acteur courante.

Exemple : la classe Point Fichier Point.cpp : #include "Point.hpp" Point::Point(){ coord_x = 0; coord_y = 0; } Point::Point(const in & x, const int & y): coord_x(x),coord_y(y){ } Point::Point(const Point & p){ coord_x = p.coord_x; coord_y = p.coord_y; } Point::~Point(){} void Point::SetCoord(const int & x, const int & y){ coord_x = x; coord_y = y; } void Point::Deplacer(const int & dx, const int & dy){ coord_x += dx; // coord_x = coord_x + dx; coord_y += dy; // coord_y = coord_y + dy; } void Point::Afficher(){ cout << "x = " << coord_x << " y = " << coord_y << endl; }