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

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

Les références et la mémoire

Les références et la mémoire Chapitre 3 Les références et la mémoire 3.1 Introduction En Java, pour déclarer une variable, il faut donner son nom, précédé du type qu on souhaite lui attribuer. Ces types peuvent être des types primitifs

Plus en détail

Mise à niveau en Java

Mise à niveau en Java Mise à niveau en Java Cours 1 Stéphane Airiau Université Paris-Dauphine Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 1 Aujourd hui Eléments de base Variables, opérateurs, type d une expression

Plus en détail

Résumé Introduction Programmation Java

Résumé Introduction Programmation Java Résumé Introduction Programmation Java Concepts Un programme : séquence, test conditionnel, boucles. Objets : Les objets Java modélisent les objets d un problème donné Classe : Les objets sont crées à

Plus en détail

Java. Java. Le livrede. Avec 80 exercices corrigés. Avec 80 exercices corrigés. Le livre. Anne Tasso. 5 e édition. Un best-seller qui a déjà conquis

Java. Java. Le livrede. Avec 80 exercices corrigés. Avec 80 exercices corrigés. Le livre. Anne Tasso. 5 e édition. Un best-seller qui a déjà conquis Anne Tasso Un best-seller qui a déjà conquis des milliers d'étudiants! Java Le livre Java Le livrede de premier premier langage langage Avec 80 exercices corrigés Avec 80 exercices corrigés 5 e édition

Plus en détail

Programmation Orientée Objet

Programmation Orientée Objet Programmation Orientée Objet Initiation à Java Saber HENI saber.heni02@univ-paris8.fr http://handiman.univ-paris8.fr/~saber/ Plan du cours Chapitre 1 : Introduction au langage Java Chapitre 2 : Classes

Plus en détail

Eléments de syntaxe du langage Java

Eléments de syntaxe du langage Java c jan. 2014, v3.0 Java Eléments de syntaxe du langage Java Sébastien Jean Le but de ce document est de présenter es éléments de syntaxe du langage Java : les types primitifs, les opérateurs arithmétiques

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

TP1 : Initiation à Java et Eclipse

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

Plus en détail

Cours 1 : Introduction Générale + Objet I

