1 Programmation en C++ Fonctions ● Déclaration et définition de fonctions ● Arguments ● Surcharge ● Arguments optionnels ● Fonctions constantes ● Fonctions.

Slides:



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

C++ 5ème cours Patrick Reuter maître de conférences
C.
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.
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-2000
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.
C++ : fonctions et opérateurs
Cours C++ Fonctions Surcharge d’opérateurs Passage d’arguments
HistoriqueHistorique Langage C++, parution du livre Bjarne Stroustrup Normalisation ANSI.
Les opérateurs L’amitié Les opérateurs Introduction
Les surcharges d'opérateurs
Conception de Programmes - IUT de Paris - 1ère année – Cours 6 - Les opérateurs L’amitié Les opérateurs –Introduction –Surcharge par fonction.
1 Après 3 séances ● Utilisation du système Linux – Il faut maîtriser l'utilisation de la souris (« copy/paste » des textes donnés) – Utilisation de la.
C++ Les fonctions. Présentation Utilité : Dès qu'un programme dépasse la centaine de lignes de code, il est pratique de pouvoir le décomposer en plusieurs.
1 Programmation en C++ IO en C++/SL. 2 Sortie à l’écran Exemple: #include int main () { std::cout
Tableaux et Pointeurs Chaînes de Caractères Programmation Impérative II.
Le DOM Le Document Object Model (DOM) est une interface de programmation pour les documents HTML et XML Il fournit une représentation structurée du document.
SQL partie 5 1 LMD create – update – primary key secondary key.
CINI – Li115 1 Semaine 10 Les pointeurs ● Notion d'adresse ● Déclaration et utilisation de pointeurs ● "Types pointeur" et initialisation des pointeurs.
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.
1 Programmation en C++ Cycle de vie ● La vie d'un objet ● Destructeur ● Gestion de mémoire dynamique.
1 Programmation en C++ IO en C++/SL ● Standard Library ● Types, objets pour IO ● L'entrée de clavier ● Sortie à l'écran ● Fichiers.
1 Bonnes Pratiques ● Indentation ● Présentation ● Initialisation des variables ● Conditions ● Gestion d'erreurs ● Conventions.
Tableaux en C Mardi 2/05.
Programmation en C++ Standard Library
Notes 7.2 La masse volumique, la flottabilité et les fluides
java : l'héritage (rappel)
Programmation en C++ Héritage
Construire des requêtes
Pas de variable globale
Les notions de classe et d'objet
JavaScript.
Programmation en C++ IO en C++/SL
AO (Architecture des ordinateurs)
Principes de programmation (suite)
Algorithmique Langage C
11ième Classe (Mardi, 18 novembre) CSI2572
Les objectifs du cours Savoir utiliser un Tableur
Langages de programmation TP7
Semaine 11 Les pointeurs (suite)
Les fonctions.
Les fonctions.
Programmation en C++ Fonctions
SIF-1053 Architecture de ordinateurs
Programmation en C++ IO en C++/SL
6. Les types utilisateurs et les structures de données
Programmation en C++ Classes
Les flux en C++ Les flux d’entrées sorties Les flux standards.
Programmation en C++ Fonctions
Programmation en C++ C++ de base
1 RECURSIVITE PRESENTATION Ch. PAUL ALGORITHMIQUE Présentation de la récursivité.
Modélisation avec UML 2.0 Partie II Diagramme de classes.
Programmation Orientée Objet C# El Akel Bouchra ISMONTIC Tanger 2013/2014.
Calcul Scientifique Initiation à SCILB
Message Oriented Middleware MOM - Beghdad abdelkrim -abass youcef.
Les classes et les objets
PRESENTATION ACCESS Editeur : Microsoft Environnement Windows (SE)
Principes de programmation (suite)
© Robert Godin. Tous droits réservés.
Lecture/Écriture de fichiers (I/O)
Variables et accès en Java
Retour sur les interfaces
Analyse et programmation langage ADA
© Robert Godin. Tous droits réservés.
Boulain Joris, Handouz Yassine, Regnier Fabien, Giraud Antoine
DONNÉE DE BASE QM Manuel de formation. Agenda 2  Introduction  Objectif de la formation  Données de base QM: Caractéristique de contrôle Catalogue.
Transcription de la présentation:

1 Programmation en C++ Fonctions ● Déclaration et définition de fonctions ● Arguments ● Surcharge ● Arguments optionnels ● Fonctions constantes ● Fonctions opérateurs

2 Type de fonction Fonction float Distance(Point point); Identificateur de fonction (nom) ● Déclaration = spécification de l'identificateur et du type de fonction – Une promesse (un contrat) que la fonction doit tenir (remplir) Argument ● Définition = implantation – La spécification qui remplit le contrat Type de retour + = float Point::Distance(Point point) { /// Calculer la distance du point donné float x_diff = m_x – point.m_x; float y_diff = m_y – point.m_y; return sqrt(x_diff*x_diff + (x_diff*x_diff); } Point. h Point.cxx

