Programmer en Java. OC Informatique GYMNASE DE BURIER

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

Download "Programmer en Java. OC Informatique 14 15 GYMNASE DE BURIER"

Transcription

1 Programmer en Java OC Informatique GYMNASE DE BURIER

2 Table des matières 1 Greenfoot Concepts de base Gros chat Le monde du crabe 8 3 De l environnement intégré à la ligne de commande La structure de base d un premier programme Java La ligne de commande du Mac Compilation bidon Structure d un programme Java autonome La méthode main Un tout petit premier programme Un exemple un peu plus complexe Pour passer des paramètres Généralités sur Java 21 6 Quelques exercices d entraînement Faire calculer la machine Instructions répétitives Données numériques Données alphanumériques Pour commencer avec les tableaux La programmation objet en Java Classes et Objets Une classe et ses méthodes La notion de constructeur L accessibilité aux attributs d une classe La notion d accesseur La notion de mutateur Les attributs statiques

3 7.5 L héritage Introduction Un exemple complet Exercices sur les objets en java Figures géométriques La citerne Thermometre Devinez un nombre Ville et Capitale Jouer avec des dés Les Schtroumpfs Le Village Schtroumpf Exercices sur les tableaux et les boucles Listes dynamiques en Java La classe Personne Exercices divers Les piles Le point de départ : JFrame Deux niveaux d interface Composants Contenants Description de la JFrame Les gestionnaires de mise en forme Les événements 69 v. 2.0 Août 2014

4 1 Greenfoot 1.1 Concepts de base Exercice 1.1 On voit ci-dessous le menu contextuel associé à un wombat du scénario leaves-and-wombats. a) Établir une liste de toutes les méthodes du Wombat. b) Dans la liste de la question a), chercher toutes les méthodes sans valeur de retour. c) Dans la liste de la question a), chercher toutes les méthodes qui renvoient une valeur. Donner également le type de la valeur de retour. d) Décrire précisément chaque mot figurant dans l en-tête de la méthode setdirection. e) Donner la liste de toutes les valeurs que peut renvoyer la méthode canmove. f) Donner quelques exemples de valeurs que peut renvoyer la méthode getleaveseaten. g) Quelle est la méthode de la classe Wombat qui demande un paramètre? Quel est le type de ce paramètre? h) Que signifie le mot-clef void? Exercice 1.2 On donne le scénario cars, dans lequel on trouve la classe Car. Ouvrir ce scénario. a) Est-ce qu un objet de type Car existe à l ouverture du scénario? b) Est-ce que la classe Car existe à l ouverture du scénario? c) Combien d objets de type Car peut-on créer dans ce scénario? d) Créer quelques voitures. Ces voitures sont-elles différentes? e) Cliquer le bouton Act. Comment interpréter le résultat qui s affiche à la console? f) Remettre le scénario à zéro en cliquant le bouton Reset. Créer une voiture dans la première colonne. À l aide d un appel à la bonne méthode, faire se déplacer la voiture de deux cases vers la droite. 3

5 Exercice 1.3 Rédiger l en-tête d une méthode publique nommée send, disposant d un paramètre de type String, et qui ne renvoie pas de valeur. Exercice 1.4 Rédiger l en-tête d une méthode publique nommée moyenne, disposant de deux paramètres, tous deux de type int, et qui renvoie une valeur int. Exercice 1.5 Voici le diagramme de classe des acteurs du scénario leaves-and-wombats On donne également les en-têtes des classes figurant dans ce diagramme à l exception de la classe Actor. public class Wombat extends Actor public class Leaf extends Actor Dessiner le diagramme de classe des acteurs du scénario asteroids à partir des en-têtes de classes donnés ci-dessous: public class Explosion extends Actor public class Mover extends Actor public class Bullet extends Mover public class Rocket extends Mover public class Asteroid extends Mover 1.2 Gros chat Exercice 1.6 Observez les en-têtes de méthodes ci-dessous: public void play() public void addamount(int amount) public boolean haswings() public void compare(int x, int y, int z) public boolean isgreater (int number) 4

6 Pour chaque en-tête, répondez aux questions suivantes : a) Quel est le nom de la méthode? b) La méthode retourne-t-elle une valeur? Si c est le cas, quelle est le type de la valeur de retour? c) Combien de paramètres a la méthode? Exercice 1.7 Écrivez l en-tête d une méthode dont le nom est go. La méthode n a pas de paramètre et ne retourne aucune valeur. Exercice 1.8 Écrivez l en-tête d une méthode dont le nom est process. La méthode a un paramètre de type int intitulé number et elle retourne une valeur de type int. Exercice 1.9 Sur papier, écrivez un appel de méthode pour la méthode play de l exercice 1. Donnez un autre appel de méthode pour la méthode addamount de l exercice 1. 5

7 Exercice 1.10 On donne ci-dessous les méthodes de la classe Cat du scénario fatcat. Écrire la méthode act de votre chat en respectant les deux points suivants simultanément: a) si le chat s ennuie, il danse et crie Hooray ; b) s il ne s ennuie pas, il se déplace à gauche de cinq unités et, dans ce cas seulement, s il est fatigué, il dort durant trois unités de temps. Tous les exercices qui suivent sont destinés à être faits dans le scénario Greenfoot: fatcat. Ouvrez le scénario dans Greenfoot avant de poursuivre. Pour télécharger ce nouveau scénario : Exercice 1.11 Ouvrez le code la classe Cat dans l éditeur. Assurez-vous que l éditeur est en mode de documentation. De combien de méthodes dispose la classe Cat? Exercice 1.12 Combien de méthodes de la classe Cat retournent une valeur? Exercice 1.13 Combien de paramètres contient la méthode sleep? 6

8 Exercice 1.14 Essayez d appeler certaines méthodes de votre chat de façon interactive, en utilisant le menu contextuel du chat. Les méthodes intéressantes proviennent toutes de Inherited from Cat. Exercice 1.15 Est-ce que le chat s ennuie? Comment pouvez-vous faire pour qu il ne s ennuie pas? Exercice 1.16 Ouvrez l éditeur pour la classe MyCat. (C est là que vous allez écrire le code pour tous les exercices suivants.) Faites manger lechatquand ilagit.(c est àdire:danslaméthodeact, écrire unappelàla méthode eat.) Compiler. Testez en appuyant sur le bouton Act dans le panneau de contrôle de l exécution. Exercice 1.17 Faites danser le chat. (Ne pas le faire de façon interactive - écrivez du code dans la méthode act pour ce faire. Lorsque vous avez terminé, cliquez sur le bouton Act dans le panneau de contrôle de l exécution.) Exercice 1.18 Faites dormir le chat. Exercice 1.19 Faites exécuter à votre chat une séquence d actions de votre choix, choisies parmi celles qui sont disponibles. Exercice 1.20 Changer la méthode act de votre chat afin que, lorsque vous cliquez Act, si le chat est fatigué, il dort un peu. Si il n est pas fatigué, il ne fait rien. Exercice 1.21 Changer la méthode act de votre chat pour qu il danse s il s ennuie. (Mais seulement s il s ennuie.) Exercice 1.22 Changer la méthode act de votre chat pour qu il mange s il a faim. Exercice 1.23 Modifier la méthode act de votre chat de la façon suivante: Si le chat est fatigué, il dort un peu, et puis il crie hooray. S il n est pas fatigué, il crie seulement hooray. (Pour les essais, faire en sorte que le chat soit fatigué en appelant des méthodes de manière interactive. Comment pouvez-vous faire pour que le chat soit fatigué?) Exercice 1.24 Modifier le code de la méthode act de façon à obtenir le comportement suivant: Si votre chat est seul, faites-le dormir. S il n est pas seul, faites le crier: hooray. Testez en plaçant un deuxième chat dans le monde avant de lancer Act. 7

