Programmation par Objets - Printemps 2010 Cours n 8 Frédéric Mallet & Jean-Paul Roy L1 Info&Math - Faculté des Sciences de Nice



Documents pareils
2. Comprendre les définitions de classes

TP1 : Initiation à Java et Eclipse

Java Licence Professionnelle CISII,

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Programmation en Java IUT GEII (MC-II1) 1

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

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

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

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

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

Java Licence Professionnelle CISII,

I. Introduction aux fonctions : les fonctions standards

Chapitre I Notions de base et outils de travail

Programmation par les Objets en Java

Programmer en JAVA. par Tama

Plan du cours. Historique du langage Nouveautés de Java 7

Chapitre 2. Classes et objets

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

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

Programmation Orientée Objet

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

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

Langage Java. Classe de première SI

Cours 1: Java et les objets

TP1 : Initiation à Java et Eclipse

TRUECRYPT SUR CLEF USB ( Par Sébastien Maisse 09/12/2007 )

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

INITIATION AU LANGAGE JAVA

Annexe : La Programmation Informatique

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Guide d installation de MySQL

Projet ISN - dossier réalisé par Randrianarimanana Stéphanie. Titre du projet : Site de rencontre. le nom de notre site de rencontre : Linkymeet

Initiation à JAVA et à la programmation objet.

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Bases Java - Eclipse / Netbeans

LECON 2 : PROPRIETES DE L'AFFICHAGE Version aout 2011

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

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

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

TP, première séquence d exercices.

B2i. LE B2i Brevet Informatique et Internet. Niveau : tous. 1 S'approprier un environnement informatique de travail. b2ico1.odt.

Permis de conduire info

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Réglages du portail de P&WC

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Mise en route. QuickBooks. en ligne. Quelques conseils pour démarrer en beauté

LES BIBLIOTHEQUES DE WINDOWS 7

Remise à niveau d un programme JAVA du domaine public

Tune Sweeper Manuel de l'utilisateur

DE MODIFICATION PROCEDURE ELYXBADGE APPLICATION. PI Électronique Restobadge

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Utilisez Toucan portable pour vos sauvegardes

UTILISER WORD. Présentation générale de Word. Voici quelques éléments à savoir en démarrant Word.

Espace Numérique Régional de Santé Formation sur la messagerie sécurisée. Version Auteur : Nathalie MEDA

Généralités. Sans copie de sauvegarde sur support externe, vous ne pourrez jamais récupérer vos multiples encodages. 1.1 Sauvegarde des données

Logiciel de gestion de caisse et d ardoises

Programmation Objet Java Correction

Chapitre 10. Les interfaces Comparable et Comparator 1

Bases pour sécuriser son Windows XP

as Architecture des Systèmes d Information

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Projet de Veille Technologique

La maison connectée grâce au courant porteur en ligne (CPL)

GANTTPROJECT. Julien TENDERO

CREER UN PETIT SITE WEB EN COMPOSANT DES PAGES HTML

RMI le langage Java XII-1 JMF

Guide d'intégration à ConnectWise

E-Remises Paramétrage des navigateurs

PROGRAMMATION PAR OBJETS

Programmation Par Objets

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

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

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

Cours 14 Les fichiers

Initiation à la programmation en Python

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

Partager sa connexion Internet via le WiFi avec Windows 8

Prise en main du logiciel. Smart BOARD Notebook 10

Voici ses principales caractéristiques :

Securexam Consignes pour l EFU Les 2, 3 et 4 juin 2015

Qu est ce qu une bibliothèque?

Installation d un ordinateur avec reprise des données

TUTORIEL: INSTALLATION D'UN SERVEUR LOCAL SOUS WINDOWS 7 POUR APPINVENTOR version du 06/04/2013

Fiche animateur : module écriture collaborative

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

Faire Le Ménage. Faire le ménage lié à l utilisation de son PC

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Apprendre à manipuler le clavier Médiathèque de Bussy Saint-Georges APPRENDRE A MANIPULER LE CLAVIER

