04.72.44.83.95 Programmation Orienté Objet en C++ Ricard julien.

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

La boucle for : init7.c et init71.c
Programmation Orienté Objet en C++
Programmation Orienté Objet en C++
Rappels C.
Introduction au langage C
Rappels de C ECP – Option SA Henri Fallon. Objectifs Théorie + pratique Compréhension générale du langage Repartant « du début » Pour ceux qui savent.
Initiation à la programmation et algorithmique cours 2
Algorithmes et structures de données avancées Partie Conception de Sites Web dynamiques Cours 9 Patrick Reuter.
Sayada le 03 Mars 2009 Réalisé par : Mr. SOUISSI Chaouki
L’ interruption de boucle
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Programmer en JAVA par Tama
Rappels de C ECP – Option SA Henri Fallon. Objectifs Théorie + pratique Compréhension générale du langage Repartant « du début » Pour ceux qui savent.
Calcul numérique (avec Maple)
5. Les structures répétitives
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Semaine #1 INF155 par Frédérick Henri.
Langage C Révision.
CPI/BTS 2 Programmation Web Introduction au PHP
Points importants de la semaine Les boucles. Les types arithmétiques. Les opérateurs.
Structures de contrôle de l’exécution
Bases de la programmation en C++ 1 Les enchaînementsdinstruction Séquentiels. Exécutions dinstructions les unes à la suite des autres. Instructions séparées.
IFT1969 Programmation scientifique en C
Introduction à l’algorithmique
Révision des notions OO et Java Semaine 1 Jian-Yun Nie.
Perl, un langage de programmation pour les données textuelles
Principes de programmation (suite)
Points importants de la semaine Les constantes. Les boucles. Les opérateurs relationnels Les opérateurs logiques.
Instruction sélective switch-case Instruction répétitive do-while For
Principes de programmation
IFT 6800 Atelier en Technologies d’information
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
CSI 1502 Principes fondamentaux de conception de logiciels
Plan troisième cours Instruction sélective Instruction répétitive
Répéter dans un programme avec une Instruction itérative
Les Opérateurs Ils régissent toutes les opérations ou transformations sur les valeurs des variables. Opérateur d'affectation Opérateurs arithmétiques Opérateurs.
Structures alternative et répétitive
Programmation Orienté Objet en C++ Ricard julien.
L’essentiel du langage C
2.1 - Historique Chapitre 2 : Introduction au langage C++
3 Les instructions. Cours 32 Plan du cours 3 Instruction Bloc Portée L’alternative Affectations =, +=, *=… Comment comparer –Comparer des réels –Comparer.
Les structures répétitives en PHP Réfs : manuel p 317.
1 Algorithmique et programmation en Itérations (boucles) Types numériques simples (suite)
Les tests.
 Syntaxe du langage PHP
