Programmation orientée objet : le cas de C++

Dimension: px
Commencer à balayer dès la page:

Download "Programmation orientée objet : le cas de C++"

Transcription

1 Ecole Doctorale MathIf Programmation orientée objet : le cas de C++ Violaine Louvet 1 1 ICJ - CNRS Année

2 Objectifs de ce cours Connaître et comprendre les concepts de la programmation orientée objet. Connaître les patrons de conception les plus importants. Assimiler les notions principales du C++. Comprendre l utilisation du C++ en calcul scientifique.

3 Sommaire 1 Introduction Langages et paradigmes de programmation Conception orientée objet 2 Concepts fondamentaux Objets, classes Encapsulation Héritage Polymorphisme 3 Design Patterns Présentation Quelques exemples 4 Le cas de C++ Elements préalables Classes Surcharge des opérateurs Héritage Templates Exceptions 5 C++ et calcul scientifique 6 Références

4 Sommaire 1 Introduction Langages et paradigmes de programmation Conception orientée objet 2 Concepts fondamentaux Objets, classes Encapsulation Héritage Polymorphisme 3 Design Patterns Présentation Quelques exemples 4 Le cas de C++ Elements préalables Classes Surcharge des opérateurs Héritage Templates Exceptions 5 C++ et calcul scientifique 6 Références

5 Sommaire 1 Introduction Langages et paradigmes de programmation Conception orientée objet 2 Concepts fondamentaux Objets, classes Encapsulation Héritage Polymorphisme 3 Design Patterns Présentation Quelques exemples 4 Le cas de C++ Elements préalables Classes Surcharge des opérateurs Héritage Templates Exceptions 5 C++ et calcul scientifique 6 Références

6 Langages Classement Langage Popularité 1 Java % 2 C % 3 PHP % 4 C % 5 (Visual) Basic 7.051% 6 C# 5.015% 7 Python 4.314% 8 Perl 3.600% 29 Fortran 0.377% Source :

7 Langages Classement Langage Popularité 1 Java % 2 C % 3 PHP % 4 C % 5 (Visual) Basic 7.051% 6 C# 5.015% 7 Python 4.314% 8 Perl 3.600% 29 Fortran / Fortran 0.377% Source : Langage objet Langages procéduraux

8 Les différents types de langages Langage compilé : traduit en instructions lisibles par la machine une fois pour toutes. Fortran, C, C++... Langage semi-interprété : il existe un compilateur traduisant le programme non pas en «langage-machine» mais en un code intermédiaire assez analogue à de l assembleur (pseudo-code, p-code, Byte Code). Java, Python... Langage interprété : converti en instructions exécutables par la machine au moment de son exécution. PHP, Perl... Typage explicite ou implicite : explicite quand les types apparaissent explicitement dans le code source du programme ; implicite : déterminé par le compilateur ou l interprète. Typage fort ou faible : Plus un typage est fort, plus les règles du langage sont strictes et interdisent dès la compilation les manipulations entre données de types différents. Typage statique ou dynamique : statique quand la vérification des types se fait dès la phase de compilation, et dynamique lorsque celle-ci est faite durant l exécution.

9 Les différentes méthodes de programmation On peut identifier 5 paradigmes de programmation : Programmation impérative (Pascal, Fortran, C++/C,...) : décrit les opérations en termes d états du programme et de séquences d instructions exécutées par l ordinateur pour modifier l état du programme. Programmation fonctionnelle (Lisp, ML, Scheme,...) : considère le calcul en tant qu évaluation de fonctions mathématiques et rejette le changement d état et la mutation des données. Programmation objet (Smalltalk, Eiffel, Java,...) : consiste en la définition et l assemblage de briques logicielles appelées objets. Programmation logique (Prolog,...) : définit des règles de logique mathématique au lieu de fournir une succession d instructions. Programmation parallèle (MPI,...) : programmation par échange de messages. un langage peut être fondé sur plusieurs de ces paradigmes.

10 Sommaire 1 Introduction Langages et paradigmes de programmation Conception orientée objet 2 Concepts fondamentaux Objets, classes Encapsulation Héritage Polymorphisme 3 Design Patterns Présentation Quelques exemples 4 Le cas de C++ Elements préalables Classes Surcharge des opérateurs Héritage Templates Exceptions 5 C++ et calcul scientifique 6 Références

11 Du fonctionnel à l objet Approche Fonctionnelle L important c est les traitements diviser pour règner réutilisation difficile, évolution difficile... Approche objet L important c est les objets monde réel modèle du monde réutilisation et évolution simplifiée Principe de réification Matérialiser un concept par un objet. Réifier un concept permet de le manipuler concrètement.

12 Conception orientée objet Utiliser un langage orienté objet ne veut pas dire que l on fait de la programmation par objet correcte. Conception orientée objet Calquer le découpage de la représentation informatique sur les entités physiques mises en jeu dans les processus réels que l on cherche à modéliser ou à automatiser Privilégier une approche architecturale pour implémenter des solutions à des problèmes plutôt qu une approche fonctionnelle visant à résoudre un problème posé Stabilité de la modélisation par rapport aux entités du monde réel Construction itérative facilitée par le couplage faible entre composants Possibilités de réutiliser des éléments d un développement à un autre...

13 Langage de modélisation : UML Langage couramment employé pour décrire la structure d une application dans le monde objet. UML = Unified Modeling Langage. Langage graphique permettant d exprimer différents aspects structurant l application. Chaque type de diagramme permet de modéliser un point de vue particulier de nos objets, des besoins utilisateur, des contraintes du système, etc. : diagrammes de classes, diagrammes de cas d utilisation, diagrammes de séquences...

14 Sommaire 1 Introduction Langages et paradigmes de programmation Conception orientée objet 2 Concepts fondamentaux Objets, classes Encapsulation Héritage Polymorphisme 3 Design Patterns Présentation Quelques exemples 4 Le cas de C++ Elements préalables Classes Surcharge des opérateurs Héritage Templates Exceptions 5 C++ et calcul scientifique 6 Références

15 5 concepts clés abstraction encapsulation modularité réutilisation polymorphisme

16 Sommaire 1 Introduction Langages et paradigmes de programmation Conception orientée objet 2 Concepts fondamentaux Objets, classes Encapsulation Héritage Polymorphisme 3 Design Patterns Présentation Quelques exemples 4 Le cas de C++ Elements préalables Classes Surcharge des opérateurs Héritage Templates Exceptions 5 C++ et calcul scientifique 6 Références

17 Objets Un objet représente un objet ou un concept de la vie réelle. Un objet associe données et traitements en ne laissant visible que l interface de l objet, c est à dire les traitements que l on peut faire dessus. Chaque objet : a un état caractérisé par la valeur de ses attributs ; propose des services sous la forme de méthodes. Les attributs et les méthodes d un objet sont ses membres.

18 Classes La classe décrit le domaine de définition d un ensemble d objets : c est un modèle qui définit les données et les traitements communs à une collection d objets similaires. Chaque objet appartient à une classe. Du point de vue typage, une classe doit être vue comme le type des objets qui seront créés à partir d elle. Tout objet est instance d une classe.

19 Sommaire 1 Introduction Langages et paradigmes de programmation Conception orientée objet 2 Concepts fondamentaux Objets, classes Encapsulation Héritage Polymorphisme 3 Design Patterns Présentation Quelques exemples 4 Le cas de C++ Elements préalables Classes Surcharge des opérateurs Héritage Templates Exceptions 5 C++ et calcul scientifique 6 Références

20 Encapsulation Encapsulation = masquage de l information L objet fournit une relation d encapsulation qui assure à la fois une cohésion interne très forte et un faible couplage avec l extérieur. Facilite la modularité, la réutilisation de code, et la maintenance. La représentation interne peut être modifiée sans affecter l interface : occultation des détails de réalisation. visibilité publique : visible de partout. visibilité privée : visible que pour les méthodes de la classe. visibilité protégée : visible à l intérieur de la classe et dans les classes dérivées.