9 2 Le monde du crabe Exercice 2.1 Voici le code source de la classe CrabWorld du scénario little-crab-5 import greenfoot.*; // imports Actor, World, Greenfoot, GreenfootImage import java.util.random; import java.awt.color; public class CrabWorld extends World /** * Create the crab world (the beach). Our world has a size * of 560x560 cells, where every cell is just 1 pixel. */ public CrabWorld() super(560, 560, 1); populateworld(); /** * Create the objects for the start of the game. */ public void populateworld() addobject(new Crab(), 300, 300); addobject(new Lobster(), 90, 70); addobject(new Lobster(), 390, 200); addobject(new Lobster(), 360, 500); addobject(new Worm(), 20, 500); addobject(new Worm(), 30, 200); addobject(new Worm(), 60, 90); addobject(new Worm(), 80, 310); addobject(new Worm(), 150, 50); addobject(new Worm(), 210, 410); addobject(new Worm(), 220, 520); addobject(new Worm(), 380, 330); addobject(new Worm(), 410, 270); addobject(new Worm(), 530, 30); Onconstatequelesobjetssontplacés àlamain lesunsàlasuitedesautres.àl aidedel instruction while, modifier le code ci-dessus pour placer automatiquement un crabe, trois homards et dix vers aléatoirement sur l écran à l ouverture du scénario. 8

10 On utilisera la méthode Greenfoot.getRandomNumber(int limit). Écrire le code source de la nouvelle méthode populateworld. Exercice 2.2 On a ajouté au scénario little-crab-5 une sous-classe FatWorm de la classe Worm. On donne ci-dessous le code source de la méthode lookforworm de la classe Crab: /** * Check whether we have stumbled upon a worm. * If we have, eat it. If not, do nothing. If we have * eaten eight worms, we win. */ public void lookforworm() if ( cansee(worm.class) ) eat(worm.class); Greenfoot.playSound( slurp.wav ); wormseaten = wormseaten + 1; if (wormseaten == 8) Greenfoot.playSound( fanfare.wav ); Greenfoot.stop(); L appel de méthode cansee(worm.class) retourne true si le crabe voit un objet de la classe Worm ou de sa sous-classe FatWorm. 9

11 Modifier la méthode lookforworm de façon à ce que l attribut wormseaten soit augmenté de 2 lorsque le crabe mange un objet de la classe FatWorm, toutes choses restant égales par ailleurs. Réécrire complètement la méthode lookforworm ci-dessous, après lui avoir fait les modifications nécessaires. On veillera à changer le commentaire... 10

12 3 De l environnement intégré à la ligne de commande Le fascicule Introduction à la programmation orientée objet avec Greenfoot, tiré du livre Introduction to programming with Greenfoot de Michael Kölling donne un cours d introduction à la programmation dans le cadre d un environnement de programmation intégré. L environnement intégré Greenfoot fournit une fenêtre graphique, un diagramme de classes, un tableau commande du scénario (avec des boutons Run, Act, etc.) et un éditeur de texte pour afficher et modifier le code source d une classe. Nous supposons ici que l environnement Greenfoot vous est familier et que vous avez compris les bases de la programmation en Java qui sont exposées dans le fascicule Introduction à la programmation orientée objet avec Greenfoot. Nous allons maintenant nous intéresser à un environnement beaucoup plus basique. Il est tout à fait possible de compiler un programme Java avec des outils plus simples, en particulier si l on se contente d une interface utilisateur très limitée. Nous présentons ci-dessous ce qu il faut savoir au minimum pour pouvoir exécuter de petits programmes écrits en Java sur une machine récente. En bref, il faut un éditeur de texte (Smultron pour Mac, ou Notepad++ pour Windows, par exemple) et un compilateur. Tant sous Windows que sous OS X, un compilateur est d accès facile via une fenêtre de terminal. Une fois ces deux outils réunis, on peut compiler et exécuter de petits programmes Java. 3.1 La structure de base d un premier programme Java Un programme Java comporte au moins un fichier qui doit contenir au minimum une classe Java. La fenêtre ci-dessous, copie d écran d une fenêtre TextMate montre le programme ne comportant que la classe Bidon, sans aucune instruction à l intérieur du bloc formé des accolades qui suivent. Notons le commentaire, ignoré par le compilateur, mais essentiel pour le programmeur! 11

13 Nous pouvons compiler sans erreur un fichier de ce genre, pour peu qu il ait été enregistré sous le nom de Bidon.java. Le nom de la classe commence conventionnellement par une majuscule. Le nom du fichier doit être identique au nom de la classe. Le code source correspondant est le suivant: /** * Bidon.java - une classe vide dans un fichier texte. * On ne peut pas faire plus simple! * juin 2010 Thivent Besson */ public class Bidon Supposons maintenant que, tout comme le suggère la copie d écran plus haut, le code source ci-dessus a été enregistré sur le disque dur de notre ordinateur. On pourra alors, à l aide d un compilateur, créer un fichier Bidon.class, contenant du bytecode Java que la machine virtuelle Java peut exécuter. Pour cela, il faut accéder au compilateur. Le paragraphe suivant présente une introduction minimale à la ligne de commande du Mac, qui expose comment compiler un fichier Java. Exercice 3.1 Dans votre éditeur de texte, saisir le code source de la classe Bidon.java. Sauvegarder ce fichier texte dans un dossier exercice 1 1, qui devra être placé dans le répertoire contenant tous vos exercices. 3.2 La ligne de commande du Mac Sous OS X, le compilateur est installé par défaut et on y accède au moyen de la ligne de commande du terminal Unix. Il suffit, pour accéder au compilateur, d ouvrir une fenêtre terminal à l aide de l application portant le même nom. On obtient une fenêtre qui ressemble à celle-ci: La ligne de commande est un outil de gestion extrêmement puissant. Nous nous bornerons à utiliser ici le compilateur Java. Pour pouvoir l employer, il faut tout d abord être en mesure d accéder au fichier contenant le code source Java. Le fichier est enregistré dans un dossier que nous avons choisi: ici, le dossier Documents de notre session, qui contient lui-même un dossier 12

14 exercicesjava; dans ce dernier, nous trouvons un dossier exercice 1 1, dans lequel finalement se trouve notre fichier Bidon.java. Il nous faut maintenant trouver le moyen d accéder à ce fichier depuis la ligne de commande. Il faut savoir ici que lors de l ouverture d une fenêtre terminal, le répertoire courant peut être donné par la commande pwd, autrement dit: present working directory; les commandes de la ligne de terminal seront très souvent de tels sigles. Voyons l effet de la commande pwd: Le répertoire courant est thiventbesson, sous-répertoire de Users, qui est le dossier contenant les fichiers personnels de la session courante. Exercice 3.2 Ouvrir une fenêtre de l application Terminal sur votre session. Déterminer le répertoire courant et l ouvrir dans l interface graphique du système d exploitation de votre machine. 13

15 Pour obtenir la liste des fichiers contenus dans le répertoire courant, on utilise la commande ls et on obtient: On voit maintenant le dossier Documents dans la liste des sous-répertoires du répertoire courant. Il faut trouver moyen de changer de répertoire pour se trouver à l intérieur du dossier Documents. Pour ce faire, on utilisera la commande cd, change directory. La commande cd Documents aura l effet suivant: Enutilisantàbonescientlacommandecdencoredeuxfois,onpeutseplacerdansledossierdans lequel se trouve notre programme Bidon.java. Une vérification au moyen de la commande ls confirme que nous nous trouvons au bon endroit. Exercice 3.3 Ouvrir une fenêtre de l application Terminal sur votre session. Faire en sorte que le répertoire courant soit celui dans lequel se trouve votre fichier Bidon.java. 14

16 3.3 Compilation bidon La compilation du fichier Bidon.java est maintenant un jeu d enfant. Il suffit en effet d écrire la commande suivante: javac Bidon.java L effet en est le suivant: Apparemment, il ne s est rien passé. La commande ls nous montre le contraire. En effet, le compilateur a produit un fichier Bidon.class qui se trouve dans le répertoire courant. Pour exécuter un fichier après compilation, on utilise simplement la commande java suivi du nom du fichier sans l extension.class. Essayons d exécuter notre programme Bidon, au moyen de la commande java Bidon. Exercice 3.4 Compiler le fichier Bidon.java et tenter d exécuter le fichier résultat Bidon.class avec la machine virtuelle Java. Nous aurions pu nous attendre à ce que l exécution se borne à ne rien faire. Mais nous obtenons le message d erreur suivant: Exception in thread "main" java.lang.nosuchmethoderror: main Il nous faut maintenant éliminer la cause de cette erreur. C est le sujet du paragraphe suivant. 15