TP1. Outils Java Eléments de correction

Diagramme de classes

Certificat Informatique et internet Niveau 1 TD D1. Domaine 1 : Travailler dans un environnement numérique évolutif. 1. Généralités : Filière

Corrigés des premiers exercices sur les classes

Eclipse atelier Java

Emporter Windows XP sur une clé USB

Utilisation de GCM (Google Cloud Messaging) pour Android. Partie préliminaire éventuelle : Création d'un AVD lisant GCM

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Introduction au langage C

cbox VOS FICHIERS DEVIENNENT MOBILES! POUR CLIENT MAC OS X MANUEL D UTILISATION

Transcription:

Programmation par Objets - Printemps 2010 Frédéric Mallet & Jean-Paul Roy L1 Info&Math - Faculté des Sciences de Nice Cours n 8 http://deptinfo.unice.fr/~roy Le langage Java avec 1

Les langages Processing et Java Java est un langage de programmation généraliste, orienté objets, né vers 1995, et qui permet à la fois d'écrire des programmes industriels et de petites applications (applets) à inclure dans des pages Web. Il permet aussi de programmer des téléphones portables, des appareils électro-ménagers, etc. Il comporte d'énormes bibliothèques mais demande une certaine expertise. http://www.processing.org http://java.sun.com Processing est un logiciel de création de programmes d'animation graphique, notamment pour inclusion dans des pages Web, avec un effort beaucoup moins important que si l'on utilisait seulement Java. Il est notamment destiné aux étudiants et aux artistes numériques. De nombreux chercheurs ont étendu son champ d'applications vers de nouvelles zones : musique, électronique, etc. 2

Pourquoi ne pas étudier que Processing? Parce que Processing n'est qu'un système de programmation particulier, plutôt réservé à un usage bien délimité. Pour un futur professionnel de l'informatique, il est insuffisant. Peu de livres sont disponibles, récents, et en anglais seulement jusqu'à présent... Pourquoi ne pas étudier que Java? Parce que Java est un langage complexe, pour lequel une petite application graphique devient tout de suite une tâche très compliquée. Et le graphisme (le multimédia en général) fait partie de notre contexte informatique quotidien! Parce qu'un simple calcul mathématique requiert inutilement l'écriture d'une classe en Java, ce qui encombre l'approche du débutant. Parce que Processing est basé sur Java. La syntaxe est simplifiée mais on peut y inclure du véritable code Java. Il peut délivrer une véritable application Java, ou une applet pour une page Web. 3

Pourquoi cette orientation vers Java? Pour toutes raisons que l'on a citées plus haut. Il est moderne, très utilisé, orienté objets, permet de générer des applications pour Internet, pour la téléphonie mobile, il est inscrit dans la technologie la plus récente. Il est possible de programmer gratuitement avec le JDK Java pour toutes les plate-formes (Linux, MacOS-X, Windows). La même application tournera en principe à l'identique sur n'importe quelle machine, gage d'économie de développement. Ses principaux concurrents sont C# sur Windows (Microsoft), Objective-C sur MacOS-X (Apple), et C++ partout. A notre échelle, sa syntaxe reste relativement simple, tant qu'on n'aborde pas le graphisme. Les problèmes graphiques resteront traitables par Processing, quitte à programmer en Processing de véritables classes Java. 4

Simplifications arithmétiques de Processing Pour accélérer le graphisme, Processing utilise des nombres approchés en simple précision : c'est le type primitif float. println(pi); Run 3.1415927 Bien qu'il admette aussi le type float, Java opte pour une double précision des nombres approchés : c'est le type primitif double. System.out.println(Math.PI); 3.141592653589793 OUI, vous pouvez taper cette phrase Java en Processing! Mais ne mélangez pas les deux, println ne connait pas le type double! println(3.141592653589793); 3.1415927 println(math.pi); ERROR 5