21 Sommaire 1 Introduction Langages et paradigmes de programmation Conception orientée objet 2 Concepts fondamentaux Objets, classes Encapsulation Héritage Polymorphisme 3 Design Patterns Présentation Quelques exemples 4 Le cas de C++ Elements préalables Classes Surcharge des opérateurs Héritage Templates Exceptions 5 C++ et calcul scientifique 6 Références

22 Héritage L héritage correspond à une extension de l objet (spécialisation) L héritage peut être simple ou multiple. La classe dérivée contient les attributs et les méthodes de sa classe de base. On peut définir de nouveaux attributs et de nouvelles méthodes pour la classe dérivée, qui viennent s ajouter à ceux et celles héritées.

23 Sommaire 1 Introduction Langages et paradigmes de programmation Conception orientée objet 2 Concepts fondamentaux Objets, classes Encapsulation Héritage Polymorphisme 3 Design Patterns Présentation Quelques exemples 4 Le cas de C++ Elements préalables Classes Surcharge des opérateurs Héritage Templates Exceptions 5 C++ et calcul scientifique 6 Références

24 Polymorphisme Capacité d un objet à modifier son comportement propre et celui de ses descendants au cours de l exécution. Polymorphisme ad hoc (ou surcharge). Polymorphisme paramétrique (généricité ou template). Polymorphisme d héritage.

25 Polymorphisme ad hoc Définir des méthodes de même nom dans des classes indépendantes. Permet d avoir des fonctions de même nom, avec des fonctionnalités similaires, dans des classes sans aucun rapport entre elles. La classe Matrice et la classe Vecteur peuvent avoir chacune une fonction afficher. Surcharge d opérateur : définir des opérateurs dont l utilisation sera différente selon le type des paramètres qui leur sont passés. Surcharge de l opérateur + qui réalisera des actions différentes selon qu il s agit d une opération entre deux Vecteurs ou entre deux Matrices.

26 Polymorphisme paramétrique, template Possibilité de définir plusieurs fonctions de même nom mais possédant des paramètres différents (en nombre et/ou en type). On appelle signature le nombre et le type (statique) des arguments d une fonction. C est donc la signature d une méthode qui détermine laquelle sera appelée. Ces paramètres peuvent aussi être le type d autres paramètres (template). La fonction Matrice add(matrice,double) va additionner le double à tous les termes de la matrice. La fonction Matrice add(matrice,matrice) va ajouter deux matrices. La fonction template<t> Matrice add(matrice,t) va ajouter un objet de type T à une matrice.

27 Polymorphisme d héritage Chaque sous classe peut modifier localement le comportement de ses opérations pour considérer le particularisme de son niveau d abstraction.

28 Sommaire 1 Introduction Langages et paradigmes de programmation Conception orientée objet 2 Concepts fondamentaux Objets, classes Encapsulation Héritage Polymorphisme 3 Design Patterns Présentation Quelques exemples 4 Le cas de C++ Elements préalables Classes Surcharge des opérateurs Héritage Templates Exceptions 5 C++ et calcul scientifique 6 Références

29 Sommaire 1 Introduction Langages et paradigmes de programmation Conception orientée objet 2 Concepts fondamentaux Objets, classes Encapsulation Héritage Polymorphisme 3 Design Patterns Présentation Quelques exemples 4 Le cas de C++ Elements préalables Classes Surcharge des opérateurs Héritage Templates Exceptions 5 C++ et calcul scientifique 6 Références

30 Design Patterns = patrons de conception Description d une solution classique à un problème récurrent suivant le paradigme objet. Indépendants du langage de programmation. Description de procédés de conception généraux. Capitalisation de l expérience appliquée à la conception logicielle. Guide/catalogue de solutions Trois familles de patrons de conceptions selon leur utilisation : de construction : définissent comment faire l instanciation et la configuration des classes et des objets. structuraux : définissent comment organiser les classes d un programme dans une structure plus large (séparant l interface de l implémentation). comportementaux : définissent comment organiser les objets pour que ceux-ci collaborent (distribution des responsabilités) et expliquent le fonctionnement des algorithmes impliqués.

31 Sommaire 1 Introduction Langages et paradigmes de programmation Conception orientée objet 2 Concepts fondamentaux Objets, classes Encapsulation Héritage Polymorphisme 3 Design Patterns Présentation Quelques exemples 4 Le cas de C++ Elements préalables Classes Surcharge des opérateurs Héritage Templates Exceptions 5 C++ et calcul scientifique 6 Références

32 Singleton Patron de création restreindre l instanciation d une classe à un seul objet. Il est utilisé lorsque l on a besoin d exactement un objet pour coordonner des opérations dans un système. Exemple : Ne définir qu un seul domaine géométrique dans un code de calcul.

33 Fabrique Patron de création La fabrique a pour rôle l instanciation d objets divers dont le type n est pas prédéfini : les objets sont créés dynamiquement en fonction des paramètres passés à la fabrique. Exemple : pouvoir créer différents type de matrices.

34 Proxy Patron de structure Le proxy sert à gérer l accès à un objet, il agit comme un intermédiaire entre la classe utilisatrice et l objet. Exemple : Interfaçage de code fortran.

35 Adaptateur Patron de structure Convertir une interface existante afin de la rendre compatible avec une autre interface Exemple : Gèrer plusieurs type de sortie d un code avec utilisation de bibliothèques déjà existantes.

36 Itérateur Patron comportemental Un itérateur est un objet qui permet de parcourir tous les éléments contenus dans un autre objet, le plus souvent un conteneur (liste, arbre, etc.). Exemple : Pouvoir parcourir les éléments d une matrice creuse.

37 Sommaire 1 Introduction Langages et paradigmes de programmation Conception orientée objet 2 Concepts fondamentaux Objets, classes Encapsulation Héritage Polymorphisme 3 Design Patterns Présentation Quelques exemples 4 Le cas de C++ Elements préalables Classes Surcharge des opérateurs Héritage Templates Exceptions 5 C++ et calcul scientifique 6 Références

38 Sommaire 1 Introduction Langages et paradigmes de programmation Conception orientée objet 2 Concepts fondamentaux Objets, classes Encapsulation Héritage Polymorphisme 3 Design Patterns Présentation Quelques exemples 4 Le cas de C++ Elements préalables Classes Surcharge des opérateurs Héritage Templates Exceptions 5 C++ et calcul scientifique 6 Références

39 Introduction Le langage C est un langage très efficace mais de bas niveau. Le langage C++, développé par Bjarne Stroustrup, permet la programmation sous de multiples paradigmes et notamment l objet. C++ (opérateur d incrémentation en C) est un niveau au-dessus du C. Le langage C++ est normalisé par l ISO. La dernière normalisation date de On peut considérer que C++ «est du C» avec un ajout de fonctionnalités. Remarque importante : certains programmes syntaxiquement corrects en C ne le sont pas en C++.

40 Fichiers sources Fichiers d en-tête : «headers» : d extension.h ou.hpp (mais la plupart des entêtes systèmes du C++ standard n ont plus d extension du tout). contiennent généralement les prototypes de différentes fonctions, structures et classes. Fichiers sources : Extension.cpp,.cxx,.cc, parfois.c. Contiennent la définition (l implémentation) des différentes fonctions et méthodes définies dans les fichiers d en-tête. Leur compilation produit des fichiers objets (extension *.o). Ils utilisent les fichiers d en-tête : #include " nomdefichier. h " #include <monfichier >

41 Pointeurs Tout objet manipulé par l ordinateur est stocké dans sa mémoire à un emplacement appelé adresse. Une adresse est une valeur qui peut être stocké dans une variable appelé pointeur. Le pointeur a un type construit à partir du type de l objet pointé : i n t ip ; / / i p est un pointeur d e n t i e r Déréférencement : accès à l objet pointé. cout << &ip ; / / e c r i t sur la sortie standard la valeur / / contenu dans l a case pointee par l e p o i n t e u r i p Indirection : récupérer l adresse d un objet. i n t i = 0; i n t ip2 = & i ; / / ip2 pointe sur l adresse de i