Master 1 SIGLIS Java Lecteur Stéphane Tallard Correction du TD Chapitre 4.
Cours n° 3 Traitements en Java
Structures de contrôle
UMR 7619 Sisyphe Avril 2012 Alexandre Pryet Le langage une introduction pragmatique Cacul itératif.
1 PHP 5 Notions fondamentales (niveau 1 – cours #2) Formation continue – Cégep de Sainte-Foy.
Introduction au langage C : Structures de contrôle 1 ère année Génie Informatique Dr Daouda Traoré Université de Ségou
Programmation Orienté Objet en C++
Les structures de contrôle
Programmation en C.
Langage de programmation
Introduction à la programmation (420-PK2-SL) cours 8
PRO-1027 Programmation Scientifique en C
pour les programmeurs en C++ Java 2 Part 1 3 Histoire de Java Projet de connexion des machines: 1991 Le nom Java a été introduit dans un café Développé.
02/10/2015Les structures de contrôle1 COURS A2I12 Initiation à l'algorithmique illustrée par le langage C Guillaume BOURLET Département GEII IUT Sénart/Fontainebleau.
Algorithmique Algorithmique  Pascal
Philippe Gandy – 6 octobre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
** Flash séance 2 Action script. ** Action Script Ajoute de l’interactivité Permet de contrôler les clips  Langage de programmation orienté objet.
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
PhP 2. Tableaux et structures de contrôle. Les tableaux Définition –Rassemblement d’un ensemble de valeurs portant le même nom de variable –Types de tableaux.
Java Réalisé par: Mouna POKORA. PLAN: Définition : Historique: Caractéristiques: un langage orienté objet: un langage interprété : un langage portable:
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Fonctions ● Namespace ● Tests ● Boucles ● Pointeurs, références.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Types et opérations fondamentales ● Tests ● Boucles ● Pointeurs, références.
Programmation en C++ C++ de base
Aa. b b c a.
Transcription de la présentation:

Programmation Orienté Objet en C++ Ricard julien

Programmation Orienté Objet en C++ 2 Organisation Cours :  Rappels  Surchage de fonctions  Surcharge des opérateurs  Fonctions amies  Fonction Template  Fonction inline TP : nombres rationnels

Programmation Orienté Objet en C++ 3 Rappel If If ( condition ) { bloc si oui } else { bloc si non } ((condition)? Instruction_oui : instruction_non); While While ( condition ) { bloc executer tant que... } For For ( initialisation ; condition ; incrementation ) { bloc } Do while Do { bloc } while ( condition ) ;

Programmation Orienté Objet en C++ 4 Conditions booléenne Et : & ou && Ou : | ou || Égalité : ==, =, >, != Penser aux () et aux commentaires… (((a =0))||((a>b)&&(a<100000))) &TrueFalse True False ||TrueFalse True FalseTrueFalse

Programmation Orienté Objet en C++ 5 Classe class Date { public : int var1; Date(); ~Date(); void initialiser(int j,int m,int a); void afficher(); int getJour(); int getMois(); int getAnnee(); setJour( int j); setMois(int m); setAnnee(int a); protected: int _jour; int _mois; int _année; void _test(); private: }; Date::Date(){ _jour=0; _mois_0; _annee=0; } Date::~Date(){} void Data::afficher(){ cout << "la date : " << _jour ; cout << "/" << _mois ; cout << "/" << _annee << endl; } int Data::getJour() {return _jours;} int Data::getMois() {return _mois;}; int Data::getAnnee(){return _annee;} Data::setJour(int j) {_jour =j;} Data::setMois(int m) {_mois =m;} Data::setAnnee(int a){_annee=a;}

Programmation Orienté Objet en C++ 6 Réutilisabilité des fonctions Un bon module doit pouvoir :  Manipuler plusieurs types différentes  S’adapter au différentes structures de données  Offrir des opérations sans connaître l’implémentation  factoriser les opérations communes à un groupe de module Deux concepts  La surcharge  La généricité Définition de nouvelles techniques:  Surchage des fonctions et des opérateurs  Fonction Template

Programmation Orienté Objet en C++ 7 Surcharge Attribuer le même noms à plusieurs opèrateurs ou à plusieurs fonctions L’ambiguité est levé par le contexte :  Nombre de parametres  Type des parametres int max(int a,int b,int c); int max(int a,int b); float max(float a, float b, float c); float max(float a, float b); char max(char a, char b, char c); char max(char a, char b);

Programmation Orienté Objet en C++ 8 Class Point{ Public: Point(); Point(int x,int y); Private: int _x; int _y; } Exemple de surcharge de fonctions int max(int a,int b){ return ((a>b)? a : b); } float max(float a, float b){ return ((a>b)? a : b); } char max(char a, char b){ return ((a>b)? a : b); } int max(int a, int b, int c){ if ((a>b)&&(a>c)) return a; if ((b>a)&&(b>c)) return b; if((c>a)&&(c>b)) return c; } float max(float a, float b, float c){ return max(max(a,b),c); }

Programmation Orienté Objet en C++ 9 Surcharge des opérateurs On peut surcharger les opérateurs : +,-, *, /, ++, =, ==, >, <, %, +=, - = … Cela permet :  SI A et B deux objets  A+B;  A-B;  -A;  If( B==A)…  A=B;  A+=B;  … Point A,B,C; C=A+B; C=A-B; B=-A; C=-(A*B); if(A<B) C=B; else C=A;

Programmation Orienté Objet en C++ 10 Comment on fait ? Point addition(Point& A,Point& B){ Point C; C._x=A._x+B._x; C._y=A._y+B._y; return C; } Operateur + : A + B  C class Point{ public: Point addition(Point& B){ Point C; C._x=_x+B._x; C._y=_y+B._y; return C; } private: int _x; int _y; }; class Point{ public: Point operator+(const Point& p){ Point N; N._x=_x+p._x; N._y=_y+p._y; return N; } private: int _x; int _y; }; Int main() Point A,B,C; C=A+B; // C=A.operator+(B); }

Programmation Orienté Objet en C++ 11 Surcharge d’opérateurs class Vecteur{ public: int& operator[](int indice); operator=(Vecteur& V); private: int taille; int *tab; }; int& Vecteur::operator[](int indice){ return tab[indice]; } Vecteur::operator=(Vecteur& V){ delete [] tab; taille=V.taille; tab= new int [taille]; for(int i;i<taille;i++) tab[i]=V.tab[i]; }cc

Programmation Orienté Objet en C++ 12 Opérateur défini hors des classes Syntaxe opérationnel A+B Syntaxe fonctionnel A.operator+(B) Si A n’est pas un objet ? Exemple : 12*B A*12 Vecteur operator*(Vecteur& v,int nombre); Vecteur operator*(int nombre, Vecteur& v); Vecteur V(1,3); 12*V; // --> operator+(12,V);

Programmation Orienté Objet en C++ 13 Fonctions amies Donne l’acces aux membres privés et protegés à :  Une méthodes d’une autre classe  Toute les méthodes d’une autre classe  Une fonction Class A { friend void B::Ajouter(int); friend class B; friend A& operator*(int, A&); Private: int A; }

Programmation Orienté Objet en C++ 14 Surcharge de << Surcharge l’operateur << Affiche directement un objet complexe #include ’’iostream’’ ostream& operator<<(ostream& flot, Vecteur* V){ flot << V._x, << ’’ ’’ << V._y << endl; return flot ; } int main(){ Vecteur V(1,3); cout << V; return 0; }

Programmation Orienté Objet en C++ 15 Fonctions Template Générisité Fonctions Template cad générique Défini un patron de fonction Remplacé lors de la compilation int min(int a,int b){ return ((a<b)? a : b); } float min(float a, float b){ return ((a<b)? a : b); } char min(char a, char b){ return ((a<b)? a : b); } template T min ( T a, T b){ return ((a<b)? a : b ); } int main(int argc,char* argv[]){ cout << min( 12, 3)<< endl; cout << min( 12.4, 3.3)<< endl; cout << min('c', 'a')<< endl; cout << min( 12, )<< endl; return 0; }

Programmation Orienté Objet en C++ 16 Exemple de template Template acceptant plusieur types de données Définition dans le fichier interface.H template T1 min ( T2 a, T3 b){ return ((a<b)? a : b ); } int main(int argc,char* argv[]){ cout << min( 12, )<< endl; cout << min( 12.4, ‘c’ )<< endl; return 0; }

Programmation Orienté Objet en C++ 17 Fonctions inline Fonctions sont couteuses en temps Fonction inline Fonction expansée à son point d’appel Ce n’est qu’un recommendation Définition dans le fichier interface.H inline min (int a, int b){ return ((a<b)? a : b ); } int main(int argc,char* argv[]){ cout << min( 12, 3) << endl; return 0; }

Programmation Orienté Objet en C++ 18 Valeur par défaut des parametres Définition dans.H int fonction(int a= 2, int b=4, int c=5, int d=10000); int fontion(int a,int b, int c){ … return 0; } int main(int argc,char* argv[]){ fonction(2,3,5 9000); fonction(2,3,5); fonction(2,3); fonction(2); fonction(); return 0; }