Donc println pour Processing et System.out.println pour Java. Notez au passage la notation : println de Java est un message envoyé à l'objet System.out (l'écran du poste de travail)! La notation pointée a donc la même signification en Processing et en Java... Les fonctions arithmétiques de Processing sur les nombres approchés fonctionnent en Java avec le type double et appartiennent à une classe spécialisée Math qui est cachée dans Processing : en Processing en Java println("x = " + x); type float par défaut pour les nombres approchés sqrt(x) x System.out.println("x = " + x); type double par défaut pour les nombres approchés Math.sqrt(x) pow(x,y) PI x y π Math.pow(x,y) Math.PI 6

Le graphisme de Processing Il est extraordinairement plus simple que celui de Java! Une animation fluide de Processing nécessiterait en Java des classes compliquées de l'api, des techniques de double buffer pour éviter le scintillement à chaque effacement du canvas, etc. N'essayez donc pas de transposer en Java pur (construit en-dehors de Processing) vos anciens programmes graphiques! Vous verrez comment faire en L3-Info!... Dans un programme Java pur, ne pensez plus au canvas, aux fonctions setup, draw, ellipse, stroke, etc. Faire du pur Java? Java pur Mais comment?... 7

Le logiciel DrJava http://www.drjava.org 8

Le logiciel DrJava Il s'agit là aussi d'un logiciel gratuit téléchargeable sur tous les systèmes (Linux, MacOS-X, Windows). Bien entendu, comme pour Processing, il faut avoir installé le JDK (1.5) de Sun qui fournit le compilateur et l'api. Comme Processing, DrJava est un environnement de développement intégré (IDE) contenant un éditeur de textes Java et une fenêtre pour les résultats. Non, ne me parlez pas de graphisme! DrJava est un système universitaire dédié à l'enseignement. Vous utiliserez plus tard des environnements beaucoup plus professionnels (Eclipse, JBuilder, Sun One, Visual Age) mais aussi bien plus compliqués. 9

Programmer une classe d'objets en Java Nous avons déjà vu l'architecture d'une classe en Processing, nous conservons cette architecture en Java : class Machin { champs constructeurs méthodes 10

Exemple : la classe TicketMachine Modélisation naïve d un distributeur de billets de train à prix unique. Les clients insèrent de l argent et demandent l impression d un ticket. Vente de tickets La ligne Valrose 3. Il récupère sa monnaie 4. et obtient son billet 1. Le client insère des pièces de monnaie 2. Il appuie sur le bouton pour demander l'impression du ticket 11

A tout moment l'état d'un distributeur est caractérisé par : le prix de son billet, la somme d'argent qui a déjà été insérée par un client, et la monnaie qui a été rendue. Prenons un seul constructeur : champs class TicketMachine { int ticketcost; // prix du billet int balance = 0; // somme déjà insérée constructeur TicketMachine(int cost) { ticketcost = cost; <méthodes> Notez qu'un champ est initialisé par le constructeur avec une valeur constante, l'autre par le constructeur en fonction d'un paramètre. 12

METHODES. Que doit savoir faire un distributeur d? - accepter de l'argent du client. Cette méthode va modifier la somme déjà insérée. d.insertmoney : int! void - imprimer le billet et rendre la monnaie. Il effectue bien entendu les vérifications nécessaires quant à la somme insérée... d.printticket : void! void - à tout moment donner son état : d.tostring : void! String Dans une modélisation par objets, il est essentiel de bien réfléchir à ce qui caractérise l'état d'un objet, et à son savoir-faire! 13