17 4 Structure d un programme Java autonome 4.1 La méthode main Force nous est de constater que la compilation d une classe vide ne provoque pas d erreur, mais que la machine virtuelle chargée de l exécution ne trouve pas la méthode main de notre programme. Tout programme java doit en effet comporter une méthode main chargée du fil d exécution principal. La syntaxe de cette méthode est la suivante: public static void main (String[] args) // Code exécutable à cet endroit Exercice 4.1 Editer le fichier Bidon.java et ajouter la méthode main au bloc vide suivant la déclaration de la classe Bidon. Compiler ce nouveau fichier et vérifier qu il est exécuté sans erreur par la machine virtuelle Java même s il ne se passe rien à l exécution. En résumé, un programme Java minimal est formé d une classe contenant une méthode main comme ci-dessous. /** * Bidon.java - une classe contenant une méthode main vide * le plus simple que l on puisse faire sans erreur à l exécution! * juin 2010 Thivent Besson */ public class Bidon public static void main (String[] args) La méthode main est une méthode statique qui n est liée à aucune instance particulière de la classe dans laquelle elle se trouve. Le paramètre String[] args de la méthode main permet de récupérer des arguments transmis au programme au moment de son lancement. Pour que le programme Bidon.java fasse vraiment quelque chose, nous allons mettre du code source dans la méthode main. 16

18 4.2 Un tout petit premier programme On veut écrire ici un programme qui affiche les nombres de 1 à 10, directement dans la fenêtre de terminal. Il suffit d utiliser une boucle for et d appeler la méthode println() de l objet System.out qui est ici la fenêtre de terminal dans laquelle nous travaillons depuis le début. Pour que la méthode println() affiche le nombre voulu, on lui passe en paramètre le compteur i de la boucle for. Exercice 4.2 Dans un dossier exercice 2 2, créer un fichier CompteJusquaDix.java dans lequel écrire le programme décrit ci-dessus. Compiler et lancer le résultat dans une fenêtre terminal. On donne ci-dessous la solution de l exercice 2.2: /** * CompteJusquaDix.java - une classe pour afficher * les dix premiers nombres entiers * juin 2010 Thivent Besson */ public class CompteJusquaDix public static void main (String[] args) for (int i = 1; i <= 10; i += 1) System.out.println(i) Exercice 4.3 Écrire un programme qui affiche les 20 premiers multiples de 7. Compiler et lancer le résultat dans une fenêtre terminal. 17

19 4.3 Un exemple un peu plus complexe On donne maintenant un exemple de code un peu plus élaboré, utilisant des variables déclarées dans la fonction main. /** * AfficheLogarithmes.java - une classe permettant d afficher les * logarithmes des puissances successives d un nombre et de constater * que ce sont des multiples du logarithme du nombre de départ. * juin 2010 Thivent Besson */ public class AfficheLogarithmes public static void main (String[] args) int n; double base; double nombre; double resultat; n = 5; base = 2.0; nombre = 2.4; System.out.println(); for (int i = 1; i <= n; i += 1) resultat = Math.log(Math.pow(nombre, i))/math.log(base); System.out.println("Le log en base " + base + " de " + nombre + " élevé à la puissance " + i + " vaut " + resultat); resultat = Math.log(nombre)/Math.log(base); System.out.println(); System.out.println("Ce sont les multiples de " + resultat); System.out.println(); Exercice 4.4 Expliquer ce que fait le code ci-dessus. 18

20 Exercice 4.5 En vous inspirant de l exemple ci-dessus, par exemple, inventer un petit programme qui utilise des variables déclarées dans la fonction main. Tester le programme en question. 4.4 Pour passer des paramètres On aimerait bien, à ce stade, pouvoir passer en paramètre des nombres ou des chaînes de caractères à notre programme. Il suffit, pour ce faire, d utiliser le tableau args défini dans l en tête de notre méthode main. Comme indiqué dans la liste des paramètres de cette méthode, le tableau args est un tableau de chaînes de caractère. Aucun problème donc pour passer des chaînes de caractères à notre programme. Mais nous aimerions récupérer des arguments numériques. Pour ce faire, Java nous a prévu les méthodes de classe Integer.parseInt() et Double.parseDouble(). Voici notre programme modifié: /** * AfficheLogAvecParam.java - une classe permettant d afficher les * logarithmes des puissances successives d un nombre et de constater * que ce sont des multiples du logarithme du nombre de départ. * * On doit passer trois paramètres à la méthode main * depuis la ligne de commande: le nombre d étapes, * la base du log et le nombre. * juin 2010 Thivent Besson */ public class AfficheLogAvecParam public static void main (String[] args) int n; double base; double nombre; double resultat; n = Integer.parseInt(args[0]); base = Double.parseDouble(args[1]); nombre = Double.parseDouble(args[2]); System.out.println(); System.out.println("Les logarithmes de " + args[3]); System.out.println(); for (int i = 1; i <= n; i += 1) 19

21 resultat = Math.log(Math.pow(nombre, i))/math.log(base); System.out.println("Le log en base " + base + " de " + nombre + " élevé à la puissance " + i + " vaut " + resultat); resultat = Math.log(nombre)/Math.log(base); System.out.println(); System.out.println("Ce sont les multiples de " + resultat); System.out.println(); Pour passer les paramètres au programme on compile comme d habitude et on appelle le programme depuis la ligne de commande avec l instruction suivante: java AfficheLogAvecParam "Thivent Besson" Les paramètres sont séparés par un espace. Le premier paramètre est un entier, les deux suivants sont des codes à virgules et le dernier est une chaîne de caractère. On peut voir l effet de cette commande dans une fenêtre terminal: Exercice 4.6 Modifier votre programme inventé à l exercice précédent de sorte à ce que l appel de la ligne de commande puisse lui passer des valeurs en paramètre. Compiler et faire exécuter le résultat par la machine virtuelle java, en ligne de commande, bien entendu. On peut remarquer que notre programme ne fait quasiment pas usage du fait que Java est un langage orienté objet. Nous nous sommes bornés à utiliser quelques méthodes de classes prédéfinies dans Java, mais nous n avons instancié aucun objet dont nous aurions créé la classe nous-mêmes. C est normal, car l un des buts de ce paragraphe du cours est de faire un peu de programmation procédurale en Java, c est à dire de la programmation qui n utilise pas le concept d objet et qui produit des suites d instructions devant être traitées séquentiellement. Nous espérons par ce biais vous permettre d entraîner les instructions de base du langage Java. 20

22 5 Généralités sur Java Exercice 5.1 Faire tourner un programme contenant l instruction suivante: System.out.println(i++); Quel sera le nombre affiché à la console? Exercice 5.2 Comment peut-on connaître les paramètres à fournir pour créer un nouvel objet? En consultant... a) les constructeurs b) les méthodes c) les packages d) les librairies Exercice 5.3 La méthode dont la signature est donnée ci-dessous se trouve dans la classe Math, comment faire pour calculer le sinus de 1 radian? public static double sin (double angle); a) Math m = new Math(); m.sin(1); b) new Math().sin(1); c) Math.sin(1); d) Math.static.sin(1); Exercice 5.4 Que va afficher cette instruction à la console? System.out.println ( " enfants"); a) 45 enfants b) 9 enfants c) 0 d) 0 enfants Exercice 5.5 Que vaut c après l exécution du code suivant : int a = 41, b = 10, c; c = a / b; a) 4.1 b) 4 c) 0 d) 1 21

23 Exercice 5.6 Cette déclaration private int age; est faite dans une classe Person. Où cette variable ne sera-t-elle pas visible? a) Dans les méthodes de la classe Person b) Dans le corps de la classe Person c) Dans le code qui utilise un objet de la classe Person d) Nulle part, elle sera visible partout Exercice 5.7 Le code ci-dessous est-il correct? int [] tab; //tableau d entiers for(int i=0 ; i<10 ; i++) tab[i]=0; Exercice 5.8 Quelle instruction faut-il utiliser pour créer un nouveau tableau d entiers de type int de 5 cases? a) Array t = new Array ("int", 5); b) int t = new int[5]; c) int[] t = new int[5]; d) int[] t = new int[4]; e) Array t = new int[5]; Exercice 5.9 Que se produit-il si on compile et exécute le programme suivant : public class Test public static void main(string []args) int []t; t = new int[4]; for(int i = 0; i<= 4; i++) System.out.print(t[i]); a) b) c) il ne se compile pas d) une erreur d exécution se produit 22