42 Références Une référence peut être vue comme un alias d une variable. Une référence doit obligatoirement être initialisée lors de sa déclaration. i n t i ; i n t & r = i ; / / r est une reference sur i r = j ; / / copie l a valeur de j dans i ( et dans r ) Le compilateur la remplace par le nom de la variable actuellement assignée dans le code après avoir déroulé les traitements mais avant de traduire ce code en binaire. Une variable et ses différentes références ont la même adresse.

43 Références Principalement utilisées pour passer des paramètres aux fonctions (ou référencer des résultats de retour de fonctions). : Passage par valeur : copie dans une variable locale. void t e s t ( int i ) { i = 2; return ; } i n t main ( void ) { } i n t i = 3; t e s t ( i ) ; cout << i << endl ; / /?? return 0; Passage par référence : pas de copie. void t e s t ( int& i ) { i = 2; return ; } i n t main ( void ) { } i n t i = 3; t e s t ( i ) ; cout << i << endl ; / /?? return 0;

44 Références Principalement utilisées pour passer des paramètres aux fonctions (ou référencer des résultats de retour de fonctions). : Passage par valeur : copie dans une variable locale. void t e s t ( int i ) { i = 2; return ; } i n t main ( void ) { } i n t i = 3; t e s t ( i ) ; cout << i << endl ; / / a f f i c h e 3 return 0; Passage par référence : pas de copie. void t e s t ( int& i ) { i = 2; return ; } i n t main ( void ) { } i n t i = 3; t e s t ( i ) ; cout << i << endl ; / / a f f i c h e 2 return 0;

45 Entrées/Sorties En-tête iostream de la bibliothèque standard C++ : classes extrêmement puissantes permettant de manipuler les flux d entrée / sortie. Surcharge de l opérateur << (opérateur d insertion) : écritures sur un flux de données Surcharge de l opérateur >> (opérateur d extraction) : lecture d une nouvelle donnée dans le flux d entrée. Trois instances particulières des classes d entrée / sortie : cin, instance de la classe istream : entrée standard. cout, instance de la classe ostream : sortie standard. cerr : écriture des messages d erreur des programmes. Il est possible d effectuer plusieurs entrées ou plusieurs sorties successivement sur un même flux. endl : signale une fin de ligne et effectue un saut de ligne lorsqu il est employé sur un flux de sortie.

46 Exemple d Entrées/Sorties # include < iostream > using namespace std ; i n t main ( void ) { i n t i ; / / L i t un e n t i e r depuis l entree standard : c i n >> i ; / / A f f i c h e cet e n t i e r et l e s u i v a n t : cout << i << " " << i +1 << endl ; return 0; }

47 Allocation dynamique de mémoire Les pointeurs sont utilisés pour créer un nombre quelconque de variables, ou des variables de taille quelconque, en cours d exécution du programme. En C : utilisatin des fonctions malloc(taille) et free(pointeur). En C++ : opérateurs spécifiques new, delete. Si les objets créés sont des instances de classes, le constructeur de ces classes sera automatiquement appelé lors de leur initialisation (voir plus loin). int i = new int ; / / Equivalent a ( i n t ) malloc ( s i z e o f ( i n t ) ). delete i ; / / Equivalent a f r e e ( p i ) ; i n t Tableau=new i n t [ ] ; / / A l l o c a t i o n d un tableau de 1000 e n t i e r s delete [ ] Tableau ; / / D e s t r u c t i o n du tableau

48 Sommaire 1 Introduction Langages et paradigmes de programmation Conception orientée objet 2 Concepts fondamentaux Objets, classes Encapsulation Héritage Polymorphisme 3 Design Patterns Présentation Quelques exemples 4 Le cas de C++ Elements préalables Classes Surcharge des opérateurs Héritage Templates Exceptions 5 C++ et calcul scientifique 6 Références

49 Classes Dans le fichier en-tête Vecteur.h : class Vecteur { public : void I n i t i a l i s e r ( double ) ; private : double Tab ; i n t Size ; } ; Dans le fichier source Vecteur.cc (à l aide de l opérateur de résolution de portée) : #include " Vecteur. h " void Vecteur : : I n i t i a l i s e r ( double d ) { for ( i n t i = 0 ; i < Size ; i ++) Tab [ i ] = d ; }