Les méthodes de la classe TicketMachine : void insertmoney(int amount) { if (amount > 0) { balance = balance + amount; void printticket() { if (balance >= ticketcost) { System.out.println("*** BILLET LIGNE VALROSE : " + ticketcost + " EUROS ***"); balance = balance - ticketcost; if (balance > 0) { int refund = balance; balance = 0; System.out.println("Veuillez récupérer " + refund + " euro(s)."); else { System.out.println("Il manque encore " + (ticketcost - balance) + " euros."); public String tostring() { return "TicketMachine[ticketCost=" + ticketcost + ",balance=" + balance + "]"; 14

Utilisation de le compilateur la classe en cours d'édition l'éditeur le toplevel interactif pour parler aux objets et tester ses programmes 15

Vous avez entré votre programme dans l'éditeur, vous le sauvegardez sur votre clef USB. ATTENTION : le nom du fichier doit être exactement le nom de la classe avec l'extension.java. Ici : TicketMachine.java Soyez attentif aux majuscules/minuscules : erreur fréquente!... Ensuite vous compilez la classe : traduction en langage-machine. Le compilateur Java (inclus dans le JDK de Sun, et utilisé par Processing et DrJava) va traduire votre fichier TicketMachine.java en un fichier binaire TicketMachine.class. C'est ce dernier qui sera exécuté et qui voyagera sans problème entre Linux, MacOS-X, et Windows. le fichier compilé le fichier source 16

Si le compilateur a montré des erreurs, vous corrigez! S'il a dit Compilation completed, vous allez cliquer dans l'onglet Interactions pour arriver au toplevel de DrJava : Au toplevel, vous allez pouvoir créer des objets et leur envoyer des messages. Si votre message est sans résultat, c'est une instruction, terminez-le par un point-virgule. Welcome to DrJava. > TicketMachine tm = new TicketMachine(6); > tm.insertmoney(4); > Si vous demandez la valeur d'une expression, ne la terminez PAS par un point-virgule! > tm TicketMachine[ticketCost=6,balance=4] > tm.balance 4 > tm.balance; > 17

Utilisons le toplevel pour tester le fonctionnement d'un distributeur : Welcome to DrJava. > TicketMachine tm = new TicketMachine(6); > tm.insertmoney(4); > tm.printticket(); Il manque encore 2 euros. > tm.insertmoney(3); > tm TicketMachine[ticketCost=6,balance=7] > tm.printticket(); *** BILLET LIGNE VALROSE : 6 EUROS *** Veuillez récupérer 1 euro(s). > tm TicketMachine[ticketCost=6,balance=7] Le toplevel sert aussi pour tester des primitives Java : > int x = 2009; > Math.sqrt(x) + 1 // type double! 45.82186966202994 Le bouton Reset de DrJava permet de ré-initialiser le toplevel et d'oublier toutes variables définies. Les touches fléchées permettent de récupérer les anciennes commandes entrées au toplevel (historique). 18

Tester une classe d'objets On peut programmer une autre classe sans constructeur, dont les objets sont des tests, par exemple TicketMachineTest : class TicketMachineTest { void go() { System.out.println("Je construis un distributeur à 6 euros"); TicketMachine tm = new TicketMachine(6); System.out.println("J'insère 4 euros"); tm.insertmoney(4); System.out.println("Je demande à imprimer le billet"); tm.printticket(); System.out.println("J'insère 3 euros"); tm.insertmoney(3); System.out.println("Je demande à imprimer le billet"); tm.printticket(); System.out.println("Je demande à voir l'état de la machine"); System.out.println(tm); Lorsqu'une classe n'a pas besoin de constructeur, on utilise le constructeur par défaut sans paramètre! 19

Je compile tout, puis je construis un test au toplevel, et le lance : Welcome to DrJava. > TicketMachineTest test = new TicketMachineTest(); > test.go(); Je construis un distributeur à 6 euros J'insère 4 euros Je demande à imprimer le billet Il manque encore 2 euros. J'insère 3 euros Je demande à imprimer le billet *** BILLET LIGNE VALROSE : 6 EUROS *** Veuillez récupérer 1 euro(s). Je demande à voir l'état de la machine TicketMachine[ticketCost=6,balance=0] > le constructeur par défaut Il pourrait y avoir plusieurs méthodes de test. Une classe de test peut tester plusieurs classes d'objets. Les objets d'une classe de test n'ont pas vraiment d'intérêt. Nous verrons plus tard des méthodes qui appartiennent à la classe... 20