Cours 1 : Introduction Générale + Objet I Organisation du cours Équipe pédagogique DUT Informatique S3 - Programmation Java Jean-Claude MARTIN MARTIN@LIMSI.FR Cours 1 : Introduction Générale + Objet I Jean-Claude MARTIN (Responsable, Cours, TD

Plus en détail

6.1 Une classe simple pour représenter des comptes bancaires

6.1 Une classe simple pour représenter des comptes bancaires Chapitre 6 Héritage Ce chapitre du cours traite de concepts relatifs à la programmation objet (hiérarchie de classe, héritage, extension, masquage) et sera illustré par un exemple de représentation de

Plus en détail

1.Programmation en Java : notions de base, orienté objet et héritage

1.Programmation en Java : notions de base, orienté objet et héritage Travaux pratique de Méthodologie et Langage de Programmation,, TP1 1 1.Programmation en Java : notions de base, orienté objet et héritage Cette séance de TP a pour objectif d'introduire à la programmation

Plus en détail

Conception et Développement Orientés Objets Cours 1 : Introduction. 2 Les paradigmes de programmation. 3 Les concepts de la programmation objet

Conception et Développement Orientés Objets Cours 1 : Introduction. 2 Les paradigmes de programmation. 3 Les concepts de la programmation objet CNAM UV 19357 Année 2003-2004 David Delahaye David.Delahaye@cnam.fr Conception et Développement Orientés Objets Cours 1 : Introduction 1 Présentation de la valeur Ce cours s adresse à toute personne ayant

Plus en détail

Avant de programmer en Java DOS Set Path=C:\JDK\bin Path=C:\JDK\bin C:\JDK\bin Set Path=%Path%;C:\JDK\bin C:\JDK\bin C:\JDK\

Avant de programmer en Java DOS Set Path=C:\JDK\bin Path=C:\JDK\bin C:\JDK\bin Set Path=%Path%;C:\JDK\bin C:\JDK\bin C:\JDK\ Exercices corrigés de programmation OO Java Préparés par : Mlle Imene Sghaier Année Académique : 2006-2007 Premiers Pas I. Avant de programmer en Java Le JDK de Sun (Java Development Kit) est l outil essentiel

Plus en détail

PPOOGL. Florent de Dinechin. Java pour les nuls

PPOOGL. Florent de Dinechin. Java pour les nuls PPOOGL Florent de Dinechin Java pour les nuls Java en 30 minutes Introduction Grands principes Pour en finir avec l organisation Types de base et objets Le reste est dans le manuel PPOOGL 1 Introduction

Plus en détail

Introduction au langage Java

Introduction au langage Java Introduction au langage Java Nicolas Dumoulin nicolas.dumoulin@cemagref.fr Cemagref Laboratoire d ingénierie pour les systèmes complexes 2010 Notes aux lecteurs Ce document est un support de cours qui

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

Éléments de base en Java (suite et fin)

Éléments de base en Java (suite et fin) Éléments de base en Java (suite et fin) P.O.O. LMI 2 Semestre 4 Option Info Année 2008-09 1/33 Éléments de base en Java (suite et fin) Année 2008-09 Plan du cours Les chaînes de caractères Retour vers

Plus en détail

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5 Introduction à l algorithmique et à la programmation IUT 1ère année 2013-2014 Cyril Nicaud Cyril.Nicaud@univ-mlv.fr Cours 1 / 5 Déroulement du cours Organisation : 5 séances de 2h de cours 10 séances de

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

Algorithmique Programmation

Algorithmique Programmation Algorithmique Programmation 2ème partie DUT en alternance CNAM 2007-2008 2 Table des matières 1 Premiers Pas en Programmation Objet : les Classes et les Objets 7 1.1 Définir une Classe........................................

Plus en détail

Introduction aux exercices en Java

Introduction aux exercices en Java Introduction aux exercices en Java Avant de commencer les séries proprement dites, nous allons voir quelques informations utiles concernant le langage de programmation principal de ce cours d'informatique

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

Cours 1 : Introduction Générale + Objet

Cours 1 : Introduction Générale + Objet Organisation du cours Équipe pédagogique L2 S4 2009 : 2010 Programmation Objet Jean-Claude MARTIN MARTIN@LIMSI.FR Cours 1 : Introduction Générale + Objet 10 cours de 1h30 o Jean-Claude MARTIN (MARTIN@LIMSI.FR)

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

Héritage, et quelques petits mots-clés de Java

Héritage, et quelques petits mots-clés de Java Héritage, et quelques petits mots-clés de Java Bilan de la séance du 3 février. 1 Champs d instance, champs de classe La situation usuelle pour les attributs et les méthodes est la suivante : La classe

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

Java. Java. Le livrede. Avec 80 exercices corrigés. Avec 80 exercices corrigés. Le livre. Anne Tasso. 5 e édition. Un best-seller qui a déjà conquis

Java. Java. Le livrede. Avec 80 exercices corrigés. Avec 80 exercices corrigés. Le livre. Anne Tasso. 5 e édition. Un best-seller qui a déjà conquis Anne Tasso Un best-seller qui a déjà conquis des milliers d'étudiants! Java Le livre Java Le livrede de premier premier langage langage Avec 80 exercices corrigés Avec 80 exercices corrigés 5 e édition

Plus en détail

Informatique TP1 : Découverte de Python CPP 1A

Informatique TP1 : Découverte de Python CPP 1A Informatique TP1 : Découverte de Python CPP 1A Romain Casati, Wafa Johal, Frederic Devernay, Matthieu Moy Avril - juin 2014 1 Découverte de l IDE : IDLE IDLE est un environnement de développement (Integrated

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

Programmation - Java - Fiches du Langage. Marie Beurton-Aimar

Programmation - Java - Fiches du Langage. Marie Beurton-Aimar Programmation - Java - Fiches du Langage Marie Beurton-Aimar Fiche Numéro 1 1.1 Structure d un programme Java Toutes les instructions se terminent par un ; Le nom du fichier qui contient une classe doit

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

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

3 ElementsdeprogrammationJava 15 3.1 Premierspas... 15

3 ElementsdeprogrammationJava 15 3.1 Premierspas... 15 Tabledesmatières 1 IntroductionaulangageJava 1 1.1 EnvironnementJava... 1 1.1.1 Compilation... 2 1.1.2 Interprétation... 2 1.2 Programmationorientée-objet... 2 1.2.1 Classe... 3 1.2.2 Objet... 4 2 Syntaxedulangage

Plus en détail

} 7 Variables (composantes)

} 7 Variables (composantes) Chapitre 4 Tableaux Jusqu ici, nous avons employé les variables pour stocker les valeurs individuelles de types primitifs : une variable de type int pour stocker un entier, une variable de type boolean