24 Exercice 5.10 Que manque-t il pour que cette déclaration de méthode compile? public somme (int a, int b) return a + b; a) Rien du tout, c est correct b) Il manque le type de retour c) On ne peut pas renvoyer directement a+b, il faut créer une variable locale, y placer le résultat de a+b puis la renvoyer d) Il manque le modificateur private Exercice 5.11 Étant donné la définition suivante de la classe Test, quelles méthodes données plus bas pourraient être placées après le commentaire? public class Test public void mamethode(int i, String s) //ici a) public void mamethode(string s, int i) b) public int mamethode(int i, String s) c) public void mamethode(int i, String texte) d) public void madeuxiememethode(int i, String s) Exercice 5.12 Pour la classe Info définie ainsi : public class Info public Info() System.out.println("Groupe"); public Info(int i) this(); System.out.println(" OCI " + i); Qu affichera l instruction suivante : Info x = new Info(2);? 23

25 a) erreur de compilation b) erreur d exécution c) Groupe OCI 2 d) OCI 2 Exercice 5.13 Soit la classe C définie ainsi : public class C public static int i; public int j; public C() i++; j=i; Qu affichera le code suivant : C x = new C(); C y = new C(); C z = x; System.out.println(z.i + " et " + z.j); a) 2 et 2 b) 1 et 1 c) 2 et 1 d) 1 et 3 Exercice 5.14 Observer les classes suivantes : public class Person public void talk() System.out.print("I am a Person "); public class Student extends Person public void talk() 24

26 System.out.print("I am a Student "); Quel sera le résultat du morceau de code qui suit : public class Test public static void main(string[] args) Person p = new Student(); p.talk(); a) I am a Person b) I am a Student c) I am a Person I am a Student d) I am a Student I am a Person 6 Quelques exercices d entraînement Ces exercices sont tirés du livre Apprendre à programmer avec Python 3 de Gérard Swinnen. Pour vous aider à faire ces exercices, il vous faudra peut-être une référence résumant les éléments du langage Java vus jusqu ici. Le site openclassrooms offre des explications de bonne qualité et la page Bien commencer en Java du tutoriel de programmation en java vous sera sans doute utile. L URL du site est: Faire calculer la machine Exercice 6.1 Écrire un programme qui calcule le volume d un parallélépipède rectangle dont sont fournis au départ la largeur, la hauteur et la profondeur. Exercice 6.2 Écrire un programme qui convertit un nombre entier de secondes fourni au départ en un nombre d années, de mois, de jours, de minutes et de secondes (utiliser l opérateur modulo: %). 6.2 Instructions répétitives Exercice 6.3 Écrire un programme qui affiche en colonne les 20 premiers termes de la table de multiplication 25

27 par 13, en signalant au passage à l aide d un décalage vers la droite ceux qui sont également des multiples de 3. Exercice 6.4 Écrire un programme qui affiche en colonne les n premiers termes de la table de multiplication par k, en signalant au passage à l aide d un décalage vers la droite ceux qui sont également des multiples de m. Les nombres n, m et k sont des entiers. Exercice 6.5 Écrire un programme qui calcule les 50 premiers termes de la table de multiplication par 17, mais n affiche que ceux qui sont des multiples de 7. Exercice 6.6 Écrire un programme qui calcule les n premiers termes de la table de multiplication par k, mais n affiche que ceux qui sont des multiples de m. Exercice 6.7 Écrire un programme qui affiche un nombre donné de lignes avec sur chaque ligne un nombre d étoile correspondant au numéro de la ligne. 6.3 Données numériques Exercice 6.8 Écrire un programme qui convertit en radians un angle fourni au départ en degrés, minutes et secondes. Exercice 6.9 Écrire un programme qui convertit en degrés, minutes et secondes un angle fourni au départ en radians. Exercice 6.10 Écrire un programme qui convertit en degrés Celsius une température exprimée au départ en degrés Farenheit, ou l inverse. La formule de conversion s écrit: Exercice 6.11 T F = T C Écrire un programme qui calcule les intérêts accumulés chaque année pendant 20 ans, par capitalisation d une somme de 100 francs placée en banque au taux fixe de 2.25%. Exercice 6.12 Une légende de l Inde ancienne raconte que le jeu d échecs a été inventé par un vieux sage, que son roi voulut remercier en lui affirmant qu il lui accorderait n importe quel cadeau en récompense. Le vieux sage demanda qu on lui fournisse simplement un peu de riz pour ses vieux jours, et plus précisément un nombre de grains de riz suffisant pour que l on puisse en déposer un seul sur la 26

28 première case du jeu qu il venait d inventer, deux sur la suivante, quatre sur la troisième, et ainsi de suite jusqu à la 64ème case. Ecrire un programme Java qui affiche le nombre de grains à déposer sur chacune des 64 cases du jeu. Calculer ce nombre de deux manières: a) sous la forme d un nombre entier de grains; b) en exprimant le nombre de grains en notation scientifique. 6.4 Données alphanumériques Exercice 6.13 Écrire un programme qui détermine si une chaîne de caractères contient ou non le caractère e. Exercice 6.14 Écrire un programme qui compte de nombre d occurrences du caractère e dans une chaîne de caractères. Exercice 6.15 Écrire un programme qui recopie une chaîne dans une nouvelle variable, en insérant des astérisques entre les caractères. Ainsi, par exemple, gaston devra devenir g*a*s*t*o*n. Exercice 6.16 Écrire un programme qui recopie une chaîne dans une nouvelle variable, en l inversant. Ainsi, par exemple, zorglub devra devenir bulgroz. Exercice 6.17 En partant de l exercice précédent, écrire un programme qui détermine si une chaîne de caractères donnée est un palindrome, c est à dire une chaîne qui peut se lire indifféremment dans les deux sens, comme par exemple radar ou sugus. Exercice 6.18 Écrire un programme nommé MultiConcat qui prend comme paramètres une chaîne de caractères et un entier. Ce programme retourne la chaîne de caractères passée en paramètre concaténée avec elle-même n fois, où n est l entier passé en paramètre. Par exemple, si la chaîne de caractères est hi et l entier n = 4, le programme retourne hihihihi. Ce programme retourne la chaîne originale si l entier passé en paramètre est strictement plus petit que deux. 27

29 6.5 Pour commencer avec les tableaux Exercice 6.19 Écrire un programme qui affiche sur une ligne tous les éléments d un tableau. Par exemple, le tableau déclaré comme suit: String[] tableaudesjours = "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche" devrait apparaître sous la forme ci-dessous. Lundi Mardi Mercredi Jeudi Vendredi Samedi Dimanche Exercice 6.20 Écrire un programme qui recherche le plus grand élément présent dans un tableau de nombres donné. Par exemple, si on l appliquait au tableau déclaré comme suit: int[] tableaunombres = 32, 5, 12, 8, 3, 75, 2, 15 cela nous donnerait Le plus grand élément de la liste a la valeur 75. Exercice 6.21 Écrire un programme qui analyse un par un tous les éléments d un tableau de nombres pour générer deux nouveaux tableaux. L un contiendra les nombres pairs de la liste initiale, et l autre les nombres impairs. Exercice 6.22 Écrire un programme qui analyse un par un tous les éléments d un tableau de mots pour générer deux nouveaux tableaux. L un contiendra les mots comptant moins de six caractères, l autre les mots comptant six caractères ou davantage. 28

30 7 La programmation objet en Java Les concepteurs de langages cherchent les moyens de faciliter la création et la maintenance du code. Une méthode souvent retenue consiste à structurer le langage au moyen de procédures qui sont des blocs de code effectuant une action bien précise sur des données du programme. Il est possible de regrouper ces procédures en bibliothèques utilisables par d autres programmeurs. Cette façon de faire est efficace mais présente l inconvénient de séparer le code et les données et d être sensible aux effets de bord. L idée de base des langages objets, comme Java, est de regrouper données et code en une même entité l objet. Cette réunion données-code se nomme encapsulation. 7.1 Classes et Objets Une classe est une collection d attributs (ou champs) contenant des valeurs; de constructeurs servant à créer les objets; de méthodes définissant des actions. On peut considérer une classe comme le moule qui permet de fabriquer les objets. Un objet est une réalisation concrète et utilisable de la classe : on dit que c est une instance de la classe. new Classe Instances objet 1 objet 2 objet 3 Voyons comment déclarer une classe en nous inspirant de Greenfoot et du scénario little-crab. Les attributs et les méthodes sont adaptées pour rendre l exemple plus parlant. public class Animal Pour déclarer les variables constituant les attributs de la classe, nous devons choisir leur type. Prenons par exemple le type int pour l âge, float pour la taille et String pour la couleur. 29

