Langage de Programmation Orientée Objet : C++

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

Programmation Orienté Objet en C++
C++ 6ème cours Patrick Reuter maître de conférences
GEF 243B Programmation informatique appliquée
C.
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Programmation Orientée Objet (POO)
FLSI602 Génie Informatique et Réseaux
Leçon 3 : Héritage IUP 2 Génie Informatique
Introduction à la POO: Les classes vs les objets
2ième Classe (Mercredi, 13 Octobre) C++ Intro CSI2572.
Programmation orientée objet
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Leçon 6 : Structures de données dynamiques IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier.
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
C++ : classes Introduction aux Langages Orientés Objets
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
POO : Objets et classes (Rappels)
Langage Oriente Objet Cours 2.
Leçon 2 : Surcharge des opérateurs IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Structures de données IFT-2000
Structures de données IFT Abder Alikacem La classe string Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
Structures de données IFT-10541
Structures de données IFT-2000
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Sixième cours Les chaînes de caractères et le passage de paramètres par référence Passage de paramètres par référence String.h.
IFT 6800 Atelier en Technologies d’information
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Types de données abstrait et mécanismes d'encapsulation
8PRO100 Éléments de programmation Les types composés.
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Structures de données IFT-10541
Structures de données IFT-2000
Structures des données
(Vient du grec et signifie « Peut prendre plusieurs formes »)
Travaux Pratiques Représentation des connaissances
4 Introduction des objets. Les chaînes et tableaux
La notion de type revisitée en POO
et quelques rappels sur certains éléments du langage C
Programmation objet La base.
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
Cours C++ Fonctions Surcharge d’opérateurs Passage d’arguments
Tutorat en bio-informatique
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Les surcharges d'opérateurs
Chapitre III Introduction aux objets et aux classes.
Conception de Programmes - IUT de Paris - 1ère année – Cours 8 – Les entrées/sorties Comment fonctionnent les opérateurs > pour les types élémentaires.
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
Les classes Introduction aux Langages Orientés Objets
Les variables fichiers. Le type fichier On manipule les fichiers par l’intermédiaire de structures FILE décrites dans stdio.h FILE *monFichier; –Nom physique.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
Chapitre VII Techniques plus avancées à travers le concept de classe.
Héritage Conception par Objet et programmation Java
Conception de Programmes - IUT de Paris - 1ère année Quelques éléments du langage C++ Les références La surcharge de fonctions Les fonctions «
Les fonctions. Déclaration/Prototypes C’est une instruction fournissant au compilateur des infos sur une fonction qu’on envisage d’appeler par le suite.
8PRO107 Éléments de programmation Les adresses et les pointeurs.
PRO-1027 Programmation Scientifique en C
Conception de Programmes - IUT de Paris - 1ère année Les classes Introduction Déclaration d’une classe Utilisation d’une classe Définition des.
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
Transcription de la présentation:

Langage de Programmation Orientée Objet : C++ Khalid GABER

Passage du C au C++ Khalid GABER

Commentaire et Type construit Commentaires : // ceci est un commentaire type énuméré, n-tuplet : enum Couleur {rouge,vert,orange}; struct Compte { int code, float solde}; ... Couleur feux ; // var. de type énuméré Compte cpte; // var. de type n-uplet Khalid GABER Passage du C au C++

Prototype de fonctions le type void indique qu'une fonction ne renvoie pas de valeur. void f(int c) { .... }; prototype de fonctions : signature de la fonction permet un contrôle void echanger(int, int); Khalid GABER Passage du C au C++

Surcharge (surdéfinition) des fonctions C++ permet de distinguer deux fonctions de mêmes noms sur le type de leurs arguments d’appels : void init(float r) { ... }; void init(char *chaine) { ... }; paramètre par défaut : void test(int i, float x = 6.23) {... }; test(5); test(9, 80.4); C++ permet de distinguer deux fonctions de mêmes noms sur le type de leurs arguments d’appels. Ainsi il est possible de donner à plusieurs fonctions le même nom si elles s’appliquent à des argument différents. Khalid GABER Passage du C au C++

Passage de Paramètres par Copie Ce mode de passage consiste à ne déposer que l’adresse de l’argument dans la pile d’exécution au moment de l’appel. nécessite l'utilisation de pointeurs pour modifier un argument. // version adresses explicites : void echange( int *x, int *y) { int z = *x; x = *y; *y = z; }; // utilisation : d=4; e=6; echange( &d, &e); cout << d << " " << e << endl; Khalid GABER Passage du C au C++

Passage de Paramètres par référence Manipulation implicite des adresses en rendant le mode de passage transparent au client. // version adresses implicites : void echange(int &x, int &y) { int z = x; x = y; y = z; } d=4; e=6; echange(d,e); cout << d << " " << e << endl; magique Manipulation implicite des adresses en rendant le mode de passage transparent au client, Dans la mesure bien sûr où celui-ci ne cherche pas à passer des expressions. Khalid GABER Passage du C au C++

Gestion de la mémoire dynamique Opérateurs new et delete new : allocation de mémoire sur le tas float* r = new float; // var. élémentaire float* r = new ( float ); // variante float* t = new float[20]; // var. tableau delete : restitution de la mémoire delete r; // var. élémentaire delete [] t; // var. tableau Khalid GABER Passage du C au C++

Sécurité des fonctions « const » permet de : protéger le résultat d'une fonction : const int lire_code(Employe e); spécifier qu'un argument ne peut être que LU : void maj_nom(Employe &e, const char *n); Khalid GABER Passage du C au C++