Plus en détail

Remise à niveau en programmation JAVA

Remise à niveau en programmation JAVA Remise à niveau en programmation JAVA Lotfi Chaari lotfi.chaari@enseeiht.fr 2013-2014 1 Introduction - Java est un langage de programmation orientée objet (POO) - Un programme Java est une série de classes

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

Université Mohammed Premier Année universitaire 2011-2012. Correction de l examen écrit de la session ordinaire 18 Février 2012

Université Mohammed Premier Année universitaire 2011-2012. Correction de l examen écrit de la session ordinaire 18 Février 2012 Université Mohammed Premier Année universitaire 2011-2012 Faculté des Sciences Filière SMI Département de Mathématiques Module : POO Java et d Informatique Semestre : S5 Correction de l examen écrit de

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

Le Langage Java et le Monde des Objets

Le Langage Java et le Monde des Objets . p.1 Le Langage Java et le Monde des Objets Les principes de la modélisation Orientée Objet. Qu est-ce qu une classe?. Les types de base. Utiliser les classes. Les tentacules de Java. . p.2 Bibliographie

Plus en détail

Prise en main de Visual C++ 6.0

Prise en main de Visual C++ 6.0 Prise en main de Visual C++ 6.0 1) premier programme Sélectionnez l icône suivante pour démarrer l application. La fenêtre suivante s ouvre à l écran. Pour créer un nouveau projet, cliquez sur le menu

Plus en détail

Cours 1. Contenu du cours : " Premières applications. " Compilation, Exécution, Chemin. " Affichage et saisie. " Types de données. " Flux de contrôle

Cours 1. Contenu du cours :  Premières applications.  Compilation, Exécution, Chemin.  Affichage et saisie.  Types de données.  Flux de contrôle Cours 1 1 Contenu du cours : " Premières applications " Compilation, Exécution, Chemin " Affichage et saisie " Types de données " Flux de contrôle " Applets " Arrays " OO de base Edition Le fichier texte

Plus en détail

Listes de personnes et calculatrice polonaise inverse en Java

Listes de personnes et calculatrice polonaise inverse en Java Listes de personnes et calculatrice polonaise inverse en Java Université Paris Sud Motivation Le but de cet exercice est de manipuler les listes chaînées et les piles et de voir leur application en analyse

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

Workshop CAS et évaluation d expressions. Raphaël Shugo Boissel (boisse_r)

Workshop CAS et évaluation d expressions. Raphaël Shugo Boissel (boisse_r) Workshop CAS et évaluation d expressions Raphaël Shugo Boissel (boisse_r) 23 Novembre 2013 1 Présentation du workshop.................... 2 1.1 Définition du cas..................... 2 1.2 Définition de

Plus en détail

Cours 2 : Comment construire un programme?

Cours 2 : Comment construire un programme? 1/64 Introduction à la programmation Cours 2 : Comment construire un programme? Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr Université Paris Diderot Paris 7 2/64 Le cours d aujourd hui 1. Striptease

Plus en détail

Définitions de classes permettant de gérer Étudiant en Enseignant CORRECTION

Définitions de classes permettant de gérer Étudiant en Enseignant CORRECTION EILCO ING 1 - POO Java Contrôle 2014/2015 Définitions de classes permettant de gérer Étudiant en Enseignant CORRECTION Dans ces exercices, nous allons définir une classe Personne qui permettra de gérer

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

ENSI. Visual C++ Initiation

ENSI. Visual C++ Initiation ENSI Visual C++ Initiation Tables des matières 1. LES MFC (MICROSOFT FOUNDATION CLASSES)...3 1.1 DÉFINITION... 3 1.2 L ESPACE DE TRAVAIL... 3 2. CRÉER UN NOUVEAU PROJET...5 2.1 ETAPE 1 : CHOISIR LE TYPE

