TP1 Intro Eclipse
TP1 Intro Eclipse
TP1 Intro Eclipse
I. Objectifs du TP
Ce TP est une introduction au langage Java. Il vous permettra de comprendre les principes de base du langage,
ainsi que la syntaxe dont on aura besoin pour le reste du programme. Il ne prtend pas tre exhaustif, mais donne une
ide assez complte sur les notions connatre pour pouvoir programmer en Java. Plus tard, je vous invite tudier plus
en profondeur ce langage.
Pour pouvoir programmer en Java, on a besoin dun JDK (Java Development Kit), qui reprsente lenvironnement
dans lequel le code Java est compil afin que la machine virtuelle (JVM pour Java Virtual Machine) puisse linterprter. Il
contient le compilateur Java (javac), larchiveur (jar), le gnrateur de documentation (javadoc) et le dbogueur (jdb). Il
contient galement lenvironnement dexcution Java (JRE pour Java Runtime Environment).
Pour compiler et excuter un programme en Java, on peut appeler les commandes directement sur une console
(javac pour la compilation et java pour lexcution) ou bien utiliser un IDE (Integrated Development Environment). Un IDE
est un programme regroupant un ensemble doutils pour le dveloppement de logiciels. Cet IDE, en collaboration avec le
JDK, permet de faciliter la ralisation de toutes les tapes de compilation et dexcution, grce une interface graphique
ddie. Il existe plusieurs IDE quon peut utiliser (Netbeans, Eclipse, JDeveloper, JBuilder), nous allons en utiliser un
pour cette anne : Eclipse. La premire partie de ce TP vous montre lenvironnement Eclipse pour une utilisation de base,
mais le but est loin de vous apprendre lutiliser en profondeur : Eclipse reste juste un outil, quon peut remplacer tout
moment par un autre.
crer des projets de dveloppement mettant en uvre n'importe quel langage de programmation. Eclipse IDE est
principalement crit en Java ( l'aide de la bibliothque graphique SWT, d'IBM), et ce langage, grce des bibliothques
La spcificit d'Eclipse IDE (Integrated Development Environement) vient du fait de son architecture totalement
dveloppe autour de la notion de plugin (en conformit avec la norme OSGi) : toutes les fonctionnalits de cet atelier
Plusieurs logiciels commerciaux sont bass sur ce logiciel libre, comme par exemple IBM Lotus Notes 8, IBM
Ouvrez l'IDE Eclipse, on vous demandera de choisir l'espace de travail dans lequel vous allez trouver vos projets.
Tapez le chemin du rpertoire que vous avez cr sur le bureau. Si vous n'avez pas encore cr d'espace de
travail, Eclipse le crera pour vous.
Fermez la fentre de bienvenue qui apparat.
Vous vous trouvez actuellement dans votre espace de travail. La figure suivante vous indique les diffrentes vues
disponibles.
Crez un nouveau projet Java. Pour cela, appuyez sur File New Java Project. La fentre suivante apparatra:
TP1 : Initiation Java et Eclipse 3
Tapez comme indiqu le nom de votre projet. Conservez les rglages par dfaut, et appuyez sur Finish.
Dans l'espace de travail, sous l'onglet Packages, vous verrez que le projet est cr, et qu'il contient dj un
rpertoire src (qui doit contenir tous les fichiers source que vous crez), et JRE System Library, qui est utilise pour
compiler votre code.
Pour crer un package sous le rpertoire src, cliquer sur celui-ci, puis sur l'icne , ou clic-droit sur src, et
choisir New -> Package. Choisissez un nom pour le package.
Pour crer une classe :
Cliquer sur le package qui doit contenir la classe puis sur l'icne , ou clic-droit sur le package, et choisir
New -> Class. Dans la fentre qui apparat, choisissez le nom de la classe.
Si la classe n'est pas dfinie dans un package (ce qui est dconseill), refaites l'opration ci-dessus partir du
rpertoire src.
Vous pouvez gnrer automatiquement la mthode main en cliquant sur la case public static void main(String[]
args).
La classe gnre apparatra sous le package que vous avez choisi. Double-cliquez dessus pour modifier son code
dans la partie dition. Vous verrez qu'un squelette de la classe vous est propos. Vous n'aurez qu' terminer le
reste du code.
Avec Eclipse, vous n'avez pas besoin de compiler explicitement votre code : la compilation se fait en temps rel.
De plus, les erreurs de syntaxe seront affiches pendant l'criture du code, avec des propositions de corrections.
TP1 : Initiation Java et Eclipse 4
Excuter votre programme en cliquant directement sur l'icne . L'affichage apparatra dans la
partie infrieure, sous l'onglet Console.
Crer dans le mme projet Helloworld, un nouveau package nomm argsPack, contenant une
classe Helloworld avec une mthode main.
Pour dfinir des arguments la classe, cliquer sur la flche ct de l'icne d'excution et
slectionner Run Configurations, ou cliquer sur la classe que vous voulez excuter, et aller Run
Run Configurations... La fentre suivante va apparatre.
Dans la partie de gauche, slectionner Java Application, puis cliquer sur l'icne (en haut,
gauche), pour ajouter une nouvelle configuration. Vous verrez que votre classe Helloworld a t
ajoute sous Java Application.
Slectionner l'onglet Arguments (ci-dessus encadr en rouge) et, dans le cadre Program
Arguments, tapez simplement votre nom.
Cliquer ensuite sur Run. Vous verrez dans la console l'affichage "Hello votre_nom!".
TP1 : Initiation Java et Eclipse 7
Nous allons dans cette partie vous initier aux concepts en base de Java en ralisant une petite application de vente
aux enchres, qui permet deux personnes (appels enchrisseurs) de miser sur un objet en vente. Cet objet est dfini par un
numro (par exemple 1273), un type (par exemple tableau) et une valeur (en dinars) reprsentant son prix linstant
prsent (par exemple 500). Lobjet en vente est initialis la valeur que prcise le responsable de la vente (appel
commissaire-priseur).
Les deux enchrisseurs ont chacun une limite de prix ne pas dpasser : si le prix de lobjet dpasse cette limite,
ils ne pourront pas acheter lobjet. Ils misent une somme tour de rle. Le premier dont la limite est atteinte quitte
lenchre, et cest son adversaire qui acquiert lobjet.
TAF : Pour commencer, crer un projet qui sappelle VenteAuxEncheres sur Eclipse. Dans le rpertoire src, crer
un package appel encheres et un package appel main. Dans le package main, crer une classe Main contenant une
mthode main quon laissera vide pour linstant.
Une classe reprsente la description informatique des caractristiques d'un objet abstrait (destin modliser un
objet rel). Elle dcrit les constituantes lmentaires de l'objet ainsi que les oprations (mthodes) pouvant s'appliquer
cet objet.
Un objet est une instance d'une classe. Il est gnr partir d'une classe et stock dans une variable. Pour crer un
nouvel objet, loprateur new est utilis :
Conventions de nommage:
1. Une classe commence toujours par une majuscule, tous les autres identifiants commencent en minuscule (les
objets, les mthodes, les types primitifs, les variables)
2. Si un identifiant est compos de plusieurs mots, ces mots sont colls lun la suite de lautre avec une
majuscule pour chaque dbut de mot, mais en respectant la convention 1. Par exemple, pour une classe :
NomDeClasse, et pour un objet nomDeLObjet.
Un constructeur est une mthode spcifique appele automatiquement lors de l'instanciation d'un objet. Le
constructeur a les particularits suivantes :
class Vehicule {
int age ;
float taille ;
float poids ;
boolean moteur ;
Vehicule() {
age = 0 ;
taille = 0.0 ;
poids = 0.0 ;
moteur = false ;
}
int getWeight() {
return(poids) ;
}
}
Il est possible de dfinir un ou plusieurs constructeurs avec paramtres en plus du constructeur par dfaut (sans
praramtres)
TP1 : Initiation Java et Eclipse 9
class Vehicule {
int age ;
float taille ;
float poids ;
boolean moteur ;
...
}
...
Vehicule v = new Vehicule(2,4.6,1.5,true) ;
...
TAF : Sous le package encheres, crer une classe Encherisseur et une classe ObjetEnVente, qui respectent le
diagramme de classes suivant (pour linstant, seuls les constructeurs sont implmenter. Les autres mthodes restent
vides). Pour la classe Encherisseur, lattribut etat reprsente ltat de lenchrisseur, sil est encore en lice pour lobjet ou
pas, et est initialis in .
III. 3. Encapsulation
Il est possible de limiter la visibilit des attributs et mthodes dfinies l'intrieure des classes.
public Vehicule() {
age = 1.0F ;
taille = 1.0F ;
poids = 1 ;
moteur = false ;
}
La dclaration public des classes elles-mmes rpond un impratif de scurit, par une dclaration public elles
seront rendues accessibles aux autres classes.
TAF : Ajouter les modificateurs de visibilit aux classes que vous avez cr de manire ce que les mthodes
soient visibles par tout le monde et les attributs privs.
III. 4. Hritage
Il est possibilit de dcrire une nouvelle classe en la faisant hriter (driver) d'une autre classe. Cela implique que
les attributs et mthodes sont hrits de la classe mre (superclasse) et des superclasses de celle-ci jusqu arriver la
classe Object, dont hritent implicitement toutes les classes.
public Voiture() {
moteur = true ;
places = 4 ;
}
}
TP1 : Initiation Java et Eclipse 11
Important : Il est impossible de faire driver une classe de plus d'une autre classe
TAF : Ajouter une classe Personne dont hrite la classe Encherisseur, comme dfini dans le diagramme suivant.
Modifier le constructeur de la classe Encherisseur pour quil prenne en considration le constructeur de sa classe mre.
III. 5. Association
Deux classes sont en association lorsque certains de leurs objets ont besoin s'envoyer des messages pour raliser
un traitement. En Java, une association est reprsente par lajout une rfrence dune classe comme attribut dans lautre.
public Vehicule() {
age = 1.0F ;
taille = 1.0F ;
poids = 1 ;
moteur = false ;
}
Ainsi, dans lexemple suivant, une association est ralise entre un objet de type Voiture et un objet de type
Personne. Chaque voiture a maintenant une instance de Personne qui en est le propritaire.
TAF :
1. Raliser une association entre la classe Encherisseur et la classe ObjetEnVente, comme lindique le diagramme
suivant.
2. Implmenter toutes les mthodes manquantes dans les classe Encherisseur et ObjetEnVente de manire ce
que :
Quand un enchrisseur veut ajouter une somme sa mise, il teste dabord si la valeur de lobjet en vente a
atteint sa mise limite. Si cest le cas, il abandonne la partie en affichant : lenchrisseur nom_encherisseur
a abandonn la partie et met son tat out. Si ce nest pas le cas, il appelle la mthode ajouterMise de
lobjet en vente, et met la somme quil propose comme paramtre.
Quand la mthode ajouterMise de la classe ObjetEnVente est appele, la somme passe en paramtre sera
ajoute lattribut valeur.
Vous pouvez ajouter dautres mthodes si besoin est.
Pour comprendre comment partager une variable en Java, il faut se mettre en tte deux notions importantes :
En Java, tous les objets sont accessibles par des rfrences (nouveau nom pour pointeur).
La rgle gnrale de Java est que les arguments sont passs par valeur.
De ce fait, si une variable de type primitif (int par exemple) est passe en paramtre une mthode, cette variable
est duplique pour la dure de lexcution de la mthode.
La rgle du passage des arguments par valeur sapplique aussi aux objets, mais alors cest une rfrence vers lobjet
qui est copie. Ainsi, quand un objet est pass en paramtre une mthode, sa rfrence est copie, on obtient ainsi un
TP1 : Initiation Java et Eclipse 13
deuxime pointeur sur le mme objet. Ainsi, toute modification de lobjet lintrieur de la mthode implique sa
modification dans lobjet initial.
TAF : Implmentez la classe Main que vous avez cre dans le package main. Pour cela, il faut implmenter la
seule mthode de cette classe : public static void main(String[] args). Cette mthode doit faire les tapes suivantes :
Crer un nouvel objet obj de type ObjetAVendre, qui porte le numro 123, de type "tableau" et de valeur initiale
1000.
Crer deux enchrisseurs : le premier sappelle Ali Loukil et le second Olfa Hajri . Ali a mis comme mise
limite 2000dt et Olfa 2500dt. Tous les deux veulent acheter lobjet obj.
Tant que les deux enchrisseurs sont dans la course (in), Ali va ajouter la somme de 100 dt la mise, et Olfa
ajoute 200 dt.
Le programme doit afficher la fin le nom de lenchrisseur qui a remport lobjet, ainsi que la somme finale de
lobjet.
Remarque : pour comparer deux objets de type String, on doit utiliser la mthode equals contenue dans la classe String
de la manire suivante :
if (st1.equals( val1 )){}
IV. Homework
Le directeur dun laboratoire de recherche dsire contrler lutilisation abusive de limprimante. On dsire donc
raliser un programme qui mmorise le nombre de documents imprims par les membres du laboratoire en un mois en
utilisant les notions vues auparavant.
Une seule imprimante existe dans le laboratoire, partage par tous les membres. Un membre peut tre soit un
tudiant, soit un chercheur, soit le directeur lui-mme. Quand un membre imprime une ou plusieurs feuilles, le nombre
de feuilles imprimes est sauvegard dans limprimante. Si le nombre total de feuilles imprimes atteint 1000,
limprimante naccepte plus dautres impressions, et affiche le message : nombre de feuilles max atteint.
La limite dimpression pour un tudiant est 100 et pour un chercheur 200. Quand un membre veut faire une
impression, limprimante vrifie sil a atteint sa limite. Il ne peut pas imprimer si cest le cas.