C++ : fonctions et opérateurs

Slides:



Advertisements
Présentations similaires
Les fonctions A quoi ça sert ?
Advertisements

Cours n° 7 Standard Template Library II.
1 Quelques précisions sur l'héritage. 2 Signification de super.f() appel à la méthode f() masquée super : désigne l'objet appelant comme s'il était de.
1 Tableaux des objets C++ si on connaît le nombre dobjets nécessaires davance on peut utiliser des tableau dobjets dans les fonctions dusage class Personne.
C.
Paramètres et pointeurs
Principes de programmation (suite)
2ième Classe (Mercredi, 13 Octobre) C++ Intro CSI2572.
Athapascan-1 Interface C++ de programmation parallèle
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.
Bibliothèque standard du C++
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
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.
Standard Template Library (STL)
Base de programmation Script unity en c#.
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é.
HistoriqueHistorique Langage C++, parution du livre Bjarne Stroustrup Normalisation ANSI.
Structures de données IFT Abder Alikacem La classe vector Édition Septembre 2009 Département dinformatique et de génie logiciel.
Structures de données IFT-2000
Structures de données IFT-2000
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 5 : La surcharge des opérateurs Département dinformatique.
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 7 : Classes et fonctions paramétrables Département.
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.
Principes de programmation
1 PROTOTYPE PGC++ Vecteur_3D DÉFINITION. 2 class Vecteur_3D { private : float vx, vy, vz, vw; // Représentation en coordonnées homogènes. public : Vecteur_3D();
Un langage de programmation hybride
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Cours 4 Héritage (suite).
1 Fonction : surcharge de sélection La surcharge de sélection consiste à implanter plusieurs méthodes de même nom dans une même classe à condition que.
Héritage Lhéritage permet de spécialiser une classe en définissant une relation de type « est une sorte de ». #include comptebancaire.h class CompteEpargne.
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-2000
Structures de données IFT-10541
C++ : variables Déclaration de variables
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Retour sur les listes ordonnées Département dinformatique et de génie logiciel Édition Septembre 2009.
Plan cours La notion de pointeur et d’adresse mémoire.
Héritage Licence Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier.
Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié 1 Cours n° 3 Polymorphisme I.
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
La notion de type revisitée en POO
Cours 9 Exceptions (fin) Généricité. POO-L3 H. Fauconnier2 Chaînage d'exceptions  Une exception peut être causée par une autre.  il peut être utile.
11/04/ L'héritage Cours 7 Cours 7.
7ième Classe (Mardi, 24 novembre) CSI2572. Devoir 3 ?
12/04/ Le polymorphisme Cours 8 Cours 8.
Cours C++ Fonctions Surcharge d’opérateurs Passage d’arguments
Introduction à la programmation objet en C++
HistoriqueHistorique Langage C++, parution du livre Bjarne Stroustrup Normalisation ANSI.
Un peu de Design Pattern Quelques modèles pour développer vite et bien.
Les opérateurs L’amitié Les opérateurs Introduction
Les surcharges d'opérateurs
ISBN Chapitre 10 L'implémentation des sous- programmes.
Cours LCS N°4 Présenté par Mr: LALLALI
Cours du 5 novembre.
Les classes Introduction aux Langages Orientés Objets
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Conception de Programmes - IUT de Paris - 1ère année – Cours 6 - Les opérateurs L’amitié Les opérateurs –Introduction –Surcharge par fonction.
Conception de Programmes - IUT de Paris - 1ère année Cours 2 – Références et passage de paramètres Les Références –Introduction aux références.
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.
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 «
8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.
PRO-1027 Programmation Scientifique en C
1 Programmation en C++ Fonctions ● Déclaration et définition de fonctions ● Arguments ● Surcharge ● Arguments optionnels ● Fonctions constantes ● Fonctions.
Programmation en C++ Fonctions
Transcription de la présentation:

C++ : fonctions et opérateurs Passage d'arguments Surcharge Surcharge d'opérateurs

Fonction : passage d'argument Par référence (propre au C++) void fct(int& a) // Pas de copie de a { a = 4; // a vaut 4 } // Appel de la fonction int b = 3; fct(b); // b vaut 4 Les arguments peuvent être passés à une fonction sous trois formes : Par valeur : ne permet pas de modifier la variable car la fonction travaille sur une copie de la variable d'origine et non sur la variable elle-même ; à éviter absolument avec un type complexe comme une classe car faire une copie de classe n'est pas anodin Par adresse : permet de pallier la limite du passage par valeur mais lourd d'un point de vue syntaxique Par référence : permet de pallier la limite du passage par valeur sans la lourdeur syntaxique ; pour plus de clarté, on rajoute le mot clé "const "si la variable n'est pas modifiée dans la fonction (utile pour les classes) Par adresse void fct(int *pa) // Adresse *pa = 4; // *pa vaut 4 fct(&b); Par valeur void fct(int a) // Copie de a // b vaut toujours 3

Fonction : surcharge de sélection La surcharge de sélection consiste à implanter plusieurs méthodes de même nom dans une même classe à condition que la liste des arguments diffère class Vecteur { protected: int m_x, m_y; public : Vecteur() {m_x = m_y = 0;} Vecteur(int x, int y) {m_x = x; m_y = y;} void deplace(int x, int y); void deplace(const Vecteur& v); }; Vecteur::deplace(int x, int y) { m_x += x; m_y += y; } Vecteur::deplace(const Vecteur& v) m_x += v.m_x; m_y + = v.m_y; int main() { Vecteur v1(3, 5), v2(6, 7); v1. Deplace(8, 9); v1. Deplace(v2); return 0; }

Surcharge d’opérateurs Permet de redéfinir les opérateurs pour toute classe Si D est un opérateur unaire, Dn peut s’interpréter comme n.operator D() Ex : n++ s’interprète comme n.operator++() Si D est un opérateur binaire, n D m peut s’interpréter comme n.operator D(m) Ex : n + m s’interprète comme n.operator+( m ) Cas particulier : le compilateur génère un opérateur d’affectation ("=") par défaut ; il est souvent nécessaire de le redéfinir La plupart des opérateurs peuvent être redéfinis pour n’importe quelle classe

Surcharge d’opérateurs : exemple vecteur.h class Vecteur { protected: int m_x, m_y; public : Vecteur() {m_x = m_y = 0;} Vecteur(int x, int y) {m_x = x; m_y = y;} bool operator==(const Vecteur & v); Vecteur & operator=(const Vecteur & v); Vecteur & operator+(const Vecteur & v); friend std::ostream& operator<<(std::ostream& os, const Vecteur& v); }; vecteur.cpp #include "vecteur.h" bool Vecteur ::operator==(const Vecteur & v) { return (m_x == v. m_x && m_y == v. m_y); } Vecteur & Vecteur ::operator=(const Vecteur & v) m_x = v. m_x ; m_y = v. m_y ; return *this; // this contient l’adresse de l’objet lui-même Vecteur Vecteur::operator+(const Vecteur & v) Vecteur vv(m_x + z.m_x, m_y + z.m_y); return vv; // Attention, syntaxe particulière pour << et >> std::ostream& operator<< (std::ostream& os, Vecteur& v) os << « Abscisse " << v.m_x << "\n"; os << « Ordonnée " << v.m_y << "\n"; return os; main.cpp int main() { Vecteur v1(3, 5), v2(6, 8), v3, v4; v3 = v1 + v2; // Opérateur = et opérateur + v4 = v3; // Opérateur = if (v3 == v4) // Opérateur = = std::cout << « Vecteurs identiques ; c’est normal !\n "; std::cout << v4; // Affichage à l'écran ofstream f(« fichier.txt »); f << v4; // Affichage dans un fichier texte f.close(); return 0; }

Surcharge d’opérateurs Opérateurs pouvant être redéfinis + - * / % = ! += -= *= /= %= ++ -- < > <= >= == != && || & | ^ << >> [] new delete