Plus en détail

Programmation en Python - Cours 2 : Premiers programmes. MPSI - Lycée Thiers

Programmation en Python - Cours 2 : Premiers programmes. MPSI - Lycée Thiers Programmation en Python - Cours 2 : Premiers programmes Diverses utilisations de python Utilisation en mode interactif Ecriture d un programme python Utilisation en mode interactif Ecriture d un programme

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 +Cours 2 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

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

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

Programmation en Python - Cours 2 : Premiers programmes

Programmation en Python - Cours 2 : Premiers programmes Programmation en Python - Cours 2 : Premiers programmes 2013/2014 Diverses utilisations de python Utilisation en mode interactif Ecriture d un programme python Saisie de données par l utilisateur : input(),

Plus en détail

Le langage Java - Syntaxe

Le langage Java - Syntaxe Le langage Java - Syntaxe CLASSES, INSTANCE,MÉTHODES,... CLASSE EN JAVA, PAS À PAS UTILISER DES CLASSES: C O=NEW C() UTILISER LES MÉTHODES: O.M() UNE CLASSE AVEC PLUSIEURS CONSTRUCTEURS LA SURCHARGE DES

Plus en détail

Notions d héritage en Java

Notions d héritage en Java EILCO ING 1 - POO Java TP 5 2014/2015 Notions d héritage en Java L héritage est la capacité d une classe (la sous-classe) à hériter des membres (attributs et méthodes) d une autre classe (la super-classe).

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

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

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

Cours1 +Cours 2. Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1

Cours1 +Cours 2. Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Cours1 +Cours 2 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

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

TP1:Priseenmaind Eclipse,élémentsdebasede java

TP1:Priseenmaind Eclipse,élémentsdebasede java TP1:Priseenmaind Eclipse,élémentsdebasede java jean-baptiste.vioix@iut-dijon.u-bourgogne.fr R&T 2ème année Vousavezàvotredisposition(surlerépertoirecommun):lecours,lesTDs, et quelques documents provenant

Plus en détail

TP 1 - Utilisation de Python

TP 1 - Utilisation de Python TP 1 - Utilisation de Python L objectif de ce TP est d apprendre à faire réaliser des calculs et des tâches répétitives à un ordinateur. Pour faire cela, il est nécessaire de communiquer avec l ordinateur

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

Java Licence professionnelle CISI 2009-2010

Java Licence professionnelle CISI 2009-2010 Java Licence professionnelle CISI 2009-2010 Cours 10 : Type générique (c) http://manu.e3b.org/java/tutoriels/avance/generique.pdf 1 Introduction La programmation générique - nouveauté la plus significative

Plus en détail

Correction langage Java

Correction langage Java MINISTÈRE DE L ÉCOLOGIE, DU DÉVELOPPEMENT DURABLE, DES TRANSPORTS ET DU LOGEMENT EXAMEN PROFESSIONNEL DE VÉRIFICATION D APTIDUDE AUX FONCTIONS DE PROGRAMMEUR Session 2010 Correction langage Java Langage:

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

Algorithmie ISI301 TP 1 : Python et premiers algorithmes

Algorithmie ISI301 TP 1 : Python et premiers algorithmes Algorithmie ISI301 TP 1 : Python et premiers algorithmes 1 Python : apprentissage Pour avoir une vision plus large des différentes possibilités du langage Python, nous ne pouvons que vous conseiller d

Plus en détail

IN104. Programmation orientée objet Introduction aux objets

IN104. Programmation orientée objet Introduction aux objets IN104 Programmation orientée objet Introduction aux objets Séance de Travaux Dirigés du 24 septembre 2009 B. Monsuez, F. Védrine Exercice 1 Notre compteur en C++ Nous étudions dans cet exercice l exemple

Plus en détail

Une classe est une sorte de type de données définie par le programmeur Variables peuvent être de type classe

Une classe est une sorte de type de données définie par le programmeur Variables peuvent être de type classe Classe, Objet Variables locales Niveaux de visibilité (Encapsulation) Attributs et Méthodes Statiques Surcharge des Méthodes Transmission des Paramètres Paquetage Classes pour les types de base POO 1 Une

