Erratum C Surcharge For(int x=0; … 2.

Slides:



Advertisements
Présentations similaires
LES NOMBRES PREMIERS ET COMPOSÉS
Advertisements

Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour.
Programmation Orienté Objet en C++
Programmation Orienté Objet en C++
Rappels C.
Cours n° 7 Standard Template Library II.
Cours n° 6 Standard Template Library I.
Introduction au langage C++
C++ 6ème cours Patrick Reuter maître de conférences
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.
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
Cours n° 8 Conception et Programmation à Objets
Programmer en JAVA par Tama
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Programmation Orientée Objet (POO)
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
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.
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.
Standard Template Library (STL)
Académie de Créteil - B.C Quest-ce quune Inscription 1)1 action + 1 stagiaire + 1 client 2)Parcours individuel (avec son Prix de Vente) 3)Un financement.
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
Structures de données IFT-2000
Langage Oriente Objet Cours 2.
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Standard Template library Édition Septembre 2009 Département dinformatique et de génie logiciel.
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 7 : Classes et fonctions paramétrables Département.
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.
Conteneurs STL.
GPA789 Analyse et conception orientées objet 1 Professeur: Tony Wong, Ph.D., ing. Chapitre 6 Correspondance UML et C++
Introduction au paradigme orienté-objet (suite)
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
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.
Types de données abstrait et mécanismes d'encapsulation
Langages orientés objets
COURS DE PROGRAMMATION ORIENTEE OBJET :
Standard Template Library
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 Abder Alikacem L’héritage en C++ Département d’informatique et de génie logiciel Édition Septembre 2009.
Une introduction à Java
Structures de données IFT-2000
Formation C++. Hello World ! #include /* Commentaire sur plusieurs lignes */ int main() { //Affiche hello world std::cout
Structures de données IFT-2000
Héritage et composition
2.1 - Historique Chapitre 2 : Introduction au langage C++
Module I-C3 : Applications Web IUT R&T 2e année
Le langage C Rappel Pointeurs & Allocation de mémoire.
LES PILES ET FILES.
La notion de type revisitée en POO
et quelques rappels sur certains éléments du langage C
Cours n°4M2. ESCE (S. Sidhom) Séminaire ( 6-12 Février 2007 ) Promo. M2 ESCE-Tunis 2006/07 Conception d’un système d'information sur Internet Architecture.
7ième Classe (Mardi, 24 novembre) CSI2572. Devoir 3 ?
Introduction à la programmation objet en C++
C++ L’HERITAGE Fayçal BRAÏKI DUT INFORMATIQUE.
Les surcharges d'opérateurs
Les classes Introduction aux Langages Orientés Objets
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
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 «
1 Listes des méthodes de la classe string, et exemples.
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é.
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.
Transcription de la présentation:

Erratum C Surcharge For(int x=0; … 2

Au menu Introduction Prérequis Documentation Problématiques Nouveautés syntaxiques du C++ Avoir la classe Plus de classe (encore) Intro à la STL 3

Introduction Langage TRES répandu Performances Portabilité Rigueur … « Extension » du C Ceci nest quun rapide tour dhorizon Ca sapprend par la pratique ! 4

Prérequis Introduction au C Problématiques du C Un peu de pratique (GCC, VC ou autre) 5

Sources de documentation - Bis Internet Google … Bouquins divers et variés (mais ca coûte cher et utilité variable) Cédric stilgar sur IRC 6

Problèmatiques Besoin de performances Language de haut niveau Programmation orientée objet Nouvelle philosophie de programmation Encapsulation des données Masquage de limplémentation Réutilisation (Capitalisation) … 7

Whats new ? 8

Hello World des temps modernes #include /* Commentaires Multi-lignes */ int main() { // Toujours le même prgm pour commencer std::cout << "Tagazok !" << std::endl; return 0; } 9

Whats new ? bool Surcharge de fonctions, dopérateurs Références Namespaces Fonction templates Nouveaux headers 10

Surcharge Plusieurs fonctions avec le même nom Contraintes = Signature unique Liste ordonnée des types darguments différents Ne peuvent pas différer que par le type de retour Attention aux ambiguités ! Surcharge des opérateurs possible règles strictes sur les paramètres 11

Surcharge - exemple int ma_fonction(int a, int b); float ma_fonction(float a, float b); bool ma_fonction(char a, float nom, int c); int ma_fontion(float a); ERREUR : float ma_fonction(int a, int b); AMBIGUE : int main () { ma_fonction(1, 3.0); return 0; } 12

Références Passage de la variable et pas de la copie Eviter la recopie de la variable (grosses structures) Ne pas confondre avec les pointeurs (concepts assez proches) 13

Références - exemple int a = 50; void plus_un(int x) { x += 1; } plus_un(a); // a==50 void plus_un(int* x) { *x += 1; } plus_un(a); // a==51 void plus_un(int& x) { x += 1; } plus_un(a); // a==51 14

Namespaces Vive les espaces de nom ! namespace {} Résolution des conflits, opérateur :: Espace de nom standard: std Directive « using » 15

Templates Ecrire du code générique Dans les structures Dans les fonctions Rien de plus ici … 16

Une nécessité ! 17

Les objets Type qui regroupe des informations (membres) et des moyens de les traiter (méthodes) Exemple: un magicien Points de vieAttaque Reserve de ManaEngage Etat 18

Définition de lobjet class Wizard { public: void Attaque(Wizard &adv) { … } void Engage(int i) { mana += i; } int mana, vie; bool etat; }; 19

Erreurs courantes Compilation Syntaxe Warning Edition de liens fonctions, variables non déclarées, non implémentées, non trouvées … Exécution segfault 20

Organisation des fichiers Rappel compilation / édition de liens Organisation des fichiers : 21 Wizard.h(pp) class Wizard { public: void Attaque(Wizard &adv); void Engage(int i); int mana, vie; bool etat; }; Wizard.cpp void Wizard::Attaque(Wizard &adv) { … } void Wizard::Engage(int i) { mana += i; }

Précompilation A quoi ca sert ? Dans notre cas : 22 Wizard.h(pp) #ifndef WIZARD_H #define WIZARD_H class Wizard { … }; #endif Wizard.cpp #include "Wizard.h" void Wizard::Attaque(Wizard &adv) …

La pratique Wizard ika; ika.etat = true; ika.vie = 20; ika.mana = 0; ika.Engage(10); Wizard *p_ika = &ika; p_ika ->vie--; ika->Engage(1); 23

Constructeur / Destructeur Initialisation préalable des données avant toute utilisation de lobjet mettre les PV à 20 avoir un magicien vivant Constructeur : appelé à la création de lobjet Destructeur : appelé à la destruction 24

Constructeur / Destructeur class Wizard { public: Wizard() { etat = true; vie = 20; mana = 0; } ~Wizard() { } }; 25

Allocation dynamique de mémoire malloc et free non adaptés (besoin dappel du contructeur) p = new T; donne un pointeur vers une zone de la mémoire pour stocker un objet du type T delete p; déclare la mémoire allouée comme inutile. A MANIER AVEC PRECAUTION 1 NEW = 1 DELETE 26

Membres privés / publiques public / private / protected Encapsulation : cacher des membres à lextérieur sassurer quils ne seront pas modifiés création dune interface utilisateur de lobjet 27

Pour épater les voisins 28

Dérivation Créer un objet plus spécifique à partir dun objet de base. Wizard > WhiteWizard ou BlackWizard (Wizard&)Mon_WhiteWizardAMoi; (WhiteWizard&)Mon_WizardAMoi; 29

Dérivation class WhiteWizard:Wizard { public: void Heal(); } Wizard w; WhiteWizard ww; ww.Engage(1); ww.Attaque(w); w.Engage(2); w.Attaque(ww); 30

Dérivation Wizard *p_w = &ww; p_w->Engage(3);// OK p_w->Heal();// NOK 31

Fonctions virtuelles WhiteWizard, BlackWizard, MarieWizard ne se soignent pas de la même façon et on veux que tout Wizard puisse se soigner. On utilise des fonctions qui peuvent être redéfinies dans les classes dérivées : les fonctions virtuelles 32

Fonctions virtuelles class Wizard { public: virtual void Heal() { vie++; } class WhiteWizard { public: virtual void Heal() { SummonAura(); Wizard::Heal(); } }; 33

Fonction virtuelle pure la contrainte en plus ! class Wizard { public: virtual void Heal() = 0; }; Rend la classe de base abstraite. 34

Surcharge(bis) Surcharge des fonctions et des opérateurs possible Friend (non explicité ici) exemple : matrices 35

Comment éviter de refaire des choses déjà (bien) faites 36

STL Standard Template Library Bibliothèque standard (dans la norme C++) offre des types et des fonctions utiles. Dans le namespace std:: Conteneurs 37

En vrac … string vector list map set … 38

Notion ditérateur Permet de parcourir le conteneur Syntaxe unifiée Similaire aux pointeurs Exemples 39

Pourquoi utiliser la STL ? Réinventer la roue ??? Eviter les bugs (fuites de mémoire principalement) Simplicité dutilisation Efficacité Ecriture du code Code 40

Apres cette courte présentation … A vos compilateurs ! 41