Bases Java - Eclipse / Netbeans



Documents pareils
TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse

Introduction à Eclipse

Eclipse atelier Java

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

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

Projet de développement

TP1. Outils Java Eléments de correction

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

Installation et prise en main

Cours 1: Java et les objets

Initiation à JAVA et à la programmation objet.

Programmer en JAVA. par Tama

TD/TP 1 Introduction au SDK d Android

as Architecture des Systèmes d Information

Intégration de l interface graphique de Ptidej dans Eclipse

Projet de développement. Introduction à Eclipse. Application à votre projet. Philippe Collet. Organisation. Cours 1 : principes généraux - svn

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

S T L - C P S - L e s p l u g i n s E c l i p s e. - Une Introduction , Frédéric Peschanski

Tutorial pour une application simple

Java Licence Professionnelle CISII,

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Chapitre I Notions de base et outils de travail

Utiliser Java sans BlueJ

Remote Method Invocation (RMI)

Compte Rendu d intégration d application

BIRT (Business Intelligence and Reporting Tools)

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

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

Le langage C. Séance n 4

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

< Atelier 1 /> Démarrer une application web

Web Tier : déploiement de servlets

Auto-évaluation Programmation en Java

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

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

Mise en œuvre des serveurs d application

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

Annexe : La Programmation Informatique

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

INITIATION AU LANGAGE JAVA

La technologie Java Card TM

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

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

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

Tutoriel code::blocks

Introduction à MATLAB R

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

D E S C R I P T I O N D E S É L É M E N T S C L E F S D ' U I M A

Traitement de données

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

1. Installation d'un serveur d'application JBoss:

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

ECLIPSE ET PDT (Php development tools)

Premiers Pas en Programmation Objet : les Classes et les Objets

Programmation par les Objets 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

Construire des plug-ins pour SAS Management Console SAS 9.1

Générer du code à partir d une description de haut niveau

Programmation Orientée Objet

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

IBM DB2 Alphablox. d administration GC

Programmation Objet Java Correction

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

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

Langage Java. Classe de première SI

Dossier. Développer en Java sur téléphone mobile. Benjamin Damécourt UFR SITEC Master 2 EESC 11 janvier 2012

wxwidgets dans un environnement Microsoft Windows

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

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

GANTTPROJECT. Julien TENDERO

Programmation Mobile Android Master CCI

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Java 1.5 : principales nouveautés

Une introduction à Java

Java c est quoi? Java pourquoi?

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

Développer des Applications Internet Riches (RIA) avec les API d ArcGIS Server. Sébastien Boutard Thomas David

JOnAS Day 5.1. Outils de développements

Éléments de programmation et introduction à Java

Création d une application JEE

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

Sessions en ligne - QuestionPoint

Java Licence Professionnelle CISII,

Programmation en Java IUT GEII (MC-II1) 1

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

EXA1415 : Annotations

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

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

PIC EVAL Dev Board PIC18F97J60

1 Démarrage de Marionnet

Export et Import de modèles ICAR sous Trnsys 17

Création d un service web avec NetBeans 5.5 et SJAS 9

Java pour le Web. Cours Java - F. Michel

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

Programmeur Java 1.4 et 5.0

Rapport de Synthèse. Création d un Générateur de modèle PADL pour le langage C++ Sébastien Colladon

Programmation Par Objets

Transcription:

Institut Galilée PDJ Année 2014-2015 Master 1 Environnements Java T.P. 1 Bases Java - Eclipse / Netbeans Il existe plusieurs environnements Java. Il est ESSENTIEL d utiliser la bonne version, et un environnement d exécution identique à la version de compilation (principalement en cas de chargement de librairies à chaud). Le système que vous avez à l Institut Galilée a les environnements java suivants : java 1.6.0 33 GNU (IcedTea6 1.8.13) (/usr/bin/java) : c est la version open source présente par défaut. Elle a l inconvénient majeure de présenter de nombreux problèmes de compatibilité avec le java standard de Sun. java 1.6.0 33, jdk1.7.0 25, jdk-1.8 (/usr/java/jdk1.../bin/java) : versions 1.6, 1.7, 1.8 de Sun/Oracle (donc propriétaire même si les sources sont publiques). Accès à Java 1.7 Modifier votre fichier.bashrc afin que la version 1.7 de java soit accessible. Pour cela, décommenter dans votre fichier.bashrc la ligne source /export/home/users/commun/.jdkrc Attention : ce changement ne prend effet qu en lançant un nouveau shell bash ou en effectuant la commande. ~/.bashrc Vérifier que le bon java est accessible avec la commande javac -version Accès à Java 1.8 Modifier votre fichier.bashrc afin que la version 1.8 de java soit accessible. Pour cela, mettre en fin de fichier.bashrc les lignes : export JAVA HOME=/usr/java/jdk-1.8 export PATH=${JAVA HOME/bin:$PATH Terminologie et versions Java SE (Standard Edition) : noyau des API (lang, collections,..., jar,...) sans machine virtuelle. JRE (Java Runtime Environment) : JSE + machine virtuelle + plugin. JDK (Java Development Toolkit) : JRE + logiciels d utilisation (java, javac, jar,...). 1 Environnement Eclipse Eclipse est un environnement de développement intégré (IDE) libre, extensible et polyvalent, permettant potentiellement de créer des projets de développement pour tout langage de programmation. Eclipse est principalement écrit en Java (à l aide de la bibliothèque graphique SWT, d IBM), et ce langage, grâce à des bibliothèques spécifiques, est également utilisé pour écrire des extensions. La spécificité d Eclipse IDE vient du fait de son architecture totalement développée autour de la notion de plug-in (en conformité avec la norme OSGi) : toutes les fonctionnalités de cet atelier logiciel sont développées en tant que plug-in. Plusieurs logiciels commerciaux sont basés sur ce logiciel libre, comme par exemple IBM Lotus Notes 8, IBM Symphony ou WebSphere Studio Application Developer. Téléchargements, plugins, tutoriaux : www.eclipse.org 1.1 Initialisation Modifier votre fichier.bashrc afin qu Eclipse soit accessible (c est la version 3.4.1 contrairement à ce que le nom ci-dessous pourrait faire penser). Pour cela, décommenter dans votre fichier.bashrc la ligne source /export/home/users/commun/.eclipse-3.2rc Attention : ce changement ne prend effet qu en lançant un nouveau shell bash ou en effectuant la commande. ~/.bashrc 1

Remarque : En fait, c est la version indigo de Eclipse qui est lancée (donc la 3.7 et pas la 3.2). Il existe maintenant la version kepler (4.3) qui a fait suite à la version juno (4.2). 1.2 Projet Création d un projet File -> New -> Java Project Project Name : mettre Thread Share Vérifier que le JRE (Java Runtime Environment) est jdk1.6.xx ou jdk1.7.xx. Si ce n est pas le cas, utiliser Configure JREs, puis sélectionner ou ajouter (via search si nécessaire). Une sous-fenêtre Project Explorer vous permet de parcourir les projets et sources créés. Si la sous-fenêtre n est pas visible, utiliser Window -> Show view -> Project Explorer. Accès aux fichiers Un Workspace contient l ensemble des projets créés. Le workspace est un répertoire dans votre environnement de travail, il est défini au premier lancement de Eclipse. Vous pouvez retrouver le nom du répertoire par File -> Switch Workspace. Chaque projet est un sousrépertoire contenant un sous-répertoire bin pour les exécutables, et un sous-répertoire src pour les sources. Création de sources, exécution Sélectionner Thread Share/src dans le Project Explorer, puis bouton droit et New -> Class. Entrer le nom de la classe TestRunnable, cocher main (puisque cette classe contient la méthode main). Puis entrer le code, sauvegarder. Exécution par Run. Une fenêtre Console vous donne l affichage. 2 Environnement Netbeans NetBeans est aussi un environnement de développement intégré (IDE) pour Java, placé en open source par Sun. En plus de Java, NetBeans permet également de supporter différents autres langages, comme Python, C, C++, XML et HTML. Il comprend toutes les caractéristiques d un IDE moderne (éditeur en couleur, projets multi-langage, refactoring, éditeur graphique d interfaces et de pages web). Il permet en outre : de créer et déployer des environnements complets web + java d intégrer la machinerie des beans java (annotations adaptées) de supporter en plugin des bases de données (GlassFish en Open Source) de contrôler le déploiement sur un ensemble de machines 2.1 Initialisation Modifier votre fichier.bashrc afin que Netbeans soit accessible. Pour cela, décommenter dans votre fichier.bashrc la ligne source /export/home/users/commun/.netbeansrc dans votre.bashrc Attention : ce changement ne prend effet qu en lançant un nouveau shell bash ou en effectuant la commande. ~/.bashrc Remarque : c est la version 6.7.1 qui sera lancée, les versions 6.9.1, 7.1.1, 7.3, 8.0.1 sont aussi installées (/usr/java/netbeans-x.x.x/bin/netbeans). 2.2 Projet et Groupe Les projets peuvent être organisés en groupes. Un groupe est un ensemble de projets et est créable avec FIle->Project Group -> New Group. Donner un nom : TP0. Création d un projet File -> New Project -> Java -> Java Application 2

Accès aux fichiers Un Workspace contient l ensemble des projets créés. Le workspace est un répertoire dans votre environnement de travail, il est défini au premier lancement de Netbeans. Vous pouvez retrouver le nom du répertoire en regardant les propriétés (bouton droit, Properties) d un projet particulier. 3 Exercice : Classe et héritage Dans tous les exercices de cette section, déterminez ce qui est affiché par chacun des programmes donnés, puis testez vos réponses en les implantant. 3.1 Valeurs et références, surcharge private int v a l =0; public s t a t i c void a f f i c h e P l u s ( int a ) { a++; System. out. p r i n t l n ( a ) ; public s t a t i c void a f f i c h e P l u s (A a ) { a. v a l++; System. out. p r i n t l n ( a. v a l ) ; public s t a t i c void main ( S t r i n g [ ] a r g s ) { A unobj = new A ( ) ; A unautreobj = new A( ) ; a f f i c h e P l u s ( unobj. v a l ) ; a f f i c h e P l u s ( unobj. v a l ) ; a f f i c h e P l u s ( unobj ) ; a f f i c h e P l u s ( unobj ) ; a f f i c h e P l u s ( unautreobj ) ; a f f i c h e P l u s ( unautreobj ) ; i f ( unobj == unautreobj ) System. out. p r i n t l n ( Egales ) ; else System. out. p r i n t l n ( D i f f e r e n t e s ) ; 3.2 Liaison dynamique public S t r i n g f (B obj ) { return ( A et B ) ; public S t r i n g f (A obj ) { return ( A et A ) ; class B extends A { public S t r i n g f (B obj ) { return ( B et B ) ; public S t r i n g f (A obj ) { return ( B et A ) ; class t e s t { public s t a t i c void main ( S t r i n g [ ] a r g s ){ A a1 = new A( ) ; A a2 = new B ( ) ; B b = new B ( ) ; System. out. p r i n t l n ( a1. f ( a1 ) ) ; System. out. p r i n t l n ( a1. f ( a2 ) ) ; System. out. p r i n t l n ( a2. f ( a1 ) ) ; System. out. p r i n t l n ( a2. f ( a2 ) ) ; System. out. p r i n t l n ( a2. f ( b ) ) ; System. out. p r i n t l n ( b. f ( a2 ) ) ; 3

3.3 Polymorphisme public S t r i n g f (D obj ) { return ( A et D ) ; public S t r i n g f (A obj ) { return ( A et A ) ; class B extends A { public S t r i n g f (B obj ) { return ( B et B ) ; public S t r i n g f (A obj ) { return ( B et A ) ; class C extends B{ class D extends B{ class t e s t { public s t a t i c void main ( S t r i n g [ ] a r g s ){ A a1 = new A( ) ; A a2 = new B ( ) ; B b = new B ( ) ; C c = new C ( ) ; D d = new D( ) ; System. out. p r i n t l n ( a1. f ( b ) ) ; System. out. p r i n t l n ( a1. f ( c ) ) ; System. out. p r i n t l n ( a1. f ( d ) ) ; System. out. p r i n t l n ( a2. f ( b ) ) ; System. out. p r i n t l n ( a2. f ( c ) ) ; System. out. p r i n t l n ( a2. f ( d ) ) ; System. out. p r i n t l n ( b. f ( b ) ) ; System. out. p r i n t l n ( b. f ( c ) ) ; System. out. p r i n t l n ( b. f ( d ) ) ; 3.4 Champs de classe int i ; int f ( ) { return i ; s t a t i c S t r i n g g ( ) { return ( A ) ; S t r i n g h ( ) { return g ( ) ; class B extends A { int i =2; int f ( ) { return i ; s t a t i c S t r i n g g ( ) { return ( B ) ; S t r i n g h ( ) { return g ( ) ; class t e s t { public s t a t i c void main ( S t r i n g [ ] a r g s ) { B b = new B ( ) ; System. out. p r i n t l n ( b. i ) ; System. out. p r i n t l n ( b. f ( ) ) ; System. out. p r i n t l n ( b. g ( ) ) ; System. out. p r i n t l n ( b. h ( ) ) ; 4

A a = b ; System. out. p r i n t l n ( a. i ) ; System. out. p r i n t l n ( a. f ( ) ) ; System. out. p r i n t l n ( a. g ( ) ) ; System. out. p r i n t l n ( a. h ( ) ) ; 4 Application : Les robots pollueurs On considère que le monde est constitué d une matrice de cases. Différents types de robots agissent dans ce monde : des robots pollueurs et des robots nettoyeurs. Les robots pollueurs se baladent dans le monde et déposent des papiers gras sur les cases où ils se trouvent. Les robots nettoyeurs, quant à eux, ne supportent pas la vue d un papier gras et l enlèvent dès qu ils en voient un sur une case. Les robots pollueurs sont de deux sortes : robots sauteurs et robots qui vont tout droit. Chaque robot pollueur suit son parcours et dépose un papier gras sur chaque case rencontrée. Le parcours précis des robots pollueurs sera donné dans la suite. Les robots nettoyeurs parcourent méthodiquement le monde en boustrophédon, c est-à-dire qu ils parcourent la première ligne case par case, puis arrivé en bout de ligne font demi-tour, parcourent la deuxième ligne en sens inverse, et ainsi de suite jusqu à la dernière case de la dernière ligne. Ils enlèvent, s il s en trouve un, le papier gras de la case où ils se trouvent. Parmi les robots nettoyeurs, certains sont distraits et n enlèvent qu un papier sur deux. 1. Ecrire la classe Monde qui contient les variables d instance, les constructeurs et les méthodes suivantes (définir si elles sont d instance ou de classe) : Le nombre de lignes nbl, le nombre de colonnes nbc, et une matrice booléenne mat de nbl lignes et nbc colonnes (true signifiant la présence d un papier gras). Un constructeur avec paramètres et un sans paramètres Monde() : ce constructeur par défaut crée un monde 10*10 sans papiers gras. public String tostring() : retourne une chaine de caractères décrivant le monde. On représentera un papier gras par le caractère o, rien par le caractère. (point). metpapiergras(int i,int j) : met un papier gras dans la case (i, j). prendpapiergras(int i,int j) : enlève le papier gras de la case (i, j). estsale(int i, int j) : teste si la case (i, j) a un papier gras. nbpapiersgras() : qui rend le nombre de papier gras dans le monde. 2. Ecrire dans une classe TestRobot avec une méthode main et y créer un Monde de 10 lignes et 10 colonnes. Y tester les méthodes metpapiergras, prendpapiergras et estsale. 3. Ecrire la classe Robot qui est abstraite car elle n aura aucune instance, et qui contient les champs et méthodes suivantes : posx, posy : position du robot sur le monde. m : variable de type Monde. En effet, il faut que le robot connaisse le monde pour pouvoir s y déplacer et agir. deux constructeurs : Robot(int x,int y,monde m) qui crée un robot à la position (x,y) et Robot(Monde m) qui crée un robot avec une position aléatoire. Le constructeur Robot(Monde m) doit appeler l autre constructeur. vaen(int i, int j) : se déplace en (i, j). parcourir() : méthode abstraite qui sera définie dans les sous-classes. 4. Ecrire la classe RobotPollueur (également abstraite car elle n aura pas d instance) qui contient la méthode : polluer () : met un papier gras là où ce robot se trouve dans le monde. 5. Ecrire la classe PollueurToutDroit qui contient les champs et méthodes suivantes : coldepart, numéro de la colonne où il va se rendre pour commencer sa mission. constructeur(s). parcourir() : cette méthode définit la méthode parcourir abstraite de la classe Robot. Elle décrit un parcours de ce robot dans le monde. Le robot se positionne d abord dans sa colonne de départ en case (0, ColDepart), puis il va tout droit vers le sud en visitant chaque case de la colonne et dépose un papier gras sur chacune d elle. Il s arrête dans la dernière case de la colonne. 5

6. Ecrire la classe PollueurSauteur, avec les champs et méthodes suivants : deltax représentant la taille du saut e?ectué à chaque déplacement du sauteur. constructeurs. parcourir() : cette méthode définit la méthode parcourir abstraite de la classe Robot. Elle décrit un parcours de ce robot dans le monde. Le robot se positionne d abord dans sa colonne de départ en case (0, 0), puis il saute de façon analogue au cavalier des Echecs et va en (1, deltax), puis en (2, 2* deltax), puis en (3, 3*deltax), etc. Si la colonne sort de l échiquier, on revient au début. Par exemple, la colonne nbc, qui n existe pas, sera transformée en nbc modulo nbc, i.e, colonne 0. Chaque case rencontrée est souillée d un papier gras. Le robot s arrête lorsqu il atteint la dernière ligne. 7. Ecrire la classe RobotNettoyeur, qui contient les méthodes suivantes : nettoyer() : enlève le papier gras de la case où se trouve ce robot. constructeurs, parcourir() : cette méthode définit la méthode parcourir abstraite de la classe Robot. Elle décrit un parcours complet de ce robot dans le monde. Il part de la case (0, 0) et parcourt le monde en boustrophédon. Si la case est sale, il enlève le papier gras qui s y trouve. 8. Ecrire la classe NettoyeurDistrait qui contient les méthodes suivantes : constructeurs. parcourir() : cette méthode redéfinit la méthode parcourir(). Elle décrit un parcours complet de ce robot dans le monde. C est le même parcours que celui des robots nettoyeurs mais comme il est distrait, il n enlève qu un papier sur deux. 9. Ecrire dans une classse TestRobot avec une méthode main pour tester les classes définies dans les exercices précédents. 5 Exceptions et lambda-expressions 1. Définir une classe Enseignant ayant 4 champs : String nom int age int salaire String grade : une énumération pour PU, MCU, PRAG, BIATTS, PUPH, MCUPH 2. Définir un ensemble d enseignants, comme liste d instances de la classe Enseignant. 3. Définir une méthode permettant de calculer l âge étant donné un nom d enseignant. 4. Définir une méthode calculant la moyenne des âges des enseignants. 5. Définir une méthode calculant la moyenne des salaires des enseignants dont l âge est compris entre 40 et 60 ans, idem selon le grade. 6. Définir des classes exception permettant de gérer les cas d erreurs. 7. Définir des méthodes permettant d ajouter, ou de supprimer, ou de modifier un enseignant. 6