31 public class Animal public int age; public float taille; public String couleur; L étape suivante consiste à ajouter des méthodes à notre classe. Avant de déclarer une méthode, il faut décider si elle prend des arguments et si elle retourne une valeur : Le constructeur Animal() qui est une méthode, sans valeur de retour, portant le même nom que la classe. Cette méthode est invoquée lors de la création de l objet de la classe Animal (opérateur new). La méthode move() permet à l animal de se déplacer. Elle n a pas besoin d argument et ne retourne aucune valeur. La méthode turn(int angle) permet à l animal de tourner d un angle en degré dans le sens des aiguilles d une montre. Elle a besoin d un argument et ne retourne aucune valeur. La méthode atworldedge() teste si l animal est au bord du monde. Elle n a pas besoin d argument et retourne true si c est le cas ou false sinon. La nouvelle version de la classe Animal ressemble à ceci : public class Animal public int age; public float taille; public String couleur; public Animal()... public void move()... public void turn(int angle)... public boolean atworldedge()... 30

32 7.2 Une classe et ses méthodes Nous désirons gérer des comptes bancaires. Pour cela, nous implémentons une classe Compte avec deux attributs : le numéro du compte le solde du compte et quatre méthodes : deposer retirer avoirsolde avoirnumero Nous résumons cette classe sous la forme d un schéma : Compte int numero double solde void deposer(double montant) void retirer(double montant) int avoirnumero() double avoirsolde() L implémetation est relativement simple, en quelques mots : la méthode deposer effectue la somme du solde courant et d un montant : solde = solde + montant la méthode retirer effectue la différence entre solde courant et d un montant : solde = solde - montant la méthode avoirnumero retourne le numéro du compte la méthode avoirsolde retourne le solde du compte Voici l implémentation de la classe Compte. public class Compte public int numero; public double solde; /** * Déposer un montant sur le compte */ public void deposer(double montant) 31

33 solde = solde + montant; /** * Retirer un montant du compte */ public void retirer(double montant) solde = solde - montant; /** * Retourne le numero du compte */ public int avoirnumero() return numero; /** * Retourne le solde du compte */ public double avoirsolde() return solde; Créons un compte bancaire Compte moncompte. Créons une classe Banque pour tester le tout dans la méthode main : class Banque public static void main (String arg[]) Compte moncompte; moncompte = new Compte(); System.out.println("****************"); System.out.println("Création d un nouveau compte"); System.out.println(monCompte.numero); System.out.println(monCompte.solde); 32

34 Remarque La déclaration Compte moncompte ne réserve pas d emplacement pour un objet de type Compte, mais seulement un emplacement pour une référence à un objet de type Compte. L emplacement pour l objet proprement dit sera alloué sur une demande explicite du programme, en faisant appel à l opérateur new. Ainsi l expression : new Compte() // attention à la présence des parenthèses crée un emplacement pour un objet de type Compte et fournit sa référence en résultat. Voici l exécution du programme Banque : La classe Compte ne contient pas de constructeur. La définition de cette méthode n est pas obligatoire dans la mesure où un constructeur par défaut (appelé parfois constructeur sans argument) est défini par le compilateur Java si la classe n en possède pas. La création de l objet (instance) attribue une valeur par défaut à chaque variable d instance, qu elle soit d un type primitif (dans notre cas : 0 pour la variable numero et 0.0 pour la variable solde) ou de référence (sa valeur est alors null). Modifions la classe Banque. class Banque public static void main (String arg[]) Compte moncompte; moncompte = new Compte(); System.out.println("****************"); System.out.println("Création d un nouveau compte"); moncompte.numero=200; // Affectation d un numéro de compte moncompte.solde= ; // Affectation d un solde au compte System.out.println(monCompte.numero); System.out.println(monCompte.solde); moncompte.deposer(300.0); 33

35 System.out.println("Le numéro de moncompte est : "+moncompte.avoirnumero()); System.out.println("Le solde de moncompte est : "+moncompte.avoirsolde()); L instruction moncompte.numero=200 attribue un numéro de compte, tandis que l instruction moncompte.deposer(300.0) ajoute le nombre à virgule au solde du compte (appel de méthode). Voici l exécution du nouveau programme Banque : Utilisation des objets Accès aux données La référence à une donnée définie dans une classe d objet a pour syntaxe : nomobjet. nomattribut Le point marque la séparation entre le nom de l objet et le nom de la méthode de cet objet. Accès aux méthodes Quand on applique les méthodes aux objets, on dit qu on envoie des messages aux objets. Cela s écrit ainsi : nomobjet. nomméthode() 7.3 La notion de constructeur Dans l exemple Compte, le compilateur utilise un constructeur par défaut. Nous souhaitons définir immédiatement le numéro et le solde du compte dès sa création. Pour cela nous avons besoins d un constructeur. Voici un exemple de constructeur : public Compte(int a, double b) numero=a; solde=b; 34

36 Dés lors les instructions Compte moncompte; moncompte = new moncompte(300, ); initialise le compte moncompte avec le numéro 300 et un solde égal à Voici quelques règles à suivre concernant les constructeurs : un constructeur doit toujours être une méthode publique vous devez impérativement donner le même nom que votre classe au constructeur un constructeur ne retourne rien, c est à dire que vous n ajouterez pas de return dans cette méthode vous ne devez pas mettre de void, même si le constructeur ne retourne rien 7.4 L accessibilité aux attributs d une classe Dans l introduction de ce chapitre, nous avons parlé d encapsulation. L encapsulation est un mécanisme consistant à rassembler les données (les arguments) et les méthodes au sein d une structure en cachant l implémentation de l objet, c est-à-dire en empêchant l accès aux données par un autre moyen que les services proposés. L encapsulation permet donc de garantir l intégrité des données contenues dans l objet. L encapsulation permet de définir des niveaux de visibilité des éléments de la classe. Ces niveaux de visibilité définissent les droits d accès aux données selon que l on y accède par une méthode de la classe elle-même, d une classe héritière, ou bien d une classe quelconque. Il existe trois niveaux de visibilité : publique : les fonctions de toutes les classes peuvent accéder aux données ou aux méthodes d une classe définie avec le niveau de visibilité public. Il s agit du plus bas niveau de protection des données protégée : l accès aux données est réservé aux fonctions des classes héritières, c est-à-dire par les fonctions membres de la classe ainsi que des classes dérivées privée : l accès aux données est limité aux méthodes de la classe elle-même. Il s agit du niveau de protection des données le plus élevé Dans la classe Compte définies au point 4.2, les attributs sont publiques. En les déclarant privés, l accès à ces attributs avec une expression moncompte.numero=200 n est plus possible. Voyons cela avec un exemple plus simple. public class Test private int x; Créons une instance de Test et essayons d accéder à l attribut x. Voici une classe TestX qui montre le résultat : 35

37 class TestX public static void main (String arg[]) Test test; test = new Test(); System.out.println("****************"); System.out.println(test.x); Nous obtenons une erreur de compilation, comme le montre la fenêtre ci-dessous : Pour accéder ou modifier des attributs déclarés privés, on crée des méthodes nommées accesseurs ou mutateurs La notion d accesseur Un accesseur est une méthode permettant de récupérer le contenu d une donnée membre protégée. Un accesseur, pour accomplir sa fonction : doit avoir comme type de retour le type de la variable à renvoyer ne doit pas nécessairement posséder d arguments Une convention de nommage veut que l on fasse commencer de façon préférentielle le nom de l accesseur par le préfixe get, afin de faire ressortir sa fonction première. La syntaxe d un accesseur réduit à sa plus simple expression ressemble donc à ceci : public class Test private int x; public int getx() return x; 36