Entrée- Sortie Flots (stream) entrée : cin (stdin en C) sortie : cout (stdout en C) erreur : cerr (sterr en C) Opérateur d'écriture << cout << "Nom : " << emp.nom << endl; Opérateur de lecture >> cin >> emp.code; Les entrées/sorties sont formatées par défaut. Khalid GABER Passage du C au C++

E/S : gestion des délimiteurs En C++ les séparateurs : ne sont pas traités en tant que caractère par l'opérateur ">>" mais servent à séparer 2 valeurs consécutives dans le fichier d'entrée standard get(char &) traite les séparateurs comme des caractères normaux : #include <iostream.h> void main() { char c; while (cin.get(c)) cout << c; } Khalid GABER Passage du C au C++

E/S : fichier (1) librairie : fstream.h 3 types prédéfinies de fichier ifstream lecture seule ofstream écriture seule fstream lecture/écriture toutes les primitives de manipulations de flot peuvent être appliqués à des flots auxquels on a rattaché un fichier. Khalid GABER Passage du C au C++

E/S : fichier Association d'un fichier et d'un flot open(char *nomDuFichier) ouvre un fichier en l'associant à un flot déclaré précédemment close() ferme le fichier associé au flot coupe la liaison flot/fichier Khalid GABER Passage du C au C++

E/S : fichier (Exemple) #include <fstream.h> #include <stdlib.h> void main() { ifstream monFichier; monFichier.open("test.txt"); while (monFichier >> car) nbre++; monFichier.close(); …. } Khalid GABER Passage du C au C++

Encapsulation ? regroupement sous un même NOM : des données des opérations manipulant les données une opération appartenant à une encapsulation ne peut manipuler que les données de cette encapsulation. données opération P1 opération P2 ...... entrée P1 entrée P2 Khalid GABER

Une encapsulation est Vue de l'extérieur Vue de l'intérieur une région mémoire une entité unique et indépendante une liste de points d'entrée Vue de l'intérieur des données structurées locales des opérations locales correspondant chacune à un point d'entrée et qui manipulent ces données Khalid GABER

Envoi de messages un point d'entrée est activé par un envoi de Message A la réception du message, l'opération correspondante au point d'entrée est exécutée transmission de message : le nom de l'encapsulation DESTINATAIRE le nom du point d'entrée à activer des arguments éventuels Encap 1 Encap 2 message hh Khalid GABER

Prototypes et exemplaires un Prototype représente les objets ayant même comportement le prototype définit les propriétés communes factuelles : attributs comportementales : méthodes Khalid GABER

Vocabulaire en C++ Classe : prototype Instances : exemplaires créés à partir du prototype Khalid GABER Les Classes

Classe et Instance en C++ class CCercle { CPoint centre; // attributs CPositif rayon ; void init (); // méthodes void dessinesToi(); }; instance : CCercle C; initialisation : C.init(); Khalid GABER Les Classes

Structure d'une Classe Extérieur classes dérivées membres public protected private Khalid GABER Les Classes

Déclaration d'une Classe fournir un nouveau type d'Objets. déclarer les MEMBRES de la classe : Attributs : données-membres; Méthodes : fonctions-membres. déclarer des fonctions "amies" : n'appartenant pas à la classe; se comportant comme des « méthodes ». Khalid GABER Les Classes

Méthodes lors de la déclaration de la classe, les méthodes seront : déclarée : signature : type et arguments. déclarée ET définie (inline) : description du corps de la fonction. Khalid GABER Les Classes

Méthodes Une Fonction membre peut : recevoir tous les types d'arguments retourner : des expressions de tous types, des pointeurs sur des objets de types divers, des objets de type référence sur des types divers. Khalid GABER Les Classes

Méthodes inline class Employe { public: int getMatricule() { return matricule; } // fonction inline void setMatricule(int); // descriptions séparées void voir(); private: int matricule; }; Khalid GABER Les Classes

Définir une méthode nom_classe :: nom_méthode(arguments) { ... } void Employe::voir() { cout << "matricule : " << matricule << endl; } void Employe::setMatricule(int m) { matricule = m; } Khalid GABER Les Classes

Message Définition d'une transmission de message : Receveur, Sélecteur de méthodes, Arguments. instance_recept . sélecteur_de_méthode( argts ); opérateur d'accés receveur Khalid GABER Les Classes

Accès à un membre Opérateurs d'accès à membre (attributs ou méthodes) : . pour les instances de la classe -> pour les pointeurs sur des instances. Employe martin; Employe *pDupond; martin.getMatricule(); // instance pDupond->voir(); // pointeur sur une instance Khalid GABER Les Classes

Constructeur permet l’initialisation automatique d'une instance de classe, lors de sa déclaration. un constructeur est une fonction membre : qui ne renvoi pas de valeur, qui porte le nom de la classe à laquelle elle appartient. un constructeur peut être surchargé (comme toute fonction ). Khalid GABER Les Classes

Constructeur (exemple) allocation dynamique d'un certain nombre de caractères au moment de la définition d'un objet de type Chaîne : class Chaine { char* ch; public: Chaine(); Chaine(int taille); }; Chaine::Chaine() { ch = new char[100]; } Chaine::Chaine(int taille) { ch = new char[taille]; } le constructeur est surchargé deux fois: - une fois pour allouer par défaut 100 octets, - une seconde fois pour allouer un nombre d'octets donnés Khalid GABER Les Classes

Constructeur (exemple) void main () { Chaine une; // constr. par défaut Chaine deux(20); // constr. spécialisé ... } Khalid GABER Les Classes

Constructeur de Copie initialiser une instance avec une autre instance de la même Classe. indispensable pour le passage de paramètre par Copie. Khalid GABER Les Classes