Plus en détail

Objectif du cours. Bases de la programmation. Plan de cette partie

Objectif du cours. Bases de la programmation. Plan de cette partie Objectif du cours Bases de la programmation Université de Nice - Sophia Antipolis Richard Grin Version 1.2.5 24/9/11 http://deptinfo.unice.fr/~grin Introduction à la programmation orientée objet pour pouvoir

Plus en détail

Introduction à la Programmation 1

Introduction à la Programmation 1 Introduction à la Programmation 1 Séance de cours/td Université Paris-Diderot Objectifs: Découverte du type String. Comprendre qu il y a des types différents. Maîtriser les expressions booléennes dans

Plus en détail

Windows Forms. 1 Introduction. 1.1 Objectifs. 1.2 Le C# 1.3 Visual Studio. C# tp 0 Octobre 2013. Epita

Windows Forms. 1 Introduction. 1.1 Objectifs. 1.2 Le C# 1.3 Visual Studio. C# tp 0 Octobre 2013. Epita Windows Forms 1 Introduction 1.1 Objectifs Durant ce TP, vous allez découvrir un nouveau langage, le C#. Vous serez confrontés à une nouvelle façon de coder, avec un nouveau langage, sous un nouvel environnement.

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

ISN : Initiation à la programmation TP 1. Syntaxe à retenir. Lancer la Proglet «abcdalgos»

ISN : Initiation à la programmation TP 1. Syntaxe à retenir. Lancer la Proglet «abcdalgos» ISN : Initiation à la programmation TP 1 I) Premier programme avec Javascool A) avec Javascool Sur votre lecteur réseau P :, créer un dossier que l on nommera ISN Créer un sous dossier P :\JAVASCOOL et

Plus en détail

Concept de classes (1) Classes et objets en Java Master Informatique 1 ère année. Concept de classes (2) Concept de classes (3)

Concept de classes (1) Classes et objets en Java Master Informatique 1 ère année. Concept de classes (2) Concept de classes (3) Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Classes et objets en Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

Java Avancé - Cours 2

Java Avancé - Cours 2 Java avancé - cours 2 1/8 Java Avancé - Cours 2 Plan 1 Communication entre objets 1 1.1 Motivation....................................................... 1 1.2 Relations entre le panier et le rayon.........................................

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

Algorithmique et programmation avec Java (NFA002)

Algorithmique et programmation avec Java (NFA002) Algorithmique et programmation avec Java (NFA002) Deuxième session 13 septembre 2012 Aucun document n est autorisé. Le barème est donné à titre indicatif. Exercice 1 : listes (4 points) Etudiez le programme

Plus en détail

S. Laporte C# mode console DAIGL TS1

S. Laporte C# mode console DAIGL TS1 Bases du langage C# I. C# en mode console (mode texte) Avantages par rapport au mode graphique (Application Windows): - C'est un mode plus proche de l'approche algorithmique (pas de notions de composants,

Plus en détail

Table des matières. 4. INSTRUCTIONS RÉPÉTITIVES... 25 Réaffectation 25 Répétitions en boucle L instruction while 26 Commentaires 26 Remarques 27

Table des matières. 4. INSTRUCTIONS RÉPÉTITIVES... 25 Réaffectation 25 Répétitions en boucle L instruction while 26 Commentaires 26 Remarques 27 Gérard Swinnen Apprendre à programmer avec Python 3 Avec 60 pages d exercices corrigés! Objet Multithreading Bases de données Événements Programmation web Programmation réseau Unicode Impression PDF Python

Plus en détail

Java. Partie 1 : QCM. Consignes pour le bons déroulement du devoir