38 7.4.2 La notion de mutateur Un mutateur est une méthode permettant de modifier le contenu d une donnée membre protégée. Un mutateur, pour accomplir sa fonction : doit avoir comme paramètre la valeur à assigner à la donnée membre. Le paramètre doit donc être du type de la donnée membre ne doit pas nécessairement renvoyer de valeur (il possède dans sa plus simple expression le type void) Une convention de nommage veut que l on fasse commencer de façon préférentielle le nom du mutateur par le préfixe set. La syntaxe d un mutateur réduit à sa plus simple expression ressemble donc à ceci : public class Test private int x; public void setx (int a) x = a; Les attributs statiques Unattribut statiqueest unattributqui est communàtouslesobjetsque vous pourrezcréer. On peut par exemple citer un compteur du nombres d instances de classe que vous aurez lancées. Si vous souhaitez compter le nombre de fois où vous avez instancié la classe Test vous pourrez écrire ceci : public class Test2 public static int nombre=0; public Test2() // Constructeur nombre=nombre+1; System.out.println("Nombre d instances créées : " + nombre); En testant cette classe : class TestX2 37

39 public static void main (String arg[]) System.out.println("****************"); Test2 test1 = new Test2(); Test2 test2 = new Test2(); Test2 test3 = new Test2(); Nous obtenons : 7.5 L héritage Introduction L avantage essentiel d un langage orienté-objet est que le code est réutilisable. Grâce à l héritage, on peut faire dériver une nouvelle classe d une classe existante et ainsi en récupérer les attributs et méthodes, sans avoir à la réécrire complètement. Nous avons rencontré la notion d héritage dans Greenfoot. Diagramme de classes dans Greenfoot Dans ce scénario : la classe Animal est une sous-classe de la classe Actor la classe Actor est une super-classe de la classe Animal 38

40 les classes Crab, Worm et Lobster sont des sous-classes de la classe Animal Si Enfant est une sous-classe de Parent, on dit que la classe Enfant hérite de la classe Parent, qu elle étend cette ancienne classe. Enfant est alors une sous-classe de Parent. Parent est une super-classe de Enfant. Toujours dans Greenfoot, nous avons la classe Animal : public class Animal private int age; private float taille; private String couleur; public Animal()... public void move()... public void act()... public void turn(int angle)... public boolean atworldedge()... et la classe Crab qui est une sous-classe de la classe Animal : public class Crab extends Animal private GreenfootImage image1; private GreenfootImage image2; private int wormseaten; public Crab()... public void act()... public void switchimage()... public void checkkeypress()... public boolean lookforworm()... La classe Crab peut accéder à toutes les méthodes publiques de la classe Animal. Dans la classe Crab, la méthode act() est redéfinie. Cela permet de redéfinir une méthode de la super-classe 39

41 Animal, en proposant une nouvelle définition. Il faut respecter la signature de la méthode (type des arguments), ainsi que le type de valeurs de retour. C est alors cette nouvelle méthode qui sera appelée sur tout objet de la sous-classe, masquant en quelque sorte la méthode de la classe de base. Une sous-classe reprend toutes les propriétés et méthodes de la super-classe, tout en pouvant intégrer de champs nouveaux (attributs et méthodes). Ceux-ci caractériseront et distingueront les objets de la classe héritée des objets de la classe parent. Autrement dit, cela signifie qu une instance de la classe Enfant aura la possibilité d utiliser, outre des attributs et méthodes supplémentaires, toutes les ressources définies dans Parent, si des modificateurs ne l empêche pas. Une méthode d une classe Enfant n a pas accès aux membres privés de sa classe Parent. Si c était le cas, il suffirait de créer une classe Enfant pour violer le principe d encapsulation. En Java, toutes les classes sont dérivées de la classe spéciale Object. C est la racine de la hiérarchie des classes (cela entraine que toute classe Java possède déjà à sa naissance un certain nombre de variables et de méthodes). Dans la déclaration d une classe si la clause extends n est pas présente, la surclasse est donc Object directement Un exemple complet Considérons un exemple complet d une classe Parent Ville et d une classe Enfant Capitale. Ville String nom int nbhab Ville(String lenom) Ville (String lenom, int lenbhab) String getnom() int getnbhab() void setnbhab(int nvnbhab) String presentetoi() Capitale String pays Capitale(String lenom, String lepays) Capitale(String lenom, String lepays, int lenbhab) String getpays void setpays(string nompays) String presentetoi() Voici l implémentation de la classe Ville : class Ville 40

42 //le nom ne sera accessible que par la classe Ville, et pas par la classe Capitale private String nom; //le nombre d habitant sera accessible par la classe Capitale protected int nbhab; public Ville(String lenom) nom = lenom.touppercase( );//ainsi tous le noms de ville seront en majuscule nbhab = -1; //-1 signifie que le nombre d habitant est inconnu public Ville (String lenom, int lenbhab) nom = lenom.touppercase( ); if (lenbhab< 0) System.out.println("Un nombre d habitant doit ^etre positif."); nbhab = -1; else nbhab = lenbhab; public String getnom( ) return nom; //pas d accesseur en écriture pour le nom //donc il est impossible de changer le nom d une ville public int getnbhab( ) return nbhab; public void setnbhab(int nvnbhab) if (nvnbhab < 0) System.out.println("Un nombre d habitant doit ^etre positif."); System.out.println("La modification n a pas été prise en compte); else nbhab = nvnbhab; 41

43 public String presentetoi() String presente = "Ville "+ nom +" nombre d habitants "; if (nbhab == -1) presente = presente + "inconnu"; else presente = presente + " = " + nbhab; return presente; Et voici l implémentation de la classe Capitale : public class Capitale extends Ville private String pays; //constructeurs public Capitale(String lenom, String lepays) super(lenom); //appel du constructeur de Ville //nbhab est initialisé à 1 par ce constructeur pays = lepays; public Capitale(String lenom, String lepays, int lenbhab) super(lenom, lenbhab); pays = lepays; //accesseurs supplémentaires public String getpays( ) return pays; public void setpays(string nompays) pays = nompays; //méthode presentetoi( ) redéfinie 42

44 public String presentetoi( ) String presente = super.presentetoi( ); presente = presente + " Capitale de "+ pays; return presente; Pour tester ces deux classes, créons une classe TestVille : public class TestVille public static void main(string args[]) Ville v1 = new Ville("Lausanne", ); Ville v2 = new Ville("Vevey"); Capitale c1 = new Capitale("Paris", "France", ); Capitale c2 = new Capitale("Berne", "Suisse"); System.out.println("******************************"); System.out.println(v1.presenteToi( )); System.out.println(v2.presenteToi( )); System.out.println(c1.presenteToi( )); System.out.println(c2.presenteToi( )); System.out.println("******************************"); Finalement, l exécution de ce dernier programme donne : 8 Exercices sur les objets en java 8.1 Figures géométriques Exercice 8.1 Écrire une classe Rectangle avec deux champs longueur et largeur, avec un constructeur et 43

45 avec les méthodes aire, perimetre et description (qui donne les caractéristiques du rectangle : longueur, largeur, aire et périmètre). Rectangle int longueur int largeur Rectangle(int x,int y) int aire() int perimetre() String description() Exercice 8.2 Écrire une sous-classe Carre de la classe Rectangle. Carre Carre(int c) Exercice 8.3 Créer une méthode dessinerectangle de la classe Rectangle qui dessine sommairement le rectangle à l aide d étoiles. Créer ensuite une méthode main de la classe Rectangle telle que suite au lancement du programme, on obtientladescription etledessin d un carrési un seul argument(côté) est donnéetd unrectangle si deux arguments (longueur, largeur) sont fournis. Exercice 8.4 Écrire une classe représentant des cercles. Cette classe contient deux constructeurs : a) Cercle() sans argument qui crée un cercle dont le rayon est égal à 1 44

