Structures de données IFT-10541 Abder Alikacem Espace de nommage Département d’informatique et de génie logiciel Édition Septembre 2009.

Slides:



Advertisements
Présentations similaires
Le langage C++ Les boucles.
Advertisements

Exercice 1 1 (père) et 1 (fils) 1 (père) et 0 (fils)
1 Une introduction à Java IFT 287 (Semaine 1). 2 Java - Historique Développé par Sun Microsystems en 1994 –Inventeur James Gosling (canadien!) Objectif.
POO-L3 H. Fauconnier1 Chapitre IV 1. classe Object, clonage 2. interfaces 3. classes internes et imbriquées.
Premier cours (23 septembre). Cours programmation- orientée objet en Java Licence dinformatique Hugues Fauconnier
Programme de baccalauréat en informatique Algorithmique et programmation IFT-1001 Thierry EUDE Hatem Mahbouli Laboratoire #12 Département dinformatique.
Structures de données IFT-2000
Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006.
IFT-2000: Structures de données Plan de cours Théorie du contrat Types abstraits Dominic Genest, 2009.
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-2000
Structures de données IFT-2000 Abder Alikacem Espace de nommage Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
Structures de données IFT-2000 Abder Alikacem Introduction au cours Semaine 1 Département dinformatique et de génie logiciel Édition Septembre 2009.
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.
Structures de données IFT-10541
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem La librairie STL du C++ Département dinformatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-2000
Structures de données IFT-2000
Structures de données IFT Abder Alikacem Gestion des exceptions Département dinformatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-10541
Structures de données IFT-2000
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Sous-séquence de somme maximale (Algo#4). Algorithme retour arrière. Département dinformatique et de génie.
Structures de données IFT-10541
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 7 : Classes et fonctions paramétrables Département.
Conteneurs STL.
1 Les paquetages («packages»). 2 L'objectif avec les paquetages («packages») est de rendre accessibles aux utilisateurs des classes définies par d'autres.
Introduction au C++ héritage / polymorphisme
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.
CSI1502 Principes fondamentaux en conception des logiciels
IFT-2000: Structures de données Piles et files Dominic Genest, 2009.
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 6. Gestion des erreurs et des exceptions : Fonctionnement.
Structures de données IFT-2000
IFT Structures de données Abder Alikacem Département dinformatique et de génie logiciel.
Structures de données IFT-10541
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT Abder Alikacem Gestion des exceptions Module 2 Département dinformatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-2000
Structures de données IFT Abder Alikacem Linéarisation des matrices Département dinformatique et de génie logiciel Édition septembre 2009.
Structures de données IFT-2000 Abder Alikacem Semaine 12 (2 ième partie) Les B-arbres Département d’informatique et de génie logiciel Édition septembre.
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.
Structures de données IFT Abder Alikacem Semaine 10 Les arbres SPLAY Département dinformatique et de génie logiciel Édition septembre
Structures de données IFT-2000 Abder Alikacem Semaine 11 Gestion des arbres binaires de tri et de recherche. Les arbres cousus. Les arbres n-aires Département.
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.
Une introduction à Java
Structures de données IFT-2000 Abder Alikacem La récursivité Département d’informatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-10541
Analyse d’algorithmes
Structures de données IFT-10541
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
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Introduction Semaine 1 Département d’informatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT Abder Alikacem Semaine 2 Tests sur les pointeurs Département d’informatique et de génie logiciel Édition Janvier 2009.
Faculté Polytechnique de Mons
Héritage multiple En langage C++, il est possible d’utiliser l’héritage multiple. Il permet de créer des classes dérivées à partir de plusieurs classes.
Les surcharges d'opérateurs
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.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
Ecrire 10 fois "Bonjour" sur 10 lignes différentes
Langage de programmation
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Laboratoire #1 Département d’informatique et de génie logiciel Édition Septembre 2009.
Coding party Écrire un programme qui élève un nombre au carré Écrire un programme qui teste si un nombre est pair Écrire un programme qui calcule la factorielle.
Transcription de la présentation:

Structures de données IFT Abder Alikacem Espace de nommage Département d’informatique et de génie logiciel Édition Septembre 2009

Plan Spécification Utilisation Implémentation Using namespace

Encapsulation: espace de nommage namespace permet de définir un espace denommage, i.e. un module (un paquetage en Java). Spécification namespace pileDeChar { // interface dans un fichier Pile.h void empiler( char ) ; char depiler() ; bool estVide() ; }

Encapsulation: espace de nommage Utilisation Un fichier Test-pile.C peut alors utiliser l’interface : #include "pile.h" #include int main() { pileDeChar::empiler( ’x’ ) ; if (pileDeChar::depiler() != ’x’) std::cerr << "impossible\n." ; } Le préfixe pileDeChar:: indique que empiler() et depiler() sont ceux du module pileDeChar.

Encapsulation: espace de nommage Implémentation L’implémentation peut être donnée lors de la spécification (dans le fichier Pile.h) : namespace pileDeChar { const int tailleMax = 200 ; char laPile [ tailleMax ] ; int sommet = 0 ; void empiler ( char c ) { //Attention, pas de contrôle de débordement laPile[ sommet ] = c ; ++sommet ; } char depiler() {// Attention, pas de contrôle de débordement return laPile[ --sommet ] ; } bool estVide() {return sommet == 0 ;} }

Encapsulation: espace de nommage Implémentation Il est possible de donner l’implémentation d’une fonction séparément (ici dans Pile.C), en préfixant le nom de la fonction par l’identificateur de son espace de nommage : #include "Pile.h" namespace pileDeChar { const int tailleMax = 200 ; char laPile [ tailleMax ] ; int sommet = 0 ; } int pile_de_char::depiler() {// contrôle de débordement... return pileDeChar::laPile[ --sommet ] ; } void pileDeChar::empiler ( char c ) {... } ; bool pileDeChar::estVide ( ) {... } ;

Encapsulation: espace de nommage Using namespace Il est possible de spécifier que tous les noms doivent également être cherchés dans un namespace donné. Le préfixage par pileDeChar:: peut alors être omis si il n’y a pas d’ambiguïté. int main() { pileDeChar::empiler(’a’); using namespace pileDeChar; depiler(); return 0; }

Encapsulation: espace de nommage Koenig lookup Une fonctionnalité intéressante des espaces de nommage est le “Koenig lookup” : lors d’un appel à une fonction le type des arguments permet parfois de lever l’ambiguïté. Ceci peut être très utile pour faire des fonctions génériques modifiables par la suite (puisque un namespace est une structure ouverte à laquelle il est toujours possible d’ajouter des données ou des méthodes).

Encapsulation: espace de nommage Koenig lookup Exemple #include namespace Listes { struct TypeDeDonnees { std::list valeurs; }; void affiche(TypeDeDonnees l) { std::cout << "Listes\n"; } } namespace Vecteurs { struct TypeDeDonnees { std::vector valeurs; }; void affiche(TypeDeDonnees l) { std::cout << "Vecteurs\n"; } } int main() { Vecteurs::TypeDeDonnees v; // Vecteurs::affiche est trouvée, même sans ‘‘using’’, // grâce à son paramètre de type Vecteurs::TypeDeDonnees. affiche( v ) ; return 0; }