Vous êtes sur la page 1sur 13

TP1 : Initiation Java et Eclipse 1

TP1 : Initiation Java et Eclipse


Systmes dExploitation Avancs

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.

II. Environnement de Dveloppement : Eclipse


Eclipse est un environnement de dveloppement intgr libre extensible, universel et polyvalent, permettant de

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

spcifiques, est galement utilis pour crire des extensions.

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

logiciel sont dveloppes en tant que plug-in.


TP1 : Initiation Java et Eclipse 2


Plusieurs logiciels commerciaux sont bass sur ce logiciel libre, comme par exemple IBM Lotus Notes 8, IBM

Symphony ou WebSphere Studio Application Developer.

II. 1. Cration d'un Projet sur Eclipse

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

II. 2. Nouveau projet : Helloworld

II. 2. 1. Helloworld Version simplifie


Crer un nouveau projet Helloworld comme indiqu dans la partie prcdente. Crer un package
nomm helloPack, contenant une classe Helloworld qui contient une mthode main.

Dans la mthode main, crire "System.out.println("Hello World!");"

Excuter votre programme en cliquant directement sur l'icne . L'affichage apparatra dans la
partie infrieure, sous l'onglet Console.

II. 2. 2. Helloworld Ajout d'arguments

Dans cette partie, nous allons ajouter des arguments la classe.

Crer dans le mme projet Helloworld, un nouveau package nomm argsPack, contenant une
classe Helloworld avec une mthode main.

Dans le code de la mthode main, crire : "System.out.println("Hello "+args[0]+"!");"


TP1 : Initiation Java et Eclipse 5


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

III. Initiation Java


Le langage Java est un langage de programmation informatique orient objet cr par James Gosling et Patrick
Naughton, employs de Sun Microsystems, avec le soutien de Bill Joy (cofondateur de Sun Microsystems en 1982),
prsent officiellement le 23 mai 1995 au SunWorld.

III. 1. Cas dtude : Vente aux enchres

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.

III. 2. Classes et objets

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.

class Vehicule { Une classe Vehicule sauvegarde dans un


int age ;
float taille ; fichier Vehicule.java
float poids ;
boolean moteur ; Quatre "attributs" : age, taille, poids et
moteur
int getWeight() {
return(poids) ;
Une "mthode" : getWeight retourne le poids
}
} d'un vhicule
TP1 : Initiation Java et Eclipse 8


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 :

Vehicule v = new Vehicule() ;

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 :

1. Cest la seule mthode qui porte le nom de la classe


2. Cest la seule mthode qui ne dfinit pas de variable de retour
3. Cest la seule mthode dont le nom commence par une majuscule (puisque cest le nom de la classe)

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(int a, float t, float p, boolean m) {


age = a ;
taille = t ;
poids = p ;
moteur = m ;
}

...
}

...
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 : pas de limitation


protected : visible depuis l'intrieur de la classe et depuis classes qui en hritent
private : visible uniquement depuis intrieur de la classe
TP1 : Initiation Java et Eclipse 10

public class Vehicule {


public float age ;
protected float taille ;
private int poids ;
private boolean moteur ;

public Vehicule() {
age = 1.0F ;
taille = 1.0F ;
poids = 1 ;
moteur = false ;
}

public int getWeight() {


return(poids) ;
}
}

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 class Voiture extends Vehicule {


public int places ;

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 class Vehicule {


public float age ;
protected float taille ;
private int poids ;
private boolean moteur ;

private Personne proprietaire ;

public Vehicule() {
age = 1.0F ;
taille = 1.0F ;
poids = 1 ;
moteur = false ;
}

public int getWeight() {


return(poids) ;
}
}
TP1 : Initiation Java et Eclipse 12


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.

III. 6. Dfinition dune variable partage

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.

Raliser cette application en Java sur Eclipse.

Vous aimerez peut-être aussi