46 b) Cercle(double r) avec un argument qui crée un cercle de rayon r Écrire les méthodes suivantes de la classe Cercle. a) pour calculer l aire b) pour calculer le périmètre c) pour obtenir le rayon d) pour modifier le rayon d un cercle déjà créé e) pour donner les caractéristiques (rayon et aire) du cercle Exercice 8.5 On peut considérer qu un cylindre est un cercle dont la hauteur est donnée. Construire une classe Cylindre qui dérive de la classe Cercle. Créer un constructeur Cylindre() sans argument qui crée un cylindre dont le rayon du cercle de base est égal à 1 et dont la hauteur est égale à 5 et un constructeur Cylindre(double r, double h) qui crée un cylindre dont le rayon du cercle de base est r et dont la hauteur est h. Écrire les méthodes qui calculent le volume et l aire totale d un cylindre, ainsi que la méthode qui donne les caractéristiques (rayon, aire totale et volume) du cylindre Formules : volume = π r 2 h et aire totale = 2πr (r +h) Exercice 8.6 Créer une méthode main de la classe Cercle telle que suite au lancement du programme, on obtient la description d un cercle si un seul argument (rayon) est donné et d un cylindre si deux arguments (rayon, hauteur) sont fournis. 8.2 La citerne Exercice 8.7 Il s agit de développer une classe simulant une citerne d eau potable. Développez la classe Citerne qui possède les propriétés et fonctionnalités suivantes : a) une citerne possède un volume maximal de 1000 litres, b) une citerne a un volume d eau actuel, c) on peut ajouter de l eau à la citerne (attention au volume maximal) d) on peut retirer de l eau de la citerne (attention au retrait maximal possible) e) la citerne renseigne à l aide d un indicateur sur son volume actuel, f) la citerne possède aussi un indicateur affichant le taux de remplissage en pourcents. Ajouter un constructeur Citerne() sans argument qui permet de créer une citerne de 1000 litres vide et une méthode main qui simule quelques remplissages et retraits aléatoires successifs. Exercice 8.8 Modifiez votre classe Citerne en CiterneBis. Cette nouvelle version ne possède plus un volume maximal fixe de 1000 litres. Transformer le constructeur Citerne en un constructeur CiterneBis(double rayon, double hauteur) qui permet de créer des citernes à volume variable selon leurs dimensions extérieures. 45

47 N oubliez pas que le volume maximal ne peut plus être modifié après que la citerne est construite! 8.3 Thermometre Exercice 8.9 Écrire deux constructeurs de la classe Thermometre qui travaille soit avec des degrés Celsius, soit avec des degrés Fahrenheit. Le premier constructeur initialise une température de 0 degré ( C ou F). Le deuxième constructeur initialise une température donnée en degré ( C ou F). Thermometre double temperature double Thermometre() double Thermometre(double t) Exercice 8.10 Compléter la classe avec les méthodes suivantes : gettemperature() pour accéder au champ privé temperature, settemperature(double t) pour modifier la valeur du champ privé temperature, changetemperature() qui additionne un degré ( C ou F) à la valeur courante du champ temperature, changetemperature(double t) qui additionne la valeur t à la valeur courante du champ temperature, celsiustofahrenheit() qui convertit en degrés Fahrenheit une température donnée en degrés Celsius, fahrenheittocelsius() qui convertit en degrés Celsius une température donnée en degrés Fahrenheit, printtemp() qui affiche la température (en C ou en F) Indication : La formule de conversion de degrés Celsius en degrés Fahrenheit s écrit: Exercice 8.11 T F = T C Modifier la classe précédente Thermometre afin que la température soit donnée dès le départ en degrés Celsius ou Fahrenheit. Par exemple, on transformera les deux constructeurs en Thermometre(char u) et en Thermometre(double t, char u). 8.4 Devinez un nombre Exercice 8.12 Écrire un programme Devinette.java qui fait deviner un nombre secret compris entre 0 et 100 à quelqu un. Ce programme commencera par initialiser une variable secret par l instruction 46

48 int secret = (int)(math.random() * 100); ce qui donne une valeur différente à secret à chaque exécution du programme. Puis le programme doit faire deviner cette valeur à l utilisateur en lui demandant d entrer un nombre et en lui indiquant si celui-ci est supérieur ou inférieur à la valeur secrète jusqu à ce qu il trouve le bon nombre. Par exemple : Devinez le nombre : 42 Trop grand! Devinez le nombre : 21 Trop bas! Devinez le nombre : 23 Trop bas! Devinez le nombre! 25 Bravo, vous avez gagné! 8.5 Ville et Capitale Exercice 8.13 Écrire les classes Ville et Capitale selon le diagramme de classe ci-dessous. Ville String nom int nbhab Ville(String lenom) Ville (String lenom, int lenbhab) String getnom() int getnbhab() void setnbhab(int nvnbhab) String presentetoi() Capitale String pays Capitale(String lenom, String lepays) Capitale(String lenom, String lepays, int lenbhab) String getpays void setpays(string nompays) String presentetoi() 47

49 Exercice 8.14 Pour tester ces deux classes, créez une classe TestVille : public class TestVille public static void main(string args[]) Ville v1 = new Ville("Lausanne", ); Ville v2 = new Ville("Vevey"); Capitale c1 = new Capitale("Paris", "France", ); Capitale c2 = new Capitale("Berne", "Suisse"); System.out.println("******************************"); System.out.println(v1.presenteToi( )); System.out.println(v2.presenteToi( )); System.out.println(c1.presenteToi( )); System.out.println(c2.presenteToi( )); System.out.println("******************************"); 8.6 Jouer avec des dés Exercice 8.15 Voici le diagramme de la classe Dice. Dice private int face private String name private static int nombredede private static final int NombreDeFaces Dice() int getface() void roll() String description() int somme(dice de) static int countdice() 48

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 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

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

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

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

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

Utilisation d objets : String et ArrayList

Utilisation d objets : String et ArrayList Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons

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

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

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

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

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

TP, première séquence d exercices.

TP, première séquence d exercices. TP, première séquence d exercices. Benoît Valiron benoit.valiron@lipn.univ-paris13.fr 7 novembre 2010 Introduction Vous écrirez les réponses aux questions courtes sur une feuille à rendre à la fin de la

Plus en détail

Solutions du chapitre 4

