Génie Logiciel I. Cours V - Classes dérivées (suite), compilation et classes virtuelles. Nicolas Kielbasiewicz C.D.C.S.P./I.S.T.I.L./I.C.J.

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

Download "Génie Logiciel I. Cours V - Classes dérivées (suite), compilation et classes virtuelles. Nicolas Kielbasiewicz C.D.C.S.P./I.S.T.I.L./I.C.J."

Transcription

1 Génie Logiciel I Cours V - Classes dérivées (suite), compilation et classes virtuelles Nicolas Kielbasiewicz C.D.C.S.P./I.S.T.I.L./I.C.J. Filière M.A.M. 2ème année - 08/09 Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 1 / 61 Plan du cours 1 Héritage simple 2 Retour sur les exceptions 3 Compilation 4 Héritage multiple 5 Gestion des conflits : les classes virtuelles Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 2 / 61

2 Héritage simple Rappels l héritage simple est un mécanisme qui permet de réutiliser une classe de base par extension ou adaptation, dans une nouvelle classe dite classe dérivée; on peut contrôler les accès aux membres de la classe de base de deux manières : 1 spécifier le statut des membres de la classe de base au cours de sa conception : private, protected ou public; 2 spécifier le mode d héritage lors de la conception de la classe dérivée : public, privé ou protégé. les constructeurs de la classe dérivée font automatiquement appel à un constructeur de la clase mère. Il ne faut l appeler explicitement qu en cas de transmission de valeurs; la forme canonique d une classe doit systématiquement comporter un constructeur par valeur, un constructeur par copie, des constructeurs par valeurs (ceux qui sont utiles), un destructeur et l opérateur d affectation. Dans le cas d une classe dérivée, l héritage sera public, le constructeur par copie utilisera le constructeur par copie de la classe mère tout comme l opérateur d affectation (selon la syntaxe vue en CM4); on peut redéfinir et/ou surcharger des membres de la classe mère dans la classe dérivée. Dans certains cas, comme les opérateurs +,, on a tout intérêt à le faire. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 3 / 61 Héritage simple Patrons de classes Combiner les patrons de fonctions avec l héritage simple ne pose aucun problème, il s agit après tout de fonctions membres ou de fonctions amies de la classe de base ou de la classe dérivée. De même, combiner les notions d héritage avec de patrons de classe est tout aussi facile. Cette combinaison peut revêtir plusieurs aspects : une classe «ordinaire» dérivant d une classe patron; un patron de classe dérivant d une classe «ordinaire»; un patron de classe dérivant d un autre patron de classe : avec les mêmes paramètres de type; avec des paramètres de type supplémentaires. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 4 / 61

3 Héritage simple classe ordinaire dérivant d un patron de classe Considérons le patron de classe point : patron de classe point #i n c l u d e <iostream > using namespace s t d ; template <c l a s s T> c l a s s p o i n t { T x, y ; p o i n t (T abs =0, T ord =0) {x=abs ; y=ord ; void a f f i c h e ( ) { cout << Coordonnées : ; cout << x << << y << e n d l ; ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 5 / 61 Héritage simple classe ordinaire dérivant d un patron de classe On va maintenant définir une classe dérivée pointintcolore qui dérive de la classe patron point<int> : classe dérivée pointintcolore #i n c l u d e <i o s t r e a m > u s i n g namespace s t d ; c l a s s p o i n t I n t C o l o r e : p u b l i c p o i n t <i n t > { i n t c o u l e u r ; p o i n t I n t C o l o r e ( i n t abs =0, i n t ord =0, i n t c l =1) : p o i n t <i n t >(abs, ord ) { c o u l e u r=c l ; v o i d a f f i c h e ( ) { p o i n t <i n t >:: a f f i c h e ( ) ; cout << c o u l e u r : << c o u l e u r << e n d l ; ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 6 / 61