3 Arguments ● Le passage des arguments peut s'effectuer de plusieurs façons: – Par valeur: – Par référence: – Par pointeur (adresse): – Par référence constante: – Par pointeur de type constant: Type value const Type& value Type& value Type* value const Type* value

4... Arguments... float Distance(Point point); void Handle(int number); ● Le passage des arguments: – Par valeur ● L'objet point (ou number) pass é dans la fonction est copié localement dans un nouvel objet qui est utilis é par la fonction ● L'objet d'origine ne peut pas être modifi é par la fonction ● Appropriée que pour des objets de types simple (fondamentaux) car la procédure de copier l'objet peut être coûteuse (en temps) – Par référence constante ● Le même objet point (ou number) dont la référence est pass ée dans la fonction est utilisé par la fonction ● La déclaration const nous garantit que l'objet ne peut pas être modifié par la fonction ● Évite la nécessité de copier l'objet, elle est alors appropriée pour les objets de types complexes (classe) float Distance(const Point& point); void Handle(const int& number);

5... Arguments ● Si la fonction est destinée à modifier l'objet: – Par référence ● Le même objet point (ou number) dont la référence est pass ée dans la fonction est utilisé par la fonction; il peut alors être modifié – Par adresse (pointeur) ● Le même objet point (ou number) dont le pointeur est pass é dans la fonction est utilisé par la fonction; il peut alors être modifié float Distance(Point* point); void Handle(int* number); float Distance(Point& point); void Handle(int& number);

6 Arguments ● Le passage des arguments peut s'effectuer de plusieurs façons: – Par valeur: NON – Par référence: OUI – Par pointeur (adresse): OUI – Par référence constante: NON – Par pointeur de type constant: NON Type value const Type& value Type& value Type* value const Type* value Objet peut être modifié

7 Surcharge de sélection ● Plusieurs fonctions avec le même nom peuvent coexister à condition que la liste des arguments diffère: – Les fonctions ne peuvent pas différer seulement par le type de retour ● Utilisation – La sélection de fonction est faite par le compilateur class Point { float Distance(Point point); // Distance a partir d'un point float Distance(Line line); // Distance a partir d'une ligne float Distance(Point p1, Point p2); // Distance a partir d'une ligne // définie par deux points p1, p2 double Distance(Line line); // Distance a partir dune ligne } Point point(3,4); Point center(0,0); Line line; std::cout << point.Distance(center) << std::endl; std::cout << point.Distance(line) << std::endl;

8 Arguments optionnels... ● Il est possible de donner à un argument sa valeur par défaut: – Les arguments par défaut ne peuvent pas introduire d'ambiguïté – le constructeur par défaut (sans arguments) est déclaré déjà avec le constructeur par deux floats ● Utilisation Point point(3,4); std::cout << point.Distance() << std::endl; Point center; std::cout << point.Distance(center) << std::endl; class Point { Point( float x = 0, float y = 0 ); Point(); float Distance( Point point = Point(0, 0) ); }

9... Arguments optionnels ● Les arguments avec des valeurs par défaut doivent toujours se trouver à droite des arguments sans valeur par défaut class Point { Point( float x = 0, float y = 0 ); Point( float x, float y = 0 ); Point( float x = 0, float y ); }

10 Fonctions constantes ● La déclaration const de la fonction membre de la classe nous garantit que la fonction ne change pas les données membres de la classe ● Les fonctions qui ne doivent pas changer l'état de la classe: – Les fonctions pour accéder à l'état de l'objet – Pour les autres c'est à décider par le programmeur class Point { public: // Fonctions pour construire l'objet Point(); Point(float x, float y); // Fonctions pour manipuler l'objet float Distance(const Point& point) const; // Fonctions pour accéder à l'état de l'objet float GetX() const; float GetY() const; private: // Données membres float m_x; float m_y; }; Notre définition de la classe Point après l'application de const où c'est approprié

11 Fonctions Opérateurs ● On peut regarder l'opérateur comme un raccourci pour un appel de fonction: – c = a + b; parait plus clair que c = Add(a,b); ● En C++, les opérateurs sont spécifiés (déclarés) et implantés (définis) comme fonctions, mais utilisés comme opérateurs Point operator + (const Point& p1, const Point& p2); ● Déclaration: ● Utilisation: ● Définition: – En C++, le programmeur peut redéfinir la plupart des opérateurs, mais pas tous (ex. opérateur., :: ) Point operator + (const Point& p1, const Point& p2) { return Point ( p1.GetX() + p2.GetX(), p1.GetY() + p2.GetY() ); } Point p1(3,4); Point p2(1,5); Point p3 = p1 + p2; std::cout << p3 << std::endl;

12 Opérateurs I/O ● Les opérateurs > permettent d'envoyer un objet dans un flot d'entrée ou de sortie ● Déclaration: – Déclarer l'opérateur friend permet d'accéder aux données membres privées ● Implémentation: ● Utilisation: class Point { friend std::ostream& operator << (std::ostream& s, const Point& point); }; std::ostream& operator << (std::ostream& s, const Point& point) { s << "Point: " << point.m_x << “, “ << point.m_y; return (s); } Point p5(10, 15); std::cout << p5 << std::endl;