Solutions du chapitre 4 Solutions du chapitre 4 Structures de contrôle: première partie 4.9 Identifiez et corrigez les erreurs (il peut y en avoir plus d une par segment de code) de chacune des proposition suivantes: a) if (

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

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... Université Paris 7 Programmation Objet Licence Bio Informatique Année 2004-2005 TD n 1 - Correction Premiers pas Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... 1. Enregistrez

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

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

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

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

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

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

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 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

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

Tp 1 correction. Structures de données (IF2)

Tp 1 correction. Structures de données (IF2) Tp 1 correction Structures de données (IF2) Remarque générale : compilez et exécutez le code au-fur-et-à mesure de son écriture. Il est plus facile de corriger une petite portion de code délimitée que

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

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

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 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

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

Eclipse atelier Java

Eclipse atelier Java Eclipse atelier Java Table des matières 1. Introduction...2 2. Télécharger eclipse...3 3. Installer eclipse...3 4. Premier lancement d eclipse...3 5. Configurer eclipse pour faire du Java...5 6. Développer

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

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

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

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

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

SHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5

SHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 SHERLOCK 7 Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 Cette note montre comment intégrer un script Java dans une investigation Sherlock et les différents aspects de Java script. S T E M M E R I M A G I N

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

TD/TP PAC - Programmation n 3

TD/TP PAC - Programmation n 3 Université Paris Sud Licence d informatique/iup-miage2 Année 2004-2005 Auteur : Frédéric Vernier Semaine : 11-16 octobre 2004 Conditions : sur machine avec les outils standards java web: http://vernier.frederic.free.fr/indexpac.html

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

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

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

Utiliser Java sans BlueJ

Utiliser Java sans BlueJ Conception objet en Java avec BlueJ une approche interactive Utiliser Java sans BlueJ Michael Kölling version française: Patrice Moreaux Rédigé avec 1.0 Conception objet en Java avec BlueJ une approche

Plus en détail

Corrigés des premiers exercices sur les classes

Corrigés des premiers exercices sur les classes Corrigés des premiers exercices sur les classes Exercice 2.1.1 utilisation d une classe Voici le texte d une classe représentant de façon sommaire un compte bancaire et les opérations bancaires courantes.

Plus en détail

LES TYPES DE DONNÉES DU LANGAGE PASCAL

LES TYPES DE DONNÉES DU LANGAGE PASCAL LES TYPES DE DONNÉES DU LANGAGE PASCAL 75 LES TYPES DE DONNÉES DU LANGAGE PASCAL CHAPITRE 4 OBJECTIFS PRÉSENTER LES NOTIONS D ÉTIQUETTE, DE CONS- TANTE ET DE IABLE DANS LE CONTEXTE DU LAN- GAGE PASCAL.

Plus en détail

Projet de programmation (IK3) : TP n 1 Correction

Projet de programmation (IK3) : TP n 1 Correction Projet de programmation (IK3) : TP n 1 Correction Semaine du 20 septembre 2010 1 Entrées/sorties, types de bases et structures de contrôle Tests et types de bases Tests et types de bases (entiers) public

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

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

COURS WINDEV NUMERO 3

COURS WINDEV NUMERO 3 COURS WINDEV NUMERO 3 01/02/2015 Travailler avec un fichier de données Etude du gestionnaire d analyse, Manipulation des tables mémoires, Manipulation de données, Création d états, Pré requis : Cours WinDev

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

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

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

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

Présentation du langage et premières fonctions

Présentation du langage et premières fonctions 1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en

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

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

Le langage C. Séance n 4

Le langage C. Séance n 4 Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de

Plus en détail

Développement Logiciel

Développement Logiciel Développement Logiciel Éxamen session 1-2012-2013 (Vendedi 25 mai, 9h-11h) Seuls les documents liés directement au cours sont autorisés (comme dit sur le site) : sujets de TD, notes de cours, notes personnelles

Plus en détail

INF 321 : mémento de la syntaxe de Java

INF 321 : mémento de la syntaxe de Java INF 321 : mémento de la syntaxe de Java Table des matières 1 La structure générale d un programme 3 2 Les composants élémentaires de Java 3 2.1 Les identificateurs.................................. 3 2.2

Plus en détail

4. Groupement d objets

4. Groupement d objets Conception objet en Java avec BlueJ une approche interactive 4. Groupement d objets Collections et itérateurs David J. Barnes, Michael Kölling version française: Patrice Moreaux Rédigé avec 1.0 Principaux

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

Cours de Systèmes d Exploitation

Cours de Systèmes d Exploitation Licence d informatique Synchronisation et Communication inter-processus Hafid Bourzoufi Université de Valenciennes - ISTV Introduction Les processus concurrents s exécutant dans le système d exploitation

Plus en détail

Corrigé des exercices sur les références

Corrigé des exercices sur les références Corrigé des exercices sur les références Exercice 3.1.1 dessin Pour cet exercice, vous allez dessiner des structures de données au moyen de petits schémas analogues à ceux du cours, comportant la pile

Plus en détail

Gestion distribuée (par sockets) de banque en Java

Gestion distribuée (par sockets) de banque en Java Gestion distribuée (par sockets) de banque en Java Université Paris Sud Rappel sur la solution locale de gestion simple de banque L objet de cet exercice était de créer une application java qui implante

Plus en détail

Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS

Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS Mémento Ouvrir TI-Nspire CAS. Voici la barre d outils : L insertion d une page, d une activité, d une page où l application est choisie, pourra

Plus en détail

TP1 : Initiation à l algorithmique (1 séance)

TP1 : Initiation à l algorithmique (1 séance) Université de Versailles Vanessa Vitse IUT de Vélizy - Algorithmique 2006/2007 TP1 : Initiation à l algorithmique (1 séance) 1 Prise en main de l environnement Unix : rappels et compléments Le but de la

Plus en détail

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés

Plus en détail

Initiation à la programmation en Python

Initiation à la programmation en Python I-Conventions Initiation à la programmation en Python Nom : Prénom : Une commande Python sera écrite en caractère gras. Exemples : print 'Bonjour' max=input("nombre maximum autorisé :") Le résultat de

Plus en détail

Les chaînes de caractères

Les chaînes de caractères Les chaînes de caractères Dans un programme informatique, les chaînes de caractères servent à stocker les informations non numériques comme par exemple une liste de nom de personne ou des adresses. Il

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

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET I. INTRODUCTION 1.1. HISTORIQUE 1991: Concepts Java pour Sun -conception d'un langage pour des appareils électroniques(code embarqué) -syntaxe proche du C++

Plus en détail

Un ordonnanceur stupide

Un ordonnanceur stupide Un ordonnanceur simple Université Paris Sud L objet des exercices qui suivent est de créer un ordonanceur implantant l algorithme du tourniquet ( round-robin scheduler ). La technique utilisée pour élire

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

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

Java 7 Les fondamentaux du langage Java

Java 7 Les fondamentaux du langage Java 184 Java 7 Les fondamentaux du langage Java 1.1 Les bibliothèques graphiques Le langage Java propose deux bibliothèques dédiées à la conception d'interfaces graphiques. La bibliothèque AWT et la bibliothèque

Plus en détail

Anne Tasso. Java. Le livre de. premier langage. 6 e édition. Groupe Eyrolles, 2000, 2002, 2005, 2006, 2008, 2010, ISBN : 978-2-212-12648-8

Anne Tasso. Java. Le livre de. premier langage. 6 e édition. Groupe Eyrolles, 2000, 2002, 2005, 2006, 2008, 2010, ISBN : 978-2-212-12648-8 Anne Tasso Java Le livre de premier langage 6 e édition Groupe Eyrolles, 2000, 2002, 2005, 2006, 2008, 2010, ISBN : 978-2-212-12648-8 Table des matières Avant-propos Organisation de l ouvrage..............................

Plus en détail

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris : Développement d un client REST, l application Vélib 1. Présentation L application présentée permet de visualiser les disponibilités des vélos et des emplacements de parking à la disposition des parisiens

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

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

Threads. Threads. USTL http://www.lifl.fr/ routier 1

Threads. Threads. USTL http://www.lifl.fr/ routier 1 Threads USTL http://www.lifl.fr/ routier 1 Rappels - Définitions un Process est un programme qui tourne et dispose de ses propres ressources mémoire. OS multi-tâche plusieurs process en concurrence un

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

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

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

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

TD/TP PAC - Programmation n 3

TD/TP PAC - Programmation n 3 Université Paris Sud Licence d informatique/iup-miage2 - Année 2004-2005 auteur : Frédéric Vernier semaine : 11-16 octobre 2004 conditions : sur machine avec les outils standards java web: http://vernier.frederic.free.fr/indexpac.html

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

2. Comprendre les définitions de classes

2. Comprendre les définitions de classes Conception objet en Java avec BlueJ une approche interactive 2. Comprendre les définitions de classes Analyser le contenu des classes David J. Barnes, Michael Kölling version française: Patrice Moreaux

Plus en détail

I. Introduction aux fonctions : les fonctions standards

I. Introduction aux fonctions : les fonctions standards Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons

Plus en détail

Package Java.util Classe générique

Package Java.util Classe générique Package Java.util Classe générique 1 Classe Vector La taille est dynamique: dès qu un tableau vectoriel est plein, sa taille est doublée, triplée, etc. automatiquement Les cases sont de type Object add(object

Plus en détail

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

JAVA TD0. Prise en main du langage Environnement de base JAVA 1 JAVA TD0 Prise en main du langage Environnement de base JAVA 1 Mon premier programme public class HelloWorld { public static void main(string [] arg){ System.out.println("Hello, World!"); main(string []

Plus en détail

ACTIVITÉ DE PROGRAMMATION

ACTIVITÉ DE PROGRAMMATION ACTIVITÉ DE PROGRAMMATION The purpose of the Implementation Process is to realize a specified system element. ISO/IEC 12207 Sébastien Adam Une introduction 2 Introduction Ø Contenu Utilité de l ordinateur,

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

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

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

Recherche dans un tableau

Recherche dans un tableau Chapitre 3 Recherche dans un tableau 3.1 Introduction 3.1.1 Tranche On appelle tranche de tableau, la donnée d'un tableau t et de deux indices a et b. On note cette tranche t.(a..b). Exemple 3.1 : 3 6

Plus en détail

2 e édition JAVA 5 et 6. Jérôme Bougeault. TSoft et Groupe Eyrolles, 2003, 2008, ISBN : 978-2-21212250-3

2 e édition JAVA 5 et 6. Jérôme Bougeault. TSoft et Groupe Eyrolles, 2003, 2008, ISBN : 978-2-21212250-3 2 e édition JAVA 5 et 6 Jérôme Bougeault TSoft et Groupe Eyrolles, 2003, 2008, ISBN : 978-2-21212250-3 Classes et objets Les constructeurs Propriétés Les méthodes L héritage Les interfaces Les relations

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

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