4 Héritage simple classe ordinaire dérivant d un patron de classe Exemple de programme testant les deux classes précédentes : programme test i n t main ( i n t argc, char argv [ ] ) { point <f l o a t > p f ( 3. 5, 2. 8 ) ; p f. a f f i c h e ( ) ; p o i n t I n t C o l o r e p ( 3, 5, 9 ) ; p. a f f i c h e ( ) ; e x i t ( EXIT SUCCESS ) ; ===================== Coordonnées : Coordonnées : 3 5 c o u l e u r : 9 ===================== Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 7 / 61 Héritage simple Patron de classe dérivant d une classe ordinaire L aspect patron, c est-à-dire l introduction d un paramètre de type, concerne uniquement la classe dérivée : Exemple template <c l a s s T> c l a s s B : c l a s s A { Cela ne pose donc aucun problème particulier. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 8 / 61

5 Héritage simple Dérivation de patrons avec les mêmes paramètres Cette fois-ci, on va définir un patron de classe pointcolore avec le même paramètre de type que le patron de classe de base point, dans lequel le nouvel attribut introduit est du même type que les coordonnées du point : patron de classe dérivée pointcolore template <c l a s s T> p o i n t C o l o r e : p u b l i c p o i n t <T> { T c o u l e u r ; p o i n t C o l o r e ( T abs =0, T ord =0, T c l =1) : p o i n t <T>(abs, ord ) { c o u l e u r=c l ; v o i d a f f i c h e ( ) { p o i n t <T>:: a f f i c h e ( ) ; cout << c o u l e u r : << c o u l e u r << e n d l ; ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 9 / 61 Héritage simple Dérivation de patrons avec les mêmes paramètres Exemple de programme test : programme test i n t main ( i n t argc, char a r g v [ ] ) { p o i n t <long> p ( 3 4, 2 5 ) ; p. a f f i c h e ( ) ; p o i n t C o l o r e pc ( 1 2, 4 5, 1 5 ) ; pc. a f f i c h e ( ) ; e x i t ( EXIT SUCCESS ) ; ===================== Coordonnées : Coordonnées : c o u l e u r : 15 ===================== Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 10 / 61

6 Héritage simple Dérivation de patrons avec paramètres supplémentaires Cette fois-ci, on va définir un patron de classe pointcolore avec le même paramètre de type que le patron de classe de base point, auquel on ajoute un nouveau paramètre de type pour le nouvel attribut : patron de classe dérivée pointcolore template <c l a s s T, c l a s s U> p o i n t C o l o r e : p u b l i c p o i n t <T> { U c o u l e u r ; p o i n t C o l o r e ( T abs =0, T ord =0, U c l =1) : p o i n t <T>(abs, ord ) { c o u l e u r=c l ; v o i d a f f i c h e ( ) { p o i n t <T>:: a f f i c h e ( ) ; cout << c o u l e u r : << c o u l e u r << e n d l ; ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 11 / 61 Héritage simple Dérivation de patrons avec paramètres supplémentaires Exemple de programme test : programme test i n t main ( i n t argc, char a r g v [ ] ) { p o i n t C o l o r e <f l o a t, i n t > p ( 3. 5, 2. 8, 1 2 ) ; p. a f f i c h e ( ) ; p o i n t C o l o r e <unsigned long, s h o r t > q ( , , 8 ) ; q. a f f i c h e ( ) ; e x i t ( EXIT SUCCESS ) ; ===================== Coordonnées : c o u l e u r : 12 Coordonnées : c o u l e u r : 8 ===================== Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 12 / 61

7 Retour sur les exceptions Rappels le mécanisme des exceptions permet de gérer de manière conviviale et personnelle les erreurs qui peuvent survenir à l exécution d un programme; la levée d une exception se fait à l aide de l instruction throw; le gestionnaire d exception se fait à l aide d un bloc try - catch; on peut renvoyer des exceptions au gestionnaire parent à l aide de la commande throw; on peut spécifier pour une fonction quelles exceptions on peut transmettre au gestionnaire parent dans son prototype; pour envoyer des informations complémentaires au gestionnaire d exception, il faut que le type d exception soit celui d une classe possédant un constructeur par valeurs et autant d attributs que d informations pouvant être transmises. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 13 / 61 Retour sur les exceptions Les exceptions standard Elles sont disponibles dans l en-tête <stdexcept> et dérivent toutes d une classe de base exception : exception bad exception logic error bad alloc bad cast runtime error bad typeid domain error length error invalid argument out of range range error overflow error underflow error Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 14 / 61

8 Retour sur les exceptions Les exceptions déclenchées par la librairie standard bad alloc échec d allocation mémoire par la commande new; bad cast échec de conversion dynamique (opérateur dynamic cast); bad typeid erreur de détection du véritable type d un objet désigné par un pointeur ou une référence (rôle de typeid); bad exception erreur de spécification d exception; out of range erreur d indice; invalid argument argument du constructeur bitset non valide; overflow error erreur de dépassement de valeur autorisée (classe bitset). Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 15 / 61 Retour sur les exceptions Utiliser les exceptions standards on peut utiliser tous les types d exceptions standards, en respectant bien sûr la raison pour laquelle elles existent, par souci de bon-sens; toutes les classes dérivant directement de la classe exception doivent redéfinir une fonction membre sans arguments what fournissant en valeur de retour un pointeur sur une chaîne expliquant la nature de l exception. C est le cas de toutes les classes d exceptions; toutes les classes d exceptions disposent d un constructeur recevant un argument de type chaîne de caractère dont la valeur pourra ensuite être récupérée par what. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 16 / 61

9 Les exceptions standards Premier exemple Exemple 1: classes dérivées monexception1 et monexception2 #i n c l u d e <i o s t r e a m > #i n c l u d e <s t d e x c e p t > u s i n g namespace s t d ; c l a s s monexception1 : p u b l i c e x c e p t i o n { monexception1 ( ) { c o n s t char what ( ) c o n s t throw ( ) { r e t u r n mon e x c e p t i o n 1 ; ; c l a s s monexception2 : p u b l i c e x c e p t i o n { monexception2 ( ) { ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 17 / 61 Les exceptions standards Premier exemple Exemple 1: programme test i n t main ( i n t argc, char a r g v [ ] ) { t r y { throw monexception1 ( ) ; catch ( e x c e p t i o n & e ) { cout << e x c e p t i o n : << e. what ( ) << e n d l ; t r y { throw monexception2 ( ) ; catch ( e x c e p t i o n & e ) { cout << e x c e p t i o n : << e. what ( ) << e n d l ; e x i t ( EXIT SUCCESS ) ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 18 / 61

10 Les exceptions standards Premier exemple Voilà la sortie du programme test précédent : Exemple 1: sortie écran =========================== e x c e p t i o n : mon e x c e p t i o n 1 e x c e p t i o n : 13 monexception2 =========================== Dans la classe monexception2, la fonction membre what n a pas été surdéfinie, on appelle donc celle de la classe mère exception. On voit finalement quel est le type de l exception qui a été levée, mais le nombre 13 n est pas à proprement parler une information compréhensible. Il vaut mieux donc surcharger systématiquement la fonction what. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 19 / 61 Les exceptions standards Deuxième exemple On souhaite définir une classe dérivée de exception, mais qui, cette-fois ci, stocke la chaîne de caractère dans un argument : Exemple 2: classe dérivée monexception3 #i n c l u d e <i o s t r e a m > #i n c l u d e <s t d e x c e p t > u s i n g namespace s t d ; c l a s s monexception3 : p u b l i c e x c e p t i o n { char ad ; monexception3 ( ) { monexception3 ( char s t r ) { ad=s t r ; c o n s t char what ( ) c o n s t throw ( ) { r e t u r n ad ; ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 20 / 61

11 Les exceptions standards Deuxième exemple Exemple 2: programme test i n t main ( i n t argc, char a r g v [ ] ) { t r y { throw monexception3 ( p r e m i e r t y p e ) ; catch ( e x c e p t i o n & e ) { cout << e x c e p t i o n : << e. what ( ) << e n d l ; t r y { throw monexception3 ( deuxième t y p e ) ; catch ( e x c e p t i o n & e ) { cout << e x c e p t i o n : << e. what ( ) << e n d l ; e x i t ( EXIT SUCCESS ) ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 21 / 61 Les exceptions standards Deuxième exemple Voilà la sortie du programme test précédent : Exemple 2: sortie écran =========================== e x c e p t i o n : p r e m i e r type e x c e p t i o n : deuxième type =========================== La possibilité de spécifier un tel message permet de distinguer dans le programme plusieurs sortes d exceptions. On pourrait bien sûr définir une classe qui dérive d exception et qui ait plusieurs arguments. Dans ce cas, on pourrait définir la fonction membre what pour construire la chaîne de caractère qui devra être affichée lors de la gestion de l exception associée. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 22 / 61

12 Compilation Exemple 1 Considérons une classe appelée exemple. On a deux fichiers : exemple.h où toutes les fonctions membres sont déclarées en ligne et exemple.cpp, ce dernier contenant la fonction main. Déclaration classe exemple Définition classe exemple Programme Compilation Module objet exemple.o Module objet programme utilisateur Édition de liens Programme exécutable Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 23 / 61 Compilation Exemple 1 CXX=g++ CFLAGS = O3 g3 Wall fmessage l e n g t h =0 LDFLAGS = O3 SRC = exemple. cpp OBJ = exemple. o HEADER = exemple. h EXEC = exemple a l l : $ (EXEC) exemple. o : exemple. h %.o : %.cpp $ (CXX) $ (CFLAGS) c $< %: %.o $ (CXX) $ ( LDFLAGS) o $@ $< run : exemple. c l e a n : rm r f $ (OBJ) $ (EXEC) Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 24 / 61

13 Compilation Exemple 2 Ici, nous disposons d une classe exemple et d un fichier main.cpp contenant le programme utilisateur. Définition classe exemple Déclaration classe exemple Programme utilisant exemple Compilation Compilation Module objet exemple.o Module objet programme utilisateur Édition de liens Programme exécutable Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 25 / 61 Compilation Exemple 2 SRC = exemple. cpp main. cpp OBJ = exemple. o main. o HEADER = exemple. h EXEC = main a l l : $ (EXEC) exemple. o : exemple. h main. o : exemple. h %.o : %.cpp $ (CXX) $ (CFLAGS) c $< main : $ (OBJ) $ (CXX) $ (LDFLAGS) o $@ $ˆ # ou o $@ $ (OBJ) run : main. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 26 / 61

14 Compilation Exemple 3 Notre programme contient maintenant 2 classes exemple1 et exemple2 indépendantes et définies séparemment, ainsi que le programme dans main.cpp. Définition classe exemple1 Déclaration classe exemple1 Compilation Module objet exemple1.o Définition classe exemple2 Déclaration classe exemple2 Compilation Module objet exemple2.o Édition de liens Programme exécutable Programme utilisant exemple1 et exemple2 Compilation Module objet programme utilisateur Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 27 / 61 Compilation Exemple 3 SRC = exemple1. cpp exemple2. cpp main. cpp OBJ = exemple1. o exemple2. o main. o HEADER = exemple1. h exemple2. h EXEC = main a l l : $ (EXEC) exemple1. o : exemple2. o : exemple1. h exemple2. h main. o : exemple1. h exemple2. h %.o : %.cpp $ (CXX) $ (CFLAGS) c $< main : $ (OBJ) $ (CXX) $ (LDFLAGS) o $@ $ˆ # ou o $@ $ (OBJ) Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 28 / 61

15 Compilation Exemple 4 La classe exemple1 est maintenant une classe composant / mère de la classe exemple2 : Définition classe exemple1 Déclaration classe exemple1 Compilation Module objet exemple1.o Définition classe exemple2 Déclaration classe exemple2 Compilation Module objet exemple2.o Édition de liens Programme exécutable Programme utilisant exemple1 et exemple2 Compilation Module objet programme utilisateur Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 29 / 61 Compilation Exemple 4 SRC = exemple1. cpp exemple2. cpp main. cpp OBJ = exemple1. o exemple2. o main. o HEADER = exemple1. h exemple2. h EXEC = main a l l : $ (EXEC) exemple1. o : exemple1. h exemple2. h exemple2. o : exemple2. h main. o : exemple1. h exemple2. h %.o : %.cpp $ (CXX) $ (CFLAGS) c $< main : $ (OBJ) $ (CXX) $ (LDFLAGS) o $@ $ˆ # ou o $@ $ (OBJ) Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 30 / 61

16 Compilation Conseils en dehors des cibles habituelles (all, clean, et les éventuels run et test), commencer par écrire les dépendances entre les.o et les.h; écrire la ou les règle(s) de compilation, permettant de générer les.o; écrire la ou les règles d édition de liens, permettant de générer les différents exécutables; tous les.h inclus dans un autre.h ou dans un.cpp doivent apparaître dans la liste des dépendances, sans oublier les différentes classes mères sur tous les niveaux; penser à utiliser le mécanisme de protection contre les inclusions multiples (voir CM1); le programme exécutable dépendra quasi systématiquement de tous les.o, tout comme son module objet de tous les.h; structurer l arborescence des fichiers comportant le logiciel. Par exemple, un sous-répertoire src pour toutes les sources, un sous-répertoire bin pour tous les exécutables, Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 31 / 61 Compilation Compléments : Makefile et affichage Utilisation de echo %.o : s r c /%. B u i l d i n g f i l e : I n v o k i n g GCC C++ Compiler $ (CXX) $ (CFLAGS) c F i n i s h e d b u i l d i n g t a r g e t main : $ B u i l d i n g t a r g e t : I n v o k i n g GCC C++ L i n k e r $ (CXX) $ (LDFLAGS) o $@ $ F i n i s h e d b u i l d i n g t a r g e t Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 32 / 61

17 Compilation Compléments : Makefile et affichage la commande echo permet d afficher une chaîne de caractère sur la sortie standard; le quand il est ajouté empêche l affichage de la commande avant son exécution. Dans l exemple précédent, on ne doit donc voir apparaître que l intitulé de la commande de compilation et pas l intitulé des commandes echo : Utilisation de echo B u i l d i n g t a r g e t : main I n v o k i n g GCC C++ L i n k e r g++ O3 o main main. o exemple1. o exemple2. o F i n i s h e d b u i l d i n g t a r g e t main Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 33 / 61 Compilation Compléments : options de make make -d affiche les informations de débogage en plus de l exécution des commandes. Cela permet par exemple de pister l utilisation de règles implicites lorsque les cibles définies ne sont pas utilisées; make -k poursuit la compilation après une erreur autant que possible : toutes les cibles indépendantes de celle à l origine de l erreur seront compilées; make -n affiche les commandes qui seront exécutées, mais ne les exécute pas; make -r force la non-utilisation des règles implicites de compilation. La compilation n aura pas lieu si les règles définies par l(utilisateur sont incorrectes. Dans le cas de classes indépendantes, dans les exemples précédents, si l on écrit %.o: %.h en lieu et place de la liste des instructions de la forme exemple.o: exemple.h, le compilateur ne comprendra pas la règle de compilation et la règle d édition de liens qui auront été écrites. Il utilisera donc des règles implicites. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 34 / 61

18 Héritage multiple Problématique L héritage multiple s affranchit d un grosse contrainte en permettant à une classe d hériter de plusieurs classes. La plupart de ce que nous avons vu dans le cours sur l héritage simple reste valable pour l héritage multiple (droits d accès, ), mais nous devons introduire un certain nombre d informations supplémentaires pour répondre aux questions suivantes : Comment exprimer une dépendance «multiple» au sein d une classe dérivée? Comment sont appelés les constructeurs et les destructeurs concernés? Comment régler les conflits qui risquent d apparaître dans des cas comme une classe D héritant de 2 classes B et C, qui héritent toutes deux d une même classe A? Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 35 / 61 Héritage multiple Mise en œuvre La classe pointcolore que nous avons utilisé jusqu à présent va maintenant dériver de deux classes : la classe point bien sûr et une classe colore. point colore pointcolore les classes point et colore c l a s s p o i n t { i n t x, y ; p o i n t ( ) { p o i n t ( ) { a f f i c h e ( ) { ; c l a s s c o l o r e { s h o r t c o u l e u r ; c o l o r e ( ) { c o l o r e ( ) { a f f i c h e ( ) { ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 36 / 61

19 Héritage multiple Mise en œuvre La classe pointcolore que nous avons utilisé jusqu à présent va maintenant dériver de deux classes : la classe point bien sûr et une classe colore. point colore pointcolore la classe pointcolore c l a s s p o i n t C o l o r e : p u b l i c p o i n t, p u b l i c c o l o r e { p o i n t C o l o r e ( ) { p o i n t C o l o r e ( ) { a f f i c h e ( ) { ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 37 / 61 Héritage multiple Constructeurs et destructeurs Constructeurs : le mécanisme est le même que pour l héritage simple : si l on a besoin de transmettre des informations aux constructeurs des classes mères, on utilise la syntaxe suivante : constructeur p o i n t C o l o r e : : p o i n t C o l o r e ( ) : p o i n t ( ), c o l o r e ( ) { Les constructeurs des classes mères seront donc appelés dans l ordre stipulé dans la déclaration de la classe (pas du ou des constructeurs), et ce avant le constructeur de la classe dérivée. Destructeurs : tout comme pour l héritage simple, la destruction d objets se fait membre à membre. L ordre d appel des destructeurs est l inverse de l ordre d appel des constructeurs. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 38 / 61

20 Héritage multiple Un exemple complet La classe point #i n c l u d e <i o s t r e a m > u s i n g namespace s t d ; c l a s s p o i n t { i n t x, y ; p o i n t ( i n t abs, i n t ord ) { cout << ++ c o n s t r. p o i n t << e n d l ; x=abs ; y=ord ; p o i n t ( ) { cout << d e s t r. p o i n t << e n d l ; v o i d a f f i c h e ( ) { cout << Coordonnées : << x << << y << e n d l ; ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 39 / 61 Héritage multiple Un exemple complet La classe colore #i n c l u d e <i o s t r e a m > u s i n g namespace s t d ; c l a s s c o l o r e { s h o r t c o u l e u r ; c o l o r e ( s h o r t c l ) { cout << ++ c o n s t r. c o l o r e << e n d l ; c o u l e u r=c l ; c o l o r e ( ) { cout << d e s t r. c o l o r e << e n d l ; v o i d a f f i c h e ( ) { cout << C o u l e u r : << c o u l e u r << e n d l ; ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 40 / 61

21 Héritage multiple Un exemple complet La classe pointcolore #i n c l u d e <i o s t r e a m > u s i n g namespace s t d ; c l a s s p o i n t C o l o r e : p u b l i c p o i n t, p u b l i c c o l o r e { p o i n t C o l o r e ( i n t, i n t, i n t ) ; p o i n t C o l o r e ( ) { cout << d e s t r. p o i n t C o l o r e << e n d l ; v o i d a f f i c h e ( ) { p o i n t : : a f f i c h e ( ) ; c o l o r e : : a f f i c h e ( ) ; ; p o i n t C o l o r e : : p o i n t C o l o r e ( i n t abs =0, i n t ord =0, i n t c l =1) : p o i n t ( abs, ord ), c o l o r e ( c l ) { cout << ++++ c o n s t r. p o i n t C o l o r e << e n d l ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 41 / 61 Héritage multiple Un exemple complet Le programme test main ( ) { p o i n t C o l o r e p ( 3, 9, 2 ) ; cout << << e n d l ; p. a f f i c h e ( ) ; cout << << e n d l ; p. p o i n t : : a f f i c h e ( ) ; cout << << e n d l ; p. c o l o r e : : a f f i c h e ( ) ; cout << << e n d l ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 42 / 61

22 Héritage multiple Un exemple complet Sortie écran ++ c o n s t r. p o i n t ++ c o n s t r. c o l o r e ++++ c o n s t r. p o i n t C o l o r e Coordonnées : 3 9 C o u l e u r : 2 Coordonnées : 3 9 C o u l e u r : 2 d e s t r. p o i n t C o l o r e d e s t r. c o l o r e d e s t r. p o i n t Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 43 / 61 Héritage multiple Attributs multiples Attributs multiples c l a s s A { i n t x ; ; c l a s s C : p u b l i c A, p u b l i c B { ; c l a s s B { i n t x ; ; Les deux attributs coexistent (tout comme on l a vu en héritage simple avec la redéfinition d attributs). On les distingue donc grâce à l opérateur d accès : A::x et B::x. Que se passe t-il maintenant si les classes A et B héritent d une même classe D? Les attributs de D sont-ils dupliqués? Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 44 / 61

23 Classes virtuelles Problématique On se place dans le cadre suivant : A B C D Héritage conflictuel c l a s s A { i n t x, y ; ; c l a s s B : p u b l i c A { ; c l a s s C : p u b l i c A { ; c l a s s D : p u b l i c B, p u b l i c C { ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 45 / 61 Classes virtuelles Problématique En quelque sorte, D hérite 2 fois de la classe A. Cela signifie donc que les membres x et y de A apparaissent 2 fois dans la classe D. La question ne se pose pas vraiment pour les fonctions membres, elles existent en un seul exemplaire dans la classe A, et deviennent des fonctions membres de la classe dérivée par héritage. Par contre, les attributs x et y sont dupliqués dans toutes les instances de D. Y a-t-il redondance? La réponse est ça dépend. Si on souhaite utiliser 2 jeux de données de A, alors on utilise l opérateur d accès pour sélectionner les attributs hérités par l intermédiaire de B et de C : A::C::x et A::C::x ou B::x et C::x si B et C ne disposent pas d attribut x. On général, on ne souhaite pas cette duplication de données. Si on peut certes se débrouiller pour utiliser systématiquement l un des deux jeux, cela risque d être fastidieux. Le mécanisme des classes virtuelles apporte une solution commode. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 46 / 61

24 Classes virtuelles Mise en œuvre On utilise le mot-clé virtual pour spécifier aux classe filles qu en cas de descendant commun, la classe mère se sera inclue qu une seule et unique fois : Dérivation virtuelle c l a s s A { i n t x, y ; ; c l a s s B : p u b l i c v i r t u a l A { ; c l a s s C : v i r t u a l p u b l i c A { ; c l a s s D : p u b l i c B, p u b l i c C { ; Remarquer que le mot-clé virtual peut être placé avant ou après le mot-clé spécifiant le type de dérivation. Que se passe t-il maintenant pour les constructeurs et les destructeurs? Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 47 / 61 Classes virtuelles Constructeurs et destructeurs Les cas que l on sait traiter : A D E B F C Dans ces deux cas, nous savons comment échanger des informations entre un constructeur d une classe et les constructeurs de ses ascendants directs (ex: B pour C). Par contre, on ne sait pas transmettre des informations entre le constructeur d une classe et les constructeurs de ses ascendants indirects (ex: A pour C), mais cela n était pas utile, puisqu il suffit d y aller étape par étape, d un ascendant direct au suivant, Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 48 / 61

25 Classes virtuelles Constructeurs et destructeurs Que se passe t-il dans le cas suivant? A B C D 2 possibilités : 1 la classe A est déclarée virtuelle dans B et C; 2 la classe A n est pas déclarée virtuelle dans B et C. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 49 / 61 Classes virtuelles Constructeurs et destructeurs Si A n est pas déclarée virtuelle dans B et C, tout se passe comme si B et C dérivaient de deux classes A, ici notées A1 et A2 : A A1 A2 B C B C D D Les constructeurs seront appelés dans l ordre suivant : A1, B, A2, C et D. En ce qui concerne les transferts d informations, on peut très bien imaginer que les classes B et C n aient pas prévu les mêmes arguments en ce qui concerne A, puisqu il y aura construction de deux objets A différents. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 50 / 61

26 Classes virtuelles Constructeurs et destructeurs Si A est déclarée virtuelle dans B et C, on ne peut plus procéder de la même manière, car un seul objet A sera créé. Quels arguments faut-il transmettre au constructeur? Ceux prévus par B? Ceux prévus par C? La solution apportée par C++ est la suivante : le choix des informations a transmettre à A n a plus lieu dans B ou C, mais dans D : On spécifie dans ce cas dans le constructeur de D les informations destinées à A; il devient inutile (en fait, c est interdit) que les constructeurs de B et C puissent transmettre des informations à A. C est dans ce cas le constructeur par défaut de A qui sera appelé à la déclaration d une instance de B ou C. Il faut donc que la classe A dispose d un constructeur sans arguments. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 51 / 61 Classes virtuelles Constructeurs et destructeurs E F Le constructeur d une classe virtuelle est toujours appelé avant les autres. L ordre d appel des constructeurs est donc ici : F, E, G, H et I et pas E, F, G, H, I G (virtual F) H (virtual F) I Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 52 / 61

27 Classes virtuelles Un exemple colore point masse pointcolore pointmasse pointcoloremasse Pour éviter la duplication des membres de point dans pointcoloremasse, il est donc nécessaire que les classes pointcolore et pointmasse dérivent virtuellement de point. Cette dernière devra donc avoir un constructeur sans arguments. Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 53 / 61 Classes virtuelles Un exemple La classe point c l a s s p o i n t { i n t x, y ; p o i n t ( i n t abs, i n t ord ) { cout << ++ c o n s t r. p o i n t : ; cout << abs << << ord << e n d l ; x=abs ; y=ord ; p o i n t ( ) { cout << ++ c o n s t r. d e f a u t p o i n t << e n d l ; x =0; y =0; v o i d a f f i c h e ( ) { cout << Coordonnées : << x << << y << e n d l ; ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 54 / 61

28 Classes virtuelles Un exemple La classe colore c l a s s c o l o r e { s h o r t c o u l e u r ; c o l o r e ( s h o r t c l ) { cout << ++ c o n s t r. c o l o r e : ; cout << c l << e n d l ; c o u l e u r=c l ; v o i d a f f i c h e ( ) { cout << C o u l e u r : << c o u l e u r << e n d l ; ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 55 / 61 Classes virtuelles Un exemple La classe masse c l a s s masse { i n t mas ; masse ( i n t m) { cout << ++ c o n s t r. masse : ; cout << mas << e n d l ; mas=m; v o i d a f f i c h e ( ) { cout << Masse : << mas << e n d l ; ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 56 / 61

29 Classes virtuelles Un exemple La classe pointcolore c l a s s p o i n t C o l o r e : p u b l i c v i r t u a l p o i n t, p u b l i c c o l o r e { p o i n t C o l o r e ( i n t abs, i n t ord, s h o r t c l ) : c o l o r e ( c l ) { cout << ++++ c o n s t r. p o i n t C o l o r e : ; cout << abs << << ord << << c l << e n d l ; v o i d a f f i c h e ( ) { p o i n t : : a f f i c h e ( ) ; c o l o r e : : a f f i c h e ( ) ; ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 57 / 61 Classes virtuelles Un exemple La classe pointmasse c l a s s pointmasse : p u b l i c v i r t u a l p o i n t, p u b l i c masse { pointmasse ( i n t abs, i n t ord, i n t m) : masse (m) { cout << ++++ c o n s t r. p o i n t M a s s e : ; cout << abs << << ord << << m << e n d l ; v o i d a f f i c h e ( ) { p o i n t : : a f f i c h e ( ) ; masse : : a f f i c h e ( ) ; ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 58 / 61

30 Classes virtuelles Un exemple La classe pointcoloremasse c l a s s p o i n t C o l o r e M a s s e : p u b l i c p o i n t C o l o r e, p u b l i c p o i ntmasse { p o i n t C o l o r e M a s s e ( i n t abs, i n t ord, s h o r t c l, i n t m) : p o i n t ( abs, ord ), p o i n t C o l o r e ( abs, ord, c l ), p o i n t M a s s e ( abs, ord,m) { cout << c o n s t r. p o i n t C o l o r e M a s s e : ; cout << abs << << ord << ; cout << c l << << m << e n d l ; v o i d a f f i c h e ( ) { p o i n t : : a f f i c h e ( ) ; c o l o r e : : a f f i c h e ( ) ; masse : : a f f i c h e ( ) ; ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 59 / 61 Classes virtuelles Un exemple Le programme test main ( ) { p o i n t C o l o r e pc ( 3, 9, 2 ) ; pc. a f f i c h e ( ) ; pointmasse pm( 1 2, 2 5, ) ; pm. a f f i c h e ( ) ; p o i n t C o l o r e M a s s e pcm ( 2, 5, 1 0, 2 0 ) ; pcm. a f f i c h e ( ) ; Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 60 / 61

31 Classes virtuelles Un exemple Sortie écran ++ c o n s t r. d e f a u t p o i n t ++ c o n s t r. c o l o r e : c o n s t r. p o i n t C o l o r e : Coordonnées : 0 0 C o u l e u r : 2 ++ c o n s t r. d e f a u t p o i n t ++ c o n s t r. masse : c o n s t r. p o i n t M a s s e : Coordonnées : 0 0 Masse : c o n s t r. p o i n t : c o n s t r. c o l o r e : c o n s t r. p o i n t C o l o r e : c o n s t r. masse : c o n s t r. p o i n t M a s s e : c o n s t r. p o i n t C o l o r e M a s s e : Coordonnées : 2 5 C o u l e u r : 10 Masse : 20 Nicolas Kielbasiewicz (C.D.C.S.P./I.S.T.I.L./I.C.J.) Génie Logiciel I Filière M.A.M. 2ème année - 08/09 61 / 61

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

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

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

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

La gestion des exceptions

La gestion des exceptions La gestion des exceptions Même lorsqu un programme est au point, certaines circonstances exceptionnelles peuvent compromettre la poursuite de son exécution ; il peut s agir par exemple de données incorrectes

Plus en détail

Cours Langage C/C++ Programmation modulaire

Cours Langage C/C++ Programmation modulaire Cours Langage C/C++ Programmation modulaire Thierry Vaira BTS IRIS Avignon tvaira@free.fr «v0.1 Rappel Programmation modulaire (1/2) Le découpage d'un programme en sous-programmes est appelée programmation

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

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

Cours Programmation Système

Cours Programmation Système Cours Programmation Système Filière SMI Semestre S6 El Mostafa DAOUDI Département de Mathématiques et d Informatique, Faculté des Sciences Université Mohammed Premier Oujda m.daoudi@fso.ump.ma Février

Plus en détail

Quelques éléments de compilation en C et makefiles

Quelques éléments de compilation en C et makefiles Quelques éléments de compilation en C et makefiles Guillaume Feuillade 1 Compiler un programme C Le principe de la compilation consiste à passer d un ensemble de fichiers de code à un programme exécutable

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

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

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

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

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

Le prototype de la fonction main()

Le prototype de la fonction main() Le prototype de la fonction main() 1. Introduction...1 2. Paramètres et type de retour de la fonction main()...1 3. Exemple 1...2 4. La fonction exit() du C...2 5. Détecter le code de retour d un programme

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

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

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code Généralités javadoc Université de Nice - Sophia Antipolis Richard Grin Version 1.4.1 8/2/11 javadoc produit de la documentation en partant de commentaires particuliers insérés dans le code source des classes

Plus en détail

Programmation par les Objets en Java

Programmation par les Objets en Java Programmation par les Objets en Java Najib TOUNSI Les classes en Java (TD 3) I. Notion de classe I.1 Classe, champs, méthodes, instanciation, this, private vs. public. Créer une classe Point (coordonnée

Plus en détail

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007 NFP 121 Java et les Threads Présentation : Thierry Escalarasse Mai 2007 Plan du cour Présentation de la notion de Threads La classe Thread L interface Runnable Les états d un thread La Synchronisation

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

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

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

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

Programmation système en C/C++

Programmation système en C/C++ Programmation système en C/C++ Jean-Baptiste Vioix (jb.vioix@free.fr) LE2I - ENESAD http://jb.vioix.free.fr 1-41 Programmation en C/C++ sous Unix Il existe des très nombreux outils de développement sous

Plus en détail

RMI le langage Java XII-1 JMF

RMI le langage Java XII-1 JMF Remote Method Invocation (RMI) XII-1 Introduction RMI est un ensemble de classes permettant de manipuler des objets sur des machines distantes (objets distants) de manière similaire aux objets sur la machine

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

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

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Seance 2: Complétion du code de jeu. (durée max: 2h) Mot clé const et pointeurs: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Implémentez jeu_recupere_piece

Plus en détail

Mon premier rpm. http://alexandre-mesle.com 7 juin 2010. 1 Avant de commencer 2 1.1 RPM... 2 1.2 URPMI... 2 1.3 RPMBUILD... 2

Mon premier rpm. http://alexandre-mesle.com 7 juin 2010. 1 Avant de commencer 2 1.1 RPM... 2 1.2 URPMI... 2 1.3 RPMBUILD... 2 Mon premier rpm http://alexandre-mesle.com 7 juin 2010 Table des matières 1 Avant de commencer 2 1.1 RPM....................................................... 2 1.2 URPMI.....................................................

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

Systèmes d exploitation

Systèmes d exploitation Systèmes d exploitation Virtualisation, Sécurité et Gestion des périphériques Gérard Padiou Département Informatique et Mathématiques appliquées ENSEEIHT Novembre 2009 Gérard Padiou Systèmes d exploitation

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

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

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

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

Programmation système I Les entrées/sorties

Programmation système I Les entrées/sorties Programmation système I Les entrées/sorties DUT 1 re année Université de Marne La vallée Les entrées-sorties : E/O Entrées/Sorties : Opérations d échanges d informations dans un système informatique. Les

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

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

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux Formation Webase 5 Ses secrets, de l architecture MVC à l application Web Adrien Grand Centrale Réseaux Sommaire 1 Obtenir des informations sur Webase 5 2 Composants de Webase 5 Un

Plus en détail

TP1. Outils Java Eléments de correction

TP1. Outils Java Eléments de correction c sep. 2008, v2.1 Java TP1. Outils Java Eléments de correction Sébastien Jean Le but de ce TP, sur une séance, est de se familiariser avec les outils de développement et de documentation Java fournis par

Plus en détail

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie Chapitre I : Les bases du C++ Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie du logiciel, et ce depuis

Plus en détail

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION) CLASSE RACINE Object ancêtre de toutes les classes RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION) définit donc des méthodes héritées par toutes

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

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

Chapitre I Notions de base et outils de travail

Chapitre I Notions de base et outils de travail Chapitre I Notions de base et outils de travail Objectifs Connaître les principes fondateurs et l historique du langage Java S informer des principales caractéristiques du langage Java Connaître l environnement

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

OS Réseaux et Programmation Système - C5

OS Réseaux et Programmation Système - C5 OS Réseaux et Programmation Système - C5 Rabie Ben Atitallah rabie.benatitallah@univ-valenciennes.fr RPC - XDR Rappel RPC: Remote Procedure Call Besoin d un environnement de haut niveau pour le développement

Plus en détail

Introduction aux concepts d ez Publish

Introduction aux concepts d ez Publish Introduction aux concepts d ez Publish Tutoriel rédigé par Bergfrid Skaara. Traduit de l Anglais par Benjamin Lemoine Mercredi 30 Janvier 2008 Sommaire Concepts d ez Publish... 3 Système de Gestion de

Plus en détail

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5 UNIVERISTE MOHAMMED PREMIER Faculté des Sciences d Oujda Oujda - Maroc Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5 Pr. El Mostafa DAOUDI Département de Mathématiques

Plus en détail

Module.NET 3 Les Assemblys.NET

Module.NET 3 Les Assemblys.NET Module.NET Chapitre 3 Les Assemblys.NET 2011/2012 Page 1 sur 13 Contenu Cours... 3 3.1 - Définition d un assembly.net... 3 3.2 - Private assembly ou assembly privé.... 3 3.3 - Shared assembly ou assembly

Plus en détail

Apprendre Java en 154 minutes

Apprendre Java en 154 minutes Apprendre Java en 154 minutes Tutorial Java 1.6 - HESB-TI Stéphanie Calderara José R. Beuret Quentin Cosendey Mai 2008 Table des matières 1 Objet, classe et modificateur 3 1.1 Le premier pas..........................

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

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

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

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

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

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) Remote Method Invocation (RMI) TP Réseau Université Paul Sabatier Master Informatique 1 ère Année Année 2006/2007 Plan Objectifs et Inconvénients de RMI Fonctionnement Définitions Architecture et principe

Plus en détail

Introduction à C++ et à wxwidgets

Introduction à C++ et à wxwidgets Introduction à C++ et à wxwidgets Master IGC 1ère année Année universitaire 2011/2012 Christophe Renaud Version 1.5 19/09/2011 Introduction Objectifs du cours Introduction au langage objet C++ Introduction

Plus en détail

Arguments d un programme

Arguments d un programme Arguments d un programme L2 SPI, Bruno Jacob 1 Arguments Quand on appelle un programme dans un environnement UNIX ou MS- DOS, on compose une ligne de commandes de la forme : nom-du-programme argument1

Plus en détail

Programmation C. Apprendre à développer des programmes simples dans le langage C

Programmation C. Apprendre à développer des programmes simples dans le langage C Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités

Plus en détail

1.6- Génération de nombres aléatoires

1.6- Génération de nombres aléatoires 1.6- Génération de nombres aléatoires 1- Le générateur aléatoire disponible en C++ 2 Création d'un générateur aléatoire uniforme sur un intervalle 3- Génération de valeurs aléatoires selon une loi normale

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 I. Objectif du TP TP1 : Initiation à Java et Eclipse Programmation Mobile Initiation à l environnement Eclipse et aux notions de base du langage Java. II. Environnement

Plus en détail

Bases de programmation. Cours 5. Structurer les données

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/2012. 1 - Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/2012. 1 - Vue générale 2 - Mon premier programme 3 - Types de Programme Java 1 - Vue générale 2 - Mon premier programme 3 - Types de Programme 1 2 c est quoi? Technologie développée par SUN Microsystems lancée en 1995 Dans un des premiers papiers* sur le langage JAVA, SUN le décrit

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

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp Serveur d'application Client HTML/JS Apache Thrift Bootcamp Pré-requis La liste ci-dessous de logiciels doit être installée et opérationnelle sur la machine des participants : Compilateur thrift http://thrift.apache.org/

Plus en détail

INFO-F-404 : Techniques avancées de systèmes d exploitation

INFO-F-404 : Techniques avancées de systèmes d exploitation Nikita Veshchikov e-mail : nikita.veshchikov@ulb.ac.be téléphone : 02/650.58.56 bureau : 2N8.213 URL : http://student.ulb.ac.be/~nveshchi/ INFO-F-404 : Techniques avancées de systèmes d exploitation Table

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

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1 Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1 B. Baert & F. Ludewig Bruno.Baert@ulg.ac.be - F.Ludewig@ulg.ac.be Qu est-ce que la programmation? Programmer Ecrire un

Plus en détail

Environnements de développement (intégrés)

Environnements de développement (intégrés) Environnements de développement (intégrés) Tests unitaires, outils de couverture de code Patrick Labatut labatut@di.ens.fr http://www.di.ens.fr/~labatut/ Département d informatique École normale supérieure

Plus en détail

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

Chapitre VIII. Les bases de données. Orientées Objet. Motivation Chapitre VIII Motivation Le modèle relationnel connaît un très grand succès et s avère très adéquat pour les applications traditionnelles des bases de données (gestion) Les bases de données Orientées Objet

Plus en détail

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA Stéphane Vialle Stephane.Vialle@supelec.fr http://www.metz.supelec.fr/~vialle 1 Principes 2 Architecture 3 4 Aperçu d utilisation

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

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

PROGRAMMATION PAR OBJETS

PROGRAMMATION PAR OBJETS PROGRAMMATION PAR OBJETS Java Environnement et constructions spécifiques Walter Rudametkin Maître de Conférences Bureau F011 Walter.Rudametkin@polytech-lille.fr B. Carré Polytech Lille 2 Java (Sun 1995)

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

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

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un

Plus en détail

Cours 14 Les fichiers

Cours 14 Les fichiers Cours 14 Les fichiers F. Gayral 1 Fichier : définition /media/travaux/documents/fgenseignement/java1/courstpsfgfc/14-fichiers/voirtypefichiers Fichier = ensemble d informations codées et stockées sur une

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

Synchro et Threads Java TM

Synchro et Threads Java TM Synchro et Threads Java TM NICOD JEAN-MARC Master 2 Informatique Université de Franche-Comté UFR des Sciences et Techniques septembre 2008 NICOD JEAN-MARC Synchro et Threads avec Java TM 1 / 32 Sommaire

Plus en détail

M1if22 - Logiciels éducatifs Conception & rôle de l enseignant

M1if22 - Logiciels éducatifs Conception & rôle de l enseignant M1if22 - Logiciels éducatifs Conception & rôle de l enseignant Stéphanie Jean-Daubias Stephanie.Jean-Daubias@liris.univ-lyon1.fr http://liris.cnrs.fr/stephanie.jean-daubias/ Plan du cours Méthodologies

Plus en détail

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/ Recherche opérationnelle Les démonstrations et les exemples seront traités en cours Souad EL Bernoussi Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/ Table des matières 1 Programmation

Plus en détail

HMI target Visu / PLC HMI. Pour réaliser une interface homme machine avec PLC control

HMI target Visu / PLC HMI. Pour réaliser une interface homme machine avec PLC control HMI target Visu / PLC HMI Pour réaliser une interface homme machine avec PLC control VERSION : 1.4 / PH DATE : 5 Novembre 2014 Sommaire Ce manuel explique de manière pratique les étapes successives pour

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

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

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

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

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

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

Remote Method Invocation en Java (RMI)

Remote Method Invocation en Java (RMI) Remote Method Invocation en Java (RMI) Modélisation et construction des applications réparties (Module M-4102C) J. Christian Attiogbé Fevrier 2015 J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation

Plus en détail

Manuel d'installation de GESLAB Client Lourd

Manuel d'installation de GESLAB Client Lourd Manuel d'installation GESLAB Client Lourd Référence Date de la dernière mise à jour Rédigé par Objet GESLAB_MINS_TECH_Manuel d'installation GESLAB Client 15/04/2013 Steria Manuel d'installation de GESLAB

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

WINDOWS SHAREPOINT SERVICES 2007

WINDOWS SHAREPOINT SERVICES 2007 WINDOWS SHAREPOINT SERVICES 2007 I. TABLE DES MATIÈRES II. Présentation des «content types» (Type de contenu)... 2 III. La pratique... 4 A. Description du cas... 4 B. Création des colonnes... 6 C. Création

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

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 ) P r ob lé m a t iq u e d e la g é n é r icit é les versions de Java antérieures à 1.5 permettaient de créer des classes de structures contenant n'importe quels types d'objet : les collections (classes

Plus en détail

Traitement de données

Traitement de données Traitement de données Présentation du module TINI Présentation du module : Le module Tini se décline en plusieurs versions, il est constitué d une carte d application et d un module processeur : Les modules

Plus en détail

WASD en environnement haute disponibilité Jean-Pierre PETIT WASD Le produit WASD WASD signifie Wide Area Surveillance Division C est le nom d une division de la défense australienne qui a accepté en 1996

Plus en détail