Java. Partie 1 : QCM. Consignes pour le bons déroulement du devoir Consignes pour le bons déroulement du devoir - Ce document comporte un QCM et une partie où il faut écrire du code en - Marquez vos réponses au QCM sur la feuille de réponses fournie (notez que certaines

Plus en détail

Java Licence professionnelle CISII, 2009-2010

Java Licence professionnelle CISII, 2009-2010 Java Licence professionnelle CISII, 2009-2010 Cours 5 : l héritage Cours inspiré des cours de Richard Grin, Antoine Tabbone et Hazel Everett Héritage Introduction - Pour raccourcir les temps d écriture

Plus en détail

la réalisation d'un site d'inscriptions

la réalisation d'un site d'inscriptions Rapport du projet la réalisation d'un site d'inscriptions Réaliser par : Fatimaezzahra Yazough Année :2014 /2015 1/9 Yazough INTRODUCTION Le but de ce projet et de réaliser une maquette de site web pour

Plus en détail

INF 103 Langage JAVA. Contrôle du 7 janvier 2015 Durée : 1h30

INF 103 Langage JAVA. Contrôle du 7 janvier 2015 Durée : 1h30 INF 103 Langage JAVA Contrôle du 7 janvier 2015 Durée : 1h30 Nom : Prénom : Casier : Groupe :........ Écrire les réponses directement sur les feuilles du sujet dans les cases prévues à cet effet. Le barème

Plus en détail

PARADIGME ORIENTÉ-OBJET

PARADIGME ORIENTÉ-OBJET PARADIGME ORIENTÉ-OBJET A programming paradigm that uses objects to design systems. Sébastien Adam Une introduction des concepts de base 2 Principes fondamentaux Modularité : vise à répartir les opérations

Plus en détail

Algorithmique et initiation à la programmation java

Algorithmique et initiation à la programmation java L3 Monnaie - Finance Algorithmique et initiation à la programmation java Première partie O. Auzende 2012-2013 1 Modalités Cours en amphithéâtre : les lundis de 12 h à 13 h 30 (amphi 3) o Deux fascicules

Plus en détail

TP1 - Introduction au langage C

TP1 - Introduction au langage C ENS Lyon L-Info PROJ1 2014-2015 TP1 - Introduction au langage C Sujet à terminer pour le dimanche 20 à 2h59, sous forme d une archive.zip contenant votre code source, par email à aurelien.cavelan@ens-lyon.fr.

Plus en détail

POO 1/3 - Introduction à la Programmation Orientée Objet. Pierre Parrend IUT Lumière Lyon II, 2005-2006 pierre.parrend@univ-lyon2.

POO 1/3 - Introduction à la Programmation Orientée Objet. Pierre Parrend IUT Lumière Lyon II, 2005-2006 pierre.parrend@univ-lyon2. POO 1/3 - Introduction à la Programmation Orientée Objet Pierre Parrend IUT Lumière Lyon II, 2005-2006 pierre.parrend@univ-lyon2.fr Sommaire Les Langages de Programmation Premier Programme Les Objets Objets

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

Introduction au débogage avec Eclipse

Introduction au débogage avec Eclipse Introduction au débogage avec Eclipse C. Pain-Barre et H. Garreta IUT INFO Année 2006-2007 1 Notion de debogage Tout développeur est confronté un jour à un programme qui plante pour une raison apparemment

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

Chapitre 6 Héritage en Java

Chapitre 6 Héritage en Java Chapitre 6: Héritage 1/12 Chapitre 6 Héritage en Java Chapitre 6: Héritage 2/12 1. Généralités L'héritage est le troisième des paradigmes de la programmation orientée objet (le 1 er étant l'encapsulation,

Plus en détail

Chiffrement en Python

Chiffrement en Python Emmanuel MORAND (http://www.emmanuelmorand.net) 11 janvier 2008 Ce document a pour objectif de permettre la découverte du langage de programmation Python et de sa très grande efficacité. Les différentes

Plus en détail

Travaux Dirigés Initiation à la programmation en C

Travaux Dirigés Initiation à la programmation en C Travaux Dirigés Initiation à la programmation en C Sylvain MONTAGNY sylvain.montagny@univ-savoie.fr Bâtiment chablais, bureau 13 04 79 75 86 86 TD1 : Compilation et bases de la programmation TD2 : Les

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

TP 1 : Premier contact

TP 1 : Premier contact TP 1 : Premier contact Informatique Fondamentale (IF1) Semaine du 22 Septembre 2008 Les sujets de TP sont disponibles à l adresse http://www.pps.jussieu.fr/~jch/enseignement/if1/ Les transparents de cours

Plus en détail