50 Constructeurs Fonction membre particulière de la classe. Il peut y aoir plusieurs constructeurs avec différents paramètres. Toujours appelée lors de la création d une nouvelle instance d une classe. Constructeur par défaut : c est le constructeur sans argument. Si aucun constructeur n est présent explicitement dans la classe, il est généré par le compilateur. Constructeur par copie : c est un constructeur à un argument dont le type est celui de la classe. class Vecteur { public : / / Constructeur par defaut Vecteur ( ) ; Vecteur ( int ) ; / / Constructeur / / Constructeur par copie Vecteur ( const Vecteur & ) ;... #include " Vecteur. h " Vecteur : : Vecteur ( ) { } Vecteur : : Vecteur ( i n t n ) : Size ( n ) { Tab = new double [ n ] ; } Vecteur : : Vecteur ( Vecteur& v ) { Size = v. getsize ( ) ; Tab = new double [ Size ] ; }

51 Destructeur Fonction membre particulière de la classe. S il n est pas explicitement présent dans la classe, il sera généré par le compilateur. Le destructeur est appelé lorsqu une instance d une classe est détruite. class Vecteur { public : ~Vecteur ( ) ;... #include " Vecteur. h " Vecteur : : ~ Vecteur ( ) { i f ( Tab!= NULL) delete [ ] Tab ; }...

52 Accesseurs class Vecteur { Fonctions membres qui ne modifient pas l état de l objet. Elles sont déclarées const. Le compilateur signale une erreur si une fonction de ce type cherche à modifier une variable membre. public : int getsize ( ) const ;... #include " Vecteur. h " i n t Vecteur : : getsize ( ) const { return this >Size ; }...

53 Déclaration et utilisation des objets # include < iostream > #include " Vecteur. h " using namespace std ; i n t main ( void ) { i n t n = 10; / / On cree un o b j e t Vecteur en appelant / / l e c o n s t r u c t e u r avec un argument e n t i e r Vecteur vect ( n ) ; / / On i n i t i a l i s e l e Vecteur a 0 vect. I n i t i a l i s e r ( 0. ) ; / / Affichage de l a t a i l l e : cout << " T a i l l e du vecteur : " << vect. getsize ( ) << endl ; return 0; }

54 Membres statiques Membres partagés par tous les objets de la classe. Non statiques : variables et méthodes d instances. Statiques : variables et méthodes de classe. Il n en existe qu un seul exemplaire par classe. Il faut créer et initialiser la donnée membre statique (ce qui n est pas fait par le constructeur). #include " Vecteur. h " i n t Vecteur : : Nvect = 0; class Vecteur { private : s t a t i c i n t Nvect ;... Vecteur : : Vecteur ( ) { / / on incremente l a valeur dans / / chacun des c o n s t r u c t e u r s NVect ++; } Vecteur : : ~ Vecteur ( ) {... / / on decremente l a valeur Nvect ; }...

55 Amis Une fonction ou une classe amie a le droit d accéder à tous les membres de la classe (publics ou privés). Elle doit être déclarée ou définie dans la classe qui accorde le droit d accès. class Vecteur { public : friend void a f f i c h e r ( const Vecteur & ) ;... #include " Vecteur. h " #include <iostream > using namespace std ; void a f f i c h e r ( const Vecteur &v ) { for ( i n t i = 0 ; i < v. Size ; i ++) cout << i << " " << v. Tab [ i ] << end ; }...

56 Sommaire 1 Introduction Langages et paradigmes de programmation Conception orientée objet 2 Concepts fondamentaux Objets, classes Encapsulation Héritage Polymorphisme 3 Design Patterns Présentation Quelques exemples 4 Le cas de C++ Elements préalables Classes Surcharge des opérateurs Héritage Templates Exceptions 5 C++ et calcul scientifique 6 Références

57 Surcharge des opérateurs Tous les opérateurs de C++ peuvent être surchargés sauf : «.», «.*», «: :», «?», «:», «sizeof». Fichier Vecteur.cc #include " Vecteur. h " Fichier Vecteur.h class Vecteur { public : double operator [ ] ( const i n t ) const ;... double Vecteur : : operator [ ] ( const i n t i ) const { return Tab [ i ] ; }... i n t main ( void ) {... for ( i n t i = 0 ; i < vect. getsize ( ) ; i ++) cout << vect [ i ] << endl ;... }...

58 Surcharge des opérateurs L exemple précédent ne permet pas de modifier un Vecteur à l aide de l opérateur crochet. Fichier Vecteur.cc #include " Vecteur. h " Fichier Vecteur.h class Vecteur { public : double& operator [ ] ( const i n t ) ;... double& Vecteur : : operator [ ] ( const i n t i ) { return Tab [ i ] ; }... i n t main ( void ) {... for ( i n t i = 0 ; i < vect. getsize ( ) ; i ++) vect [ i ] = 0.3 i ;... }...

59 Sommaire 1 Introduction Langages et paradigmes de programmation Conception orientée objet 2 Concepts fondamentaux Objets, classes Encapsulation Héritage Polymorphisme 3 Design Patterns Présentation Quelques exemples 4 Le cas de C++ Elements préalables Classes Surcharge des opérateurs Héritage Templates Exceptions 5 C++ et calcul scientifique 6 Références

60 Héritage 3 types d héritage (public, protégé, privé) qui définissent les droits d accès aux membres de la classe de base. Le plus souvent : héritage public : les membres de la classe de base conservent leur accès (privé, protégé et public). Fichier Matrice.h class Matrice { public : void I n i t i a l i s e r ( double ) ; protected : double Tab ; private : i n t Size ; } ; Fichier MatricePleine.h #include Matrice. h class MatricePleine : public Matrice { } ;

61 Construction, destruction dans les liens d héritage L activation d un constructeur commence par les appels des constructeurs de chacune de ses classes de bases directes, dans l ordre de déclaration de ces classes de bases directes. Sont ensuite exécutées les instructions qui composent le corps du constructeur. L exécution d un destructeur commence par l exécution des instructions présentent dans le corps du destructeur. Puis appels des destructeurs des classes de base dans l ordre inverse des déclarations. Fichier MatricePleine.h Fichier Matrice.h class Matrice { public : Matrice ( int, i n t ) ; ~Matrice ( ) ; protected : i n t Size1, Size2 ; } ; #include Matrice. h class MatricePleine : public Matrice { public : MatricePleine ( int, int ) ; ~MatricePleine ( ) ; private : double Tab ; } ;

62 Construction, destruction dans les liens d héritage Fichier Matrice.cc Fichier MatricePleine.cc #include MatricePleine. h #include Matrice. h #include <iostream > using namespace std ; Matrice : : Matrice ( i n t n1, i n t n2 ) : Size1 ( n1 ), Size2 ( n2 ) { } Matrice : : ~ Matrice ( ) { cout << Destruction Matrice << endl ; } Fichier main.cc #include " MatricePleine. h " i n t main ( void ) { MatricePleine mat ( 5, 5 ) ; return ( 0 ) ; } MatricePleine : : MatricePleine ( i n t n1, i n t n2 ) : Matrice ( n1, n2 ) { Tab = new double [n2 ] ; for ( i n t i = 0 ; i < n2 ; i ++) Tab [ i ] = new double [ n1 ] ; } MatricePleine : : ~ MatricePleine ( ) { cout << Destruction MatricePleine << endl ; for ( i n t i = 0 ; i < n2 ; i ++) delete [ ] Tab [ i ] ; delete [ ] Tab ; } Sortie standard D e s t r u c t i o n MatricePleine D e s t r u c t i o n Matrice

63 Polymorphisme : redéfinition d une fonction membre Les membres publics d une classe de base peuvent être atteints à travers un objet de la classe dérivée. Fichier Matrice.h Fichier MatricePleine.h class Matrice {... public : void a f f i c h e r ( ) const ;... } ; Fichier Matrice.cc... void Matrice : : a f f i c h e r ( ) const { cout << " Affichage d une Matrice " << endl ; cout << " Dimensions : " << Size1 << " x " << Size2 << endl ; } Fichier main.cc... MatricePleine matp ( 5, 5 ) ; matp. a f f i c h e r ( ) ; Matrice mat ( 4, 4 ) ; mat. a f f i c h e r ( ) ; class MatricePleine : public Matrice {... public : void a f f i c h e r ( ) const ;... } ; Fichier MatricePleine.cc... void MatricePleine : : a f f i c h e r ( ) const { cout << " Affichage d une M atricepleine " << endl ; Matrice : : a f f i c h e r ( ) ; } Sortie standard Affichage d une MatricePleine Affichage d une Matrice Dimensions : 5x5 Affichage d une Matrice Dimensions : 4x4

64 Polymorphisme : fonction membre virtuelle Une fonction virtuelle permet aux classes dérivées de remplacer l implémentation fournie par la classe de base. Le compilateur s assure que la méthode remplacée est bien appelée quand l objet en question est bien du type de la classe dérivée, même si l objet est accédé par un pointeur de base plutôt qu un pointeur dérivé. Les destructeurs peuvent être déclarés virtuels. Fichier Matrice.h... public : v i r t u a l ~Matrice ( ) ; v i r t u a l void p r i n t ( ) const ;... Fichier MatricePleine.h... public : void p r i n t ( ) const ;...

65 Polymorphisme : fonction membre virtuelle Fichier Matrice.cc Fichier MatricePleine.cc... void Matrice : : p r i n t ( ) const { cout << " Print d une Matrice " << endl ; }... void MatricePleine : : p r i n t ( ) const { cout << " Print d une MatricePleine " << endl ; } Fichier main.cc... Matrice pmatp ; pmatp = new MatricePleine ( 3, 3 ) ; pmatp >p r i n t ( ) ; Matrice pmat ; pmat = new Matrice ( 2, 2 ) ; pmat >p r i n t ( ) ;... Sortie standard P r i n t d une MatricePleine r i n t d une Matrice

66 Classe abstraite Les fonctions virtuelles apparaissent en général dans des classes à des niveaux d abstraction élevés qui peuvent rendre leur implémentation non vraisemblable. Ces classes représentent des abstractions. Leurs méthodes doivent être dans ce cas des contraintes pour leurs classes dérivées : on les définit virtuelles pures. Une classe ayant une ou des méthodes virtuelles pures est abstraite. On ne peut pas les instancier.

67 Sommaire 1 Introduction Langages et paradigmes de programmation Conception orientée objet 2 Concepts fondamentaux Objets, classes Encapsulation Héritage Polymorphisme 3 Design Patterns Présentation Quelques exemples 4 Le cas de C++ Elements préalables Classes Surcharge des opérateurs Héritage Templates Exceptions 5 C++ et calcul scientifique 6 Références

68 Templates Un template (modèle) définit une famille de fonctions ou de classes paramétrée par une liste d identificateurs qui représentent des valeurs et des types. Les paramètres des templates doivent être connus à la compilation. Les fichiers d en-tête doivent contenir non seulement la déclaration, mais également la définition complète des template. Les classes ou fonction template sont (re)compilée pour chaque type d instance présent dans le programme.

69 Templates de fonction Fichier main.cc template <class T> T Min ( T x, T y ) { return x<y? x : y ; } i n t main ( void ) { i n t i = 3; i n t j = 6; cout << Min de i et j << Min<int >( i, j ) << endl ; return ( 0 ) ; } Sortie standard Min de i et j 3

70 Templates de classes Fichier Vecteur.h #include <iostream > using namespace std ; template <class T> class Vecteur { public : Vecteur ( i n t ) ; ~Vecteur ( ) ; void I n i t i a l i s e r ( T ) ; void p r i n t ( ) ; private : i n t Size ; T Tab ; } ; template <class T> Vecteur <T>:: Vecteur ( i n t n ) : Size ( n ) { Tab = new T [ Size ] ; } template <class T> void Vecteur <T > : : I n i t i a l i s e r ( T dat ) { for ( i n t i = 0 ; i < Size ; i ++) Tab [ i ] = dat ; } template <class T> void Vecteur <T > : : p r i n t ( ) { for ( i n t i = 0 ; i < Size ; i ++) cout << i << " " << Tab [ i ] << endl ; } template <class T> Vecteur <T>::~ Vecteur ( ) { delete [ ] Tab ; }

71 Templates de classes Fichiermain.c #include " Vecteur. h " using namespace std ; i n t main ( void ) { Vecteur <int > t i n t ( 3 ) ; t i n t. I n i t i a l i s e r ( 4 ) ; t i n t. p r i n t ( ) ; Vecteur <double> t d b l ( 4 ) ; t d b l. I n i t i a l i s e r ( 6. 5 ) ; t d b l. p r i n t ( ) ; Sortie standard } return ( 0 ) ;

72 Sommaire 1 Introduction Langages et paradigmes de programmation Conception orientée objet 2 Concepts fondamentaux Objets, classes Encapsulation Héritage Polymorphisme 3 Design Patterns Présentation Quelques exemples 4 Le cas de C++ Elements préalables Classes Surcharge des opérateurs Héritage Templates Exceptions 5 C++ et calcul scientifique 6 Références

73 Exceptions : principes Interruption de l exécution du programme à la suite d un événement particulier. Le C++ supporte les exceptions logicielles : permet de gérer les erreurs qui surviennent lors de l exécution des programmes. Lorsqu une telle erreur survient : lancement d une exception. L exécution normale du programme s arrête, le contrôle est passé à un gestionnaire d exception. Le gestionnaire d exception gttrape l exception.

74 Lancer une exception Lancer une exception = retourner une erreur sous la forme d une valeur (message, code, objet exception) dont le type peut être quelconque (int, char*, classe d exceptions,...). Instruction «throw expression», la valeur de «expression» est supposée décrire l exception. Fichier Vecteur.h... template <class T> class Vecteur {... public : T operator [ ] ( const i n t ) const throw ( i n t ) ; T& operator [ ] ( const i n t ) throw ( i n t ) ;... } ;... template <class T> T Vecteur <T>:: operator [ ] ( const i n t i ) const throw ( i n t ) { i f ( i >= Size ) throw 0; return Tab [ i ] ; } template <class T> T& Vecteur <T>:: operator [ ] ( const i n t i ) throw ( i n t ) { i f ( i >= Size ) throw 0; return Tab [ i ] ; }

75 Attraper une exception Pour attraper une exception, il faut qu un bloc encadre l instruction directement, ou indirectement, dans la fonction même ou dans la fonction appelante, ou à un niveau supérieur. Dans le cas contraire, le système récupère l exception et met fin au programme. Instruction «try{...} catch {...}». Fichiermain.c #include " Vecteur. h " using namespace std ; i n t main ( void ) { Vecteur <double> t d b l ( 4 ) ; t d b l. I n i t i a l i s e r ( 6. 5 ) ; t r y { cout << t d b l [ 5 ] << endl ; } catch ( i n t i e x ) { i f ( i e x == 0) c e r r << Exception : acces hors l i m i t e << endl ; } return ( 0 ) ; } Sortie standard Exception : acces hors l i m i t e

76 Sommaire 1 Introduction Langages et paradigmes de programmation Conception orientée objet 2 Concepts fondamentaux Objets, classes Encapsulation Héritage Polymorphisme 3 Design Patterns Présentation Quelques exemples 4 Le cas de C++ Elements préalables Classes Surcharge des opérateurs Héritage Templates Exceptions 5 C++ et calcul scientifique 6 Références

77 Introduction L optimisation de code fait intervenir des données assez contradictoires : rester «haut niveau» et être le plus efficace possible. Une utilisation «naïve» des facilités du C++ peut donner un code peu performant. De nombreuses bibliothèques optimisés sont des compléments naturels du langage (STL, Boost, Blitz++...). Principaux éléments du C++ scientifique Réduction des objets temporaires polymorphisme statique (template) Traits Expression templates Metaprogrammation

78 Objets temporaires Les objets temporaires sont créés lorsque le langage a besoin d un objet et que celui n est pas nommé Chaque fois qu une fonction doit retourner une valeur (au sens C++) car l objet (la valeur) de retour d une fonction n est pas nommé. Exemple : surcharge de l opérateur + Vecteur u, v,w; w = u+v ; Appel du constructeur de copie qui recopiera la somme u + v dans un objet temporaire t, local à la fonction membre operator + de la classe Vecteur. Cet objet temporaire t est ensuite retourné par valeur, d où un deuxième appel au constructeur de copie. Inacceptable lorsque la taille des objets en question est grande, ce qui est le cas en calcul scientifique.

79 Polymorphisme dynamique Le polymorphisme dynamique, basé sur les fonctions virtuelles a un coût : l appel d une fonction virtuelle est une décision prise pendant l exécution (et consiste en général en des indirections). L appel d une fonction virtuelle ne peut bénéficier du mécanisme «inline» puisque le type exact de l objet n est pas connu au moment de la compilation. Le coût d une fonction virtuelle devient prohibitif quand : le code qu elle contient est petit elle est appelée souvent (par exemple dans une boucle).

80 Polymorphisme dynamique Exemple classique class Matrice { public : v i r t u a l double operator ( ) ( i n t i, i n t j ) = 0; } ; class SymmetricMatrice { public : v i r t u a l double operator ( ) ( i n t i, i n t j ) ; } ; L utilisation de l opérateur «()» dans une boucle pénalisera fortement les performances. Solution : remplacer le polymorphisme dynamique (fonction virtuelle) avec du polymorphisme statique (template).

81 Metaprogramming La meta-programmation consiste à reporter le maximum de décisions dans la phase de compilation. Inconvénients : Temps de compilation nettement accru. La règle de base est que tout doit toujours rester au maximum connu du compilateur. Fonctions = classes/structures / / Fonction qui r e n v o i t son parametre i n t I d e n t i t e ( i n t N) { return N; } unsigned i n t x = I d e n t i t e ( 5 ) ; / / x ne sera connu que lorsque l e programme sera execute / / La meme en meta programme template < i n t N> struct I d e n t i t e { enum { Value = N ; } } ; unsigned i n t x = Identite <5 >:: Value ; / / l a valeur de x est connue de notre compilateur Utiliser l in-lining : l appel à une telle fonction est remplacé par le code correspondant.

82 Metaprogramming Conditions : if/else = structure/classe template <bool Condition > struct Test { } ; template<> struct Test <true > { s t a t i c void Do ( ) { DoSomething ( ) ; } } ; template<> struct Test <false > { s t a t i c void Do ( ) { DoSomethingElse ( ) ; } } ; / / Code h a b i t u e l i f ( Condition ) DoSomething ( ) ; else DoSomethingElse ( ) ; / / Avec l a s t r u c t u r e Test Test <Condition > : : Do ( ) ; Boucles : récursion (pour boucler) et spécialisation (pour s arrêter) template < i n t Begin, i n t End> struct Boucle { s t a t i c void Do ( ) { DoSomething ( ) ; Boucle <Begin + 1, End > : : Do ( ) ; } } ; template < i n t N> struct Boucle <N, N> { s t a t i c void Do ( ) { } } ; / / Methode h a b i t u e l l e for ( i n t i = 5; i < 15; ++ i ) DoSomething ( ) ; / / Avec l a s t r u c t u r e Boucle Boucle <5, 15 >::Do ( ) ;

83 Expression templates technique permettant de contourner les problèmes des objets temporaires dûs à l évaluation par paire des opérations en C++. L idée est de bâtir statiquement, i.e. pendant la compilation, l arbre d une expression. différer l évaluation des calculs : Au lieu de calculer des résultats intermédiaires, les surcharges d opérateurs vont construire l arbre syntaxique de l expression, à l aide de classes templates. L opérateur = va ensuite parcourir cet arbre syntaxique et effectuer en un seul coup le calcul. Vecteur V1, V2, V3, V4 ; V4 = (V1 / 2.5) (V2 + V3 ) 5;

84 Traits Abstraction des types de données. Les traits sont des petits objets qui fournissent des informations à propos d un autre objet (ou algorithme) pour déterminer la marche à suivre ou des détails d implémentation. Une classe de trait, généralement template, définit des caractéristiques ou des fonctions associées à un type donné afin de généraliser leur utilisation. Classe de traits qui fournit une valeur nulle appropriée pour chaque type template <typename T> struct ValeurNulle ; typename <> struct ValeurNulle <int > { static int Zero ( ) { return 0 ; } } ; typename <> struct ValeurNulle <std : : string > { s t a t i c std : : string Zero ( ) { return " " ; } } ; typename <> struct ValeurNulle <MaClasse> { s t a t i c MaClasse Zero ( ) { return MaClasse ( 1 ) ; } } ;... template <typename T> void Fonction ( T Valeur ) { T Ret = ValeurNulle <T > : : Zero ( ) ;... }

85 Sommaire 1 Introduction Langages et paradigmes de programmation Conception orientée objet 2 Concepts fondamentaux Objets, classes Encapsulation Héritage Polymorphisme 3 Design Patterns Présentation Quelques exemples 4 Le cas de C++ Elements préalables Classes Surcharge des opérateurs Héritage Templates Exceptions 5 C++ et calcul scientifique 6 Références

86 Références «Design Patterns», Gamma, Helm, Johnson, Vlissides. Patrons de conception : wiki/patrons_de_conception «Le langage C++», Bjarne Stroustrup, 4e Ed, Addison Wesley. Norme ISO C++ : FAQ C++ : Exemple simplifié d utilisation des traits : UTILISATION-TECHNIQUE-TRAITS_37173.aspx. Meta-programmation : com/tutoriels/cpp/metaprog/. «Vers une nouvelle approche du calcul scientifique en C++», Gabriel Dos Reis, Tech. Report RR-3362, INRIA. «Techniques for Scientific C++», Todd Veldhuizen, Indiana University Computer Science Tech. Report, 2000.

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40 Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne gauthier.picard@emse.fr

Plus en détail

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004 Questionnaire d'examen final INF1101 Sigle du cours Nom : Signature : Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004 Professeur(s)

Plus en détail

Cours d Algorithmique et de Langage C 2005 - v 3.0

Cours d Algorithmique et de Langage C 2005 - v 3.0 Cours d Algorithmique et de Langage C 2005 - v 3.0 Bob CORDEAU cordeau@onera.fr Mesures Physiques IUT d Orsay 15 mai 2006 Avant-propos Avant-propos Ce cours en libre accès repose sur trois partis pris

Plus en détail

Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan

Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan Cours de C++ François Laroussinie Dept. d Informatique, ENS de Cachan 2 novembre 2005 Première partie I Introduction Introduction Introduction Algorithme et programmation Algorithme: méthode pour résoudre

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Évaluation et implémentation des langages

Évaluation et implémentation des langages Évaluation et implémentation des langages Les langages de programmation et le processus de programmation Critères de conception et d évaluation des langages de programmation Les fondations de l implémentation

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

Génie Logiciel I. Cours VI - Typage statique / dynamique, fonctions virtuelles et classes abstraites, flots d entrées / sorties, et string

Génie Logiciel I. Cours VI - Typage statique / dynamique, fonctions virtuelles et classes abstraites, flots d entrées / sorties, et string Génie Logiciel I Cours VI - Typage statique / dynamique, fonctions virtuelles et classes abstraites, flots d entrées / sorties, et string Nicolas Kielbasiewicz C.D.C.S.P./I.S.T.I.L./I.C.J. Filière M.A.M.

Plus en détail

Chapitre VI- La validation de la composition.

Chapitre VI- La validation de la composition. Chapitre VI- La validation de la composition. Objectifs du chapitre : Expliquer les conséquences de l utilisation de règles de typage souples dans SEP. Présenter le mécanisme de validation des connexions

Plus en détail

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy Claude Delannoy Programmer en langage C++ 8 e édition Avec une intro aux design patterns et une annexe sur la norme C++11 Groupe Eyrolles, 1993-2011. Groupe Eyrolles, 2014, pour la nouvelle présentation,

Plus en détail

Généralités sur le Langage Java et éléments syntaxiques.

Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques....1 Introduction...1 Genéralité sur le langage Java....1 Syntaxe de base du Langage...

Plus en détail

Éléments de programmation et introduction à Java

Éléments de programmation et introduction à Java Éléments de programmation et introduction à Java Jean-Baptiste Vioix (jean-baptiste.vioix@iut-dijon.u-bourgogne.fr) IUT de Dijon-Auxerre - LE2I http://jb.vioix.free.fr 1-20 Les différents langages informatiques

Plus en détail

Cours d initiation à la programmation en C++ Johann Cuenin

Cours d initiation à la programmation en C++ Johann Cuenin Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................

Plus en détail

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers Pas en Programmation Objet : les Classes et les Objets Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.

Plus en détail

Claude Delannoy. 3 e édition C++

Claude Delannoy. 3 e édition C++ Claude Delannoy 3 e édition Exercices Exercices C++ en en langage langage delc++ titre 4/07/07 15:19 Page 2 Exercices en langage C++ AUX EDITIONS EYROLLES Du même auteur C. Delannoy. Apprendre le C++.

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement des objets d'une classe Utilisation d'une classe Droit

Plus en détail

Héritage presque multiple en Java (1/2)

Héritage presque multiple en Java (1/2) Héritage presque multiple en Java (1/2) Utiliser deux classes ou plus dans la définition d'une nouvelle classe peut se faire par composition. class Etudiant{ int numero; Diplome d; float passeexamen(examen

Plus en détail

UE Programmation Impérative Licence 2ème Année 2014 2015

UE Programmation Impérative Licence 2ème Année 2014 2015 UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie prenom.nom@mi.parisdescartes.fr 2 Programmation Impérative

Plus en détail

et Programmation Objet

et Programmation Objet FACULTE POLYTECHNIQUE DE MONS Service d Informatique et Programmation Objet Mohammed Benjelloun 2 ème Bachelier Année académique 2008-2009 Table des matières Avant-propos--------------------------------------------------------------------------

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les

Plus en détail

Cours 1: Java et les objets

Cours 1: Java et les objets Ressources Les interface homme-machine et le langage Java DUT première année Henri Garreta, Faculté des Sciences (Luminy) Cyril Pain-Barre & Sébastien Nedjar, IUT d Aix-Marseille (Aix) Cours 1: infodoc.iut.univ-aix.fr/~ihm/

Plus en détail

Composants génériques de calcul scientifique

Composants génériques de calcul scientifique Composants génériques de calcul scientifique T. Géraud et A. Duret-Lutz RAPPORT TECHNIQUE 9901 MARS 1999 Laboratoire de Recherche et Développement d EPITA 14-16, rue Voltaire 94276 Le Kremlin-Bicêtre cedex

Plus en détail

Traduction des Langages : Le Compilateur Micro Java

Traduction des Langages : Le Compilateur Micro Java BARABZAN Jean-René OUAHAB Karim TUCITO David 2A IMA Traduction des Langages : Le Compilateur Micro Java µ Page 1 Introduction Le but de ce projet est d écrire en JAVA un compilateur Micro-Java générant

Plus en détail

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

Les structures de données. Rajae El Ouazzani

Les structures de données. Rajae El Ouazzani Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l

Plus en détail

Programmation en Java IUT GEII (MC-II1) 1

Programmation en Java IUT GEII (MC-II1) 1 Programmation en Java IUT GEII (MC-II1) 1 Christophe BLANC - Paul CHECCHIN IUT Montluçon Université Blaise Pascal Novembre 2009 Christophe BLANC - Paul CHECCHIN Programmation en Java IUT GEII (MC-II1)

Plus en détail

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2 Langage et Concepts de Programmation Objet Travaux Dirigés no2 Pôle Informatique École Nationale Supérieure des Mines de St-Etienne Vous trouverez plus de détails sur les concepts abordés lors de ce TD

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

Une introduction à Java

Une introduction à Java Une introduction à Java IFT 287 (Semaine 1) UNIVERSITÉ DE SHERBROOKE 1 Java - Historique Développé par Sun Microsystems en 1994 Inventeur James Gosling (canadien!) Objectif langage sûr (fortement typé)

Plus en détail

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page

Plus en détail

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

Plus en détail

COMPARAISONDESLANGAGESC, C++, JAVA ET

COMPARAISONDESLANGAGESC, C++, JAVA ET REPUBLIQUE DU BENIN *******@******* MINISTERE DE L ENSEIGNEMENT SUPERIEUR ET DE LA RECHERCHE SCIENTIFIQUE(MESRS) *******@******* UNIVERSITE D ABOMEY CALAVI(UAC) *******@******* ECOLE POLYTECHNIQUE D ABPOMEY

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ; CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types

Plus en détail

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

Plus en détail

Plan Pédagogique du cours

Plan Pédagogique du cours Plan Pédagogique du cours Module: Programmation Orientée Objet Section : informatique Niveau : 3 ème niveau (gestion, industriel, réseau) Volume Horaire : 22,5 heures Cours Intégrés + 45 Travaux Pratiques

Plus en détail

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

Plus en détail

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. Encapsulation L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. La visibilité dépend des membres : certains membres peuvent être visibles et d'autres

Plus en détail

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML http://olivier-augereau.com Sommaire Introduction I) Les bases II) Les diagrammes

Plus en détail

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Anne Tasso Java Le livre de premier langage 10 e édition Avec 109 exercices corrigés Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Table des matières Avant-propos Organisation de l ouvrage..............................

Plus en détail

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation

Plus en détail

Programmation MacOSX / ios

Programmation MacOSX / ios Programmation MacOSX / ios Master Ingénierie Informatique 2011-2012 Jean-Baptiste.Yunès@liafa.jussieu.fr deux extensions objets de C : C++ (Stroustrup) Objective-C (Cox & Love) ajout de constructions à

Plus en détail

Cours 1 : La compilation

Cours 1 : La compilation /38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà

Plus en détail

Java c est quoi? Java pourquoi?

Java c est quoi? Java pourquoi? Grandes lignes du cours Cours JAVA : Le bases du langage Java. Version 3.02 Julien Sopena 1 1 julien.sopena@lip6.fr Équipe REGAL - INRIA Rocquencourt LIP6 - Université Pierre et Marie Curie Licence professionnelle

Plus en détail

Java Licence Professionnelle CISII, 2009-2010. Cours 2 : Classes et Objets

Java Licence Professionnelle CISII, 2009-2010. Cours 2 : Classes et Objets Licence Professionnelle CISII, 2009-2010 Cours 2 : Classes et Objets 1 Classes et Objets Objectifs des LOO : - Manipuler des objets - Découper les programmes suivant les types des objets manipulés - Regrouper

Plus en détail

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) Modularité Extensions Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) généricité modules de première classe : peuvent être

Plus en détail

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de

Plus en détail

Introduction à l héritage en C++

Introduction à l héritage en C++ Algorithmique/Langage 1ère année Introduction à l héritage en C++ Yacine BELLIK IUT d Orsay Yacine.Bellik@iut-orsay.fr 1 Bibliographie Ce cours est basé sur le livre suivant : Programmer en C++, 5ème édition

Plus en détail

Objets et Programmation. origine des langages orientés-objet

Objets et Programmation. origine des langages orientés-objet Objets et Programmation origine des langages orientés-objet modularité, encapsulation objets, classes, messages exemples en Java héritage, liaison dynamique G. Falquet, Th. Estier CUI Université de Genève

Plus en détail

Création d objet imbriqué sous PowerShell.

Création d objet imbriqué sous PowerShell. Création d objet imbriqué sous PowerShell. Par Laurent Dardenne, le 13/01/2014. Niveau Ce tutoriel aborde la création d objet composé, c est-à-dire que certains de ses membres seront eux-mêmes des PSObjects.

Plus en détail

Introduction à MATLAB R

Introduction à MATLAB R Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d

Plus en détail

GOL502 Industries de services

GOL502 Industries de services GOL502 Industries de services Conception d un service Partie IIb Version 2013 Introduction Conception d un service partie IIb Nous verrons dans ce chapitre Modélisation d un service; Langage de modélisation

Plus en détail

Langage Java. Classe de première SI

Langage Java. Classe de première SI Langage Java Table des matières 1. Premiers pas...2 1.1. Introduction...2 1.2. Mon premier programme...2 1.3. Les commentaires...2 2. Les variables et les opérateurs...2 3. La classe Scanner...3 4. Les

Plus en détail

Programmation Orientée Objet

Programmation Orientée Objet Université de Pau et des Pays de l Adour Institut Universitaire de Technologie des Pays de l Adour Département Réseaux et Télécommunications 371, rue du Ruisseau BP 201 40004 Mont-de-Marsan Cedex tél :

Plus en détail

Initiation à JAVA et à la programmation objet. raphael.bolze@ens-lyon.fr

Initiation à JAVA et à la programmation objet. raphael.bolze@ens-lyon.fr Initiation à JAVA et à la programmation objet raphael.bolze@ens-lyon.fr O b j e c t i f s Découvrir un langage de programmation objet. Découvrir l'environnement java Découvrir les concepts de la programmation

Plus en détail

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Logiciel Libre Cours 3 Fondements: Génie Logiciel Logiciel Libre Cours 3 Fondements: Génie Logiciel Stefano Zacchiroli zack@pps.univ-paris-diderot.fr Laboratoire PPS, Université Paris Diderot 2013 2014 URL http://upsilon.cc/zack/teaching/1314/freesoftware/

Plus en détail

Chapitre 2. Classes et objets

Chapitre 2. Classes et objets Chapitre 2: Classes et Objets 1/10 Chapitre 2 Classes et objets Chapitre 2: Classes et Objets 2/10 Approche Orientée Objet Idée de base de A.O.O. repose sur l'observation de la façon dont nous procédons

Plus en détail

Patrons de Conception (Design Patterns)

Patrons de Conception (Design Patterns) Patrons de Conception (Design Patterns) Introduction 1 Motivation Il est difficile de développer des logiciels efficaces, robustes, extensibles et réutilisables Il est essentiel de comprendre les techniques

Plus en détail

INITIATION AU LANGAGE JAVA

INITIATION AU LANGAGE JAVA INITIATION AU LANGAGE JAVA I. Présentation 1.1 Historique : Au début des années 90, Sun travaillait sur un projet visant à concevoir des logiciels simples et performants exécutés dans des PDA (Personnal

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0

Plus en détail

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés) Introduction à la POO 1. Histoire de la POO 9 2. Historique du 12 La conception orientée objet 1. Approche procédurale et décomposition fonctionnelle 13 2. La transition vers l'approche objet 14 3. Les

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites Java Licence Professionnelle 2009-2010 Cours 7 : Classes et méthodes abstraites 1 Java Classes et méthodes abstraites - Le mécanisme des classes abstraites permet de définir des comportements (méthodes)

Plus en détail

Département Automatisation et Informatisation Année 2005-2006. Programmation en C++ Institut des Sciences et Techniques de l Ingénieur d Angers

Département Automatisation et Informatisation Année 2005-2006. Programmation en C++ Institut des Sciences et Techniques de l Ingénieur d Angers Département Automatisation et Informatisation Année 2005-2006 Programmation en C++ Institut des Sciences et Techniques de l Ingénieur d Angers 1 Bertrand Cottenceau 1. Introduction du cours de C++...3

Plus en détail

IFT2255 : Génie logiciel

IFT2255 : Génie logiciel IFT2255 : Génie logiciel Chapitre 6 - Analyse orientée objets Section 1. Introduction à UML Julie Vachon et Houari Sahraoui 6.1. Introduction à UML 1. Vers une approche orientée objet 2. Introduction ti

Plus en détail

TD3: tableaux avancées, première classe et chaînes

TD3: tableaux avancées, première classe et chaînes TD3: tableaux avancées, première classe et chaînes de caractères 1 Lestableaux 1.1 Élémentsthéoriques Déclaration des tableaux Pour la déclaration des tableaux, deux notations sont possibles. La première

Plus en détail

Projet Active Object

Projet Active Object Projet Active Object TAO Livrable de conception et validation Romain GAIDIER Enseignant : M. Noël PLOUZEAU, ISTIC / IRISA Pierre-François LEFRANC Master 2 Informatique parcours MIAGE Méthodes Informatiques

Plus en détail

Notions fondamentales du langage C# Version 1.0

Notions fondamentales du langage C# Version 1.0 Notions fondamentales du langage C# Version 1.0 Z 2 [Notions fondamentales du langage Csharp] [Date : 25/03/09] Sommaire 1 Tout ce qu il faut savoir pour bien commencer... 3 1.1 Qu est ce qu un langage

Plus en détail

Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object

Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object Facultés Universitaires Notre-Dame de la Paix Conception et Programmation Orientées- Object 2008-2009 RÉSUMÉ PRATIQUE... 4 CLASSE OBJET... 4 NOTION D HÉRITAGE... 4 LE POLYMORPHISME... 5 LES CLASSES ABSTRAITES...

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

Chap III : Les tableaux

Chap III : Les tableaux Chap III : Les tableaux Dans cette partie, on va étudier quelques structures de données de base tels que : Les tableaux (vecteur et matrice) Les chaînes de caractères LA STRUCTURE DE TABLEAU Introduction

Plus en détail

Auto-évaluation Programmation en Java

Auto-évaluation Programmation en Java Auto-évaluation Programmation en Java Document: f0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION PROGRAMMATION EN

Plus en détail

ALGORITHMIQUE ET PROGRAMMATION En C

ALGORITHMIQUE ET PROGRAMMATION En C Objectifs ALGORITHMIQUE ET PROGRAMMATION Une façon de raisonner Automatiser la résolution de problèmes Maîtriser les concepts de l algorithmique Pas faire des spécialistes d un langage Pierre TELLIER 2

Plus en détail

TP : Gestion d une image au format PGM

TP : Gestion d une image au format PGM TP : Gestion d une image au format PGM Objectif : L objectif du sujet est de créer une classe de manipulation d images au format PGM (Portable GreyMap), et de programmer des opérations relativement simples

Plus en détail

Bases Java - Eclipse / Netbeans

Bases Java - Eclipse / Netbeans Institut Galilée PDJ Année 2014-2015 Master 1 Environnements Java T.P. 1 Bases Java - Eclipse / Netbeans Il existe plusieurs environnements Java. Il est ESSENTIEL d utiliser la bonne version, et un environnement

Plus en détail

Diagramme de classes

Diagramme de classes Diagramme de classes Un diagramme de classes décrit les classes et leurs relations (associations, généralisation/spécialisation, ). classe association méthodes attributs héritage Diagramme de classes :

Plus en détail

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr Aide mémoire UML & Java 1ère partie : Introduction marc.lemaire@u-cergy.fr 9 septembre 2014 1 2014 v1.11 Table des matières 1 Généralités 6 1.1 Notations utilisées.....................................

Plus en détail

Programmation stochastique

Programmation stochastique Programmation stochastique (Partie 1) IFT-6512 Hiver 2008 Présentation succinte COIN-OR? COmputational INfrastructure for Operations Research. Préalablement, COIN-OR tenait pour Common Optimization INterface

Plus en détail

Conventions d écriture et outils de mise au point

Conventions d écriture et outils de mise au point Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette

Plus en détail

Devenez un véritable développeur web en 3 mois!

Devenez un véritable développeur web en 3 mois! Devenez un véritable développeur web en 3 mois! L objectif de la 3W Academy est de former des petits groupes d élèves au développement de sites web dynamiques ainsi qu à la création d applications web

Plus en détail

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles Types d applications pour la persistance Université de Nice Sophia-Antipolis Version 0.9 28/8/07 Richard Grin Toutes les applications n ont pas une complexité qui nécessite une architecture n- tiers Ce

Plus en détail

Présentation du PL/SQL

Présentation du PL/SQL I Présentation du PL/ Copyright Oracle Corporation, 1998. All rights reserved. Objectifs du Cours A la fin de ce chapitre, vous saurez : Décrire l intéret du PL/ Décrire l utilisation du PL/ pour le développeur

Plus en détail

UML (Diagramme de classes) Unified Modeling Language

UML (Diagramme de classes) Unified Modeling Language UML (Diagramme de classes) Unified Modeling Language Sommaire Introduction Objectifs Diagramme de classes Classe (Nom, attribut, opération) Visibilité et portée des constituants d une classe Association

Plus en détail

Génie Logiciel avec Ada. 4 février 2013

Génie Logiciel avec Ada. 4 février 2013 Génie Logiciel 4 février 2013 Plan I. Généralités II. Structures linéaires III. Exceptions IV. Structures arborescentes V. Dictionnaires I. Principes II. Notions propres à la POO I. Principes Chapitre

Plus en détail

Programmation Objet Java Correction

Programmation Objet Java Correction INSA - 4 AE 2007 2008 Durée : 1H00 Contrôle Programmation Objet Java Correction Consignes Tous les documents sont autorisés, mais ils seront peu utiles. Indiquez vos nom et prénom sur chaque feuille. Le

Plus en détail

Classes et Objets en Ocaml.

Classes et Objets en Ocaml. Classes et Objets en Ocaml. Didier Rémy 2001-2002 http://cristal.inria.fr/ remy/mot/2/ http://www.enseignement.polytechnique.fr/profs/informatique/didier.remy/mot/2/ Cours Exercices Slide 1 1. Objets 2.

Plus en détail

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Polymorphisme, la classe Object, les package et la visibilité en Java... 1 Polymorphisme, la classe Object, les package et la visibilité en Java. Polymorphisme, la classe Object, les package et la visibilité en Java.... 1 Polymorphisme.... 1 Le DownCast... 4 La Classe Object....

Plus en détail

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez... Au programme Conception Orientée Objet Jean-Christophe Routier Licence mention Informatique Université Lille 1 Présentation L UE COO est le prolongement immédiat de l UE POO du S4 informatique. cf. http://portail.fil.univ-lille1.fr/portail/ls4/poo

Plus en détail

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation : Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de

Plus en détail

2 Grad Info Soir Langage C++ Juin 2007. Projet BANQUE

2 Grad Info Soir Langage C++ Juin 2007. Projet BANQUE 2 Grad Info Soir Langage C++ Juin 2007 Projet BANQUE 1. Explications L'examen comprend un projet à réaliser à domicile et à documenter : - structure des données, - objets utilisés, - relations de dépendance

Plus en détail

Design patterns. Design patterns - définition. Design patterns - avantages

Design patterns. Design patterns - définition. Design patterns - avantages Design patterns Conception UML Implantation Java Anne Lapujade 1 Design patterns - définition 2 v Objectif : proposer des solutions standardisées à des problèmes de conception classiques v Design pattern

Plus en détail

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections

Plus en détail