Vous êtes sur la page 1sur 13

Programmer en java

1. présentation

1.1. S’assurer que l’ordinateur possède un interpréteur Java


Panneau de configuration  java

1.2. Se procurer un compilateur


• Java Runtime environment (JRE)
version 6 update 21
http://www.oracle.com/technetwork/java/javase/downloads/index.
html

1.3. Se procurer environnement de développement


 Java development Kit (JDK de Oracle

 Netbeans

• JBuilder X de Borland

• BlueJ
http://www.bluej.org/download/download.html

 Eclipse
http://www.eclipse.org/downloads/

1.4. Principe du Java/historique


 1991

 rappel : langage interprétés vs langages compilés

 langage précompilé : source  pseudo-langage (bytes code)  machine


virtuelle (VM)

 le langage est devenu universel (il suffit d’avoir la machine virtuelle


appropriée)

Programmer en java page 1/13


 java inclus dans les navigateurs

1.5. Programmation orienté objet


 objet = données + méthodes

 méthodes ressemblent à procédures

 appel = envoi d’un message à l’objet

 les données sont encapsulées

 on peut modifier un objet seulement

 class = ensemble d’objets possédant les mêmes méthodes et une


structure de données commune

 Héritage : utilisation de classe existantes  réutilisation à plusieurs


niveaux

1.6. Environnement
 interface console : apprentissage, mise au point

 interface graphique : GUI (graphical user interface) 


programmation événementielle

 applications « vraies » : indépendantes du web

 applets : liées

1.7. portabilité

Programmer en java page 2/13


2. Premiers programmes
2.1. Le programme :
public class
PremProg
//genes\PremProg.java
{ public static void main (String[] args)
{ System.out.println ("Mon premier programme Java") ;
}
}
2.2.Avec la console
 Edition : notepad = Premprog.java

 console : dos

 compilation : c :>javac Premprog.java (création de Premprog.class)

 interprétaion (exécution) : c :> java Premprog


on peut devoir écrire un path :
path = c:\Program Files\Java\jdk1.6.0_21\bin

2.3.Avec l’environnement Eclipse


2.3.1. Démarrer Eclipse
Select a workspace = choix

2.3.2. Créer un projet

File  New Java Project

Name = PremierProgramme

Finish

En fait, ça crée un répertoire PremierProgramme dans le


workspace choisi.

2.3.3. Créer une classe

File  New  Class


Source folder = Premierprogramme/src
Name = PremierProgramme (extension = .java)

Programmer en java page 3/13


Cocher public static void main(String [] args)

2.3.4. Exécuter en mode console


Run  run

2.3.5. Le fichier .java est dans le repertoire src


le fichier .class est dans le répertoire bin

2.3.6. Rouvrir le programme


File  open file  /src Premierprogramme.java

2.4.Deuxième programme
public class Exemple
{ public static void main (String[] args)
{ int n ;
double x ;
n = 5 ;
x = 2*n + 1.5 ;
System.out.println ("n = " + n) ;
System.out.println ("x = " + x) ;
double y ;
y = n * x + 12 ;
System.out.println ("y = " + y) ;
System.out.println ("y = " + x + y) ;
System.out.println ("y = " +( x + y) ;
}
}

3. Les bases du langage


3.1. Types primitifs
3.1.1. Entiers
• Byte = 8 bits {-128..+127}
• Short = 16 bits
• Int = 32 bits
• Long = 64 bits
Écriture : +34 0x23 -32

3.1.2. Flottants
• Float : 4 bytes, 7 chiffres significatifs, e-44 à e37

Programmer en java page 4/13


• Double : 8 bytes, 15 chiffres significatifs, e-323 à e307
Écriture : 4.2e4 -0.035 -3.2e-12

3.1.3. Caractères
• Unicode (16 bits) ’A’= 0x0041
• ’\t’ = 09 tabulation
• ’\n’ = 10 Line Feed
• ’\r’ = 13 Carriage Return

3.1.4. Booléens
• boolean x;
• x = (a ==b);
• valeurs true et false

3.1.5. Constantes
• final int NB = 320;
final interdit la modification

On a le droit de déclarer final une valeur obtenue pendant


l’exécution (valeur inconnue au départ)
int x, y, z;


final int VALEUR = 2 * (x + y – z);
VALEUR++; // interdit

On peut même différer l’affectation :


int x, y, z;
final int VALEUR;


VALEUR = 2 * (x + y – z); // ok (première)
VALEUR++; // interdit

Programmer en java page 5/13


3.2. Opérateurs et expressions
3.2.1.
3.3. Instructions de contrôle

4. Les classes et les objets


4.1. Une classe par fichier source
Avec Eclipse, placer les fichiers source (.java) dans le même
répertoire src.

4.2.La classe Point possède 3 méthodes et 2 données :


public class Point
// La classe point comporte 3 méthodes: initialise, deplace et
// affiche et deux données: x et y
{ public void initialise (int abs, int ord)
{ x = abs ;
y = ord ;
}
public void deplace (int dx, int dy)
{ x += dx ;
y += dy ;
}
public void affiche ()
{ System.out.println ("Il y a un point de coordonnees: abcisse "
+ x + " ordonnée " + y) ;
}
private int x ; // abscisse
private int y ; // ordonnee
}

4.3. La classe TestPoint utilise la classe Point


Elle possède une méthode main().

public class TestPoint


// La classe TestPoint utilise la classe Point
// elle crée 2 objets de type point: p_un et p_deux
//
{ public static void main (String args[])
{ Point p_un = new Point() ; // on instancie un objet p_un
//de type point() :
// il possède les 3 méthodes
// et les 2 données de la
// classe Point
p_un.initialise(3, 5) ; // utilisation de la méthode
// initialise du type point en l'appliquant à l'objet p_un

Programmer en java page 6/13


// transmission des arguments 3 et 5
// 3 --> dans le champ x de l'objet p_un
// 5 --> dans le champ y de l'objet p_un
p_un.affiche() ; // utilisation de la méthode affiche du
// type point à l'objet p_un
p_un.deplace(2, 4) ;
p_un.affiche() ;
Point p_deux = new Point() ;
p_deux.initialise (6, 8) ;
p_deux.affiche() ;
p_un.deplace(-2, -4) ;
p_un.affiche();
}
}

4.4.Une classe par fichier source


On peut placer plusieurs classes dans un même fichier source
• Une seule classe peut être publique
• La méthode main() est dans la classe publique
• Une classe sans attribut (class Point de notre exemple) demeure
accessible aux autres classes.

public class TestPoint2


{ public static void main (String args[])
{ Point p_un ;
p_un = new Point() ;
p_un.initialise(3, 5) ;
p_un.affiche() ;
p_un.deplace(2, 0) ;
p_un.affiche() ;
Point p_deux = new Point() ;
p_deux.initialise (6, 8) ;
p_deux.affiche() ;
}
}
class Point
{ public void initialise (int abs, int ord)
{ x = abs ;
y = ord ;
}
public void deplace (int dx, int dy)
{ x += dx ;
y += dy ;
}
public void affiche ()
{ System.out.println ("Point de coordonnees " + x + " " + y) ;
}
private int x ; // abscisse
private int y ; // ordonnee
}

4.5.Classe clavier

Programmer en java page 7/13


Permet de lire au clavier

import java.io.*;

public class Clavier{


public static String lireString(){//lecture d'une chaine
String ligne_lue=null;
try{
InputStreamReader lecteur=new InputStreamReader(System.in);
BufferedReader entree=new BufferedReader(lecteur);
ligne_lue=entree.readLine();
}
catch(IOException err){
System.exit(0);
}
return ligne_lue;
}
////////////////**************************************
public static float lireFloat(){//lecture d'un float
float x=0; //valeur ? lire
try{
String ligne_lue=lireString();
x=Float.parseFloat(ligne_lue);
}
catch(NumberFormatException err){
System.out.println("***Erreur de données Réel attendu***");
System.exit(0);
}
return x;
}
///////////////*********************************************
public static double lireDouble(){//lecture d'un double
double x=0; //valeur ? lire
try{
String ligne_lue=lireString();
x=Double.parseDouble(ligne_lue);
}
catch(NumberFormatException err){
System.out.println("***Erreur de données Double attendu***");
System.exit(0);
}
return x;
}
///////////*******************************************
public static int lireInt(){//lecture d'un double
int x=0; //valeur ? lire
try{
String ligne_lue=lireString();
x=Integer.parseInt(ligne_lue);
}
catch(NumberFormatException err){
System.out.println("***Erreur de données Entier attendu***");
System.exit(0);
}
return x;
}

Programmer en java page 8/13


}

Utilisation :

// Calcule la somme et le produit


// La classe SommeProduit utilise la classe Clavier

public class SommeProduit


{ public static void main (String[] args)
{
int i ;
int x , y, somme, produit;

System.out.println ("Bonjour...") ;
System.out.println ("Je vais vous calculer " + 5 + " sommes et
produits") ;

for (i=0 ; i< 5 ; i++)


{ System.out.print ("Donnez un nombre : ") ;
x = Clavier.lireInt () ;
System.out.print ("Donnez un autre nombre : ") ;
y = Clavier.lireInt () ;
somme = x + y;
produit = x * y;
System.out.println ("somme = "+somme+" produit =
"+produit) ;

System.out.println ("Travail termine - Au revoir") ;


}
}

4.6.Les constructeurs
• Permettent de passer des paramètres ( = des valeurs) à une classe
au moment de la création des objets ( = initialiser l’objet)
• Exemple :
public class Point
// La classe point est un constructeur
// comporte 2 méthodes: deplace et affiche
// et deux données: x et y
{ public Point (int abs, int ord) // constructeur (même nom que
la classe)
{ x = abs ;
y = ord ;
}
public void deplace (int dx, int dy)
{ x += dx ;
y += dy ;
}
public void affiche ()
{ System.out.println ("Il y a un point de coordonnees: abcisse "
+ x + " ordonnée " + y) ;

Programmer en java page 9/13


}
private int x ; // abscisse
private int y ; // ordonnee
}

• La classe TestPoint utilise la classe avec constructeur


public class TestPoint3
{ public static void main (String args[])
{ Point p_un = new Point(3, 5) ; // Point est un constructeur
// les arguments sont fournis à
// la création de l'objet
p_un.affiche() ;
p_un.deplace(2, 0) ;
p_un.affiche() ;
Point p_deux = new Point(6, 8) ;// pareil...
p_deux.affiche() ;
}
}

4.7.Implémentation de classe

5. La gestion des exceptions


5.1.

6. Les threads
6.1. Principe
Exécution multitâche
Thread = fil (textile) = une tâche parmi les autres

6.2.Exemple avec « extends Thread »

public class TestThreadUn


// Ce programme permet de tester les threads
{ public static void main (String args[])
{ Ecrit e1 = new Ecrit ("Un ", 3, 10) ;
Ecrit e2 = new Ecrit ("Deux ", 3, 10) ;
Ecrit e3 = new Ecrit ("Trois ", 3, 10) ;
Ecrit e4 = new Ecrit ("\n", 3, 20) ;
e1.start() ; // Méthode start du langage. Démarre le Thread
e2.start() ;
e3.start() ;
e4.start() ;
System.out.print("test ");
}
}

// La classe Ecrit comprend 2 méthodes


class Ecrit extends Thread

Programmer en java page 10/13


// La méthode Ecrit porte le même nom que la classe: c'est le
constructeur
{ public Ecrit (String texte, int nb, long attente)
{ this.texte = texte ;
// "this" permet de manipuler des données dans 3 threads
// sans avoir à définir e1.texte e2.texte et e3.texte
this.nb = nb ;
this.attente = attente ;
}
// La méthode run est obligatoire
public void run ()
{ try
{ for (int i=0 ; i<nb ; i++)
{
System.out.print (texte) ;
sleep (attente) ; // le thread est "arrêté" pour
// permettre aux autres de s'exécuter
// temps en millisecondes
}
}
catch (InterruptedException e) {} // impose par sleep
}
private String texte ;
private int nb ;
private long attente ;
}
Un test Trois Deux
Un Trois Deux Un
Trois Deux

On voit que le programme comprend 5 Threads; les 4 définis et le main();

6.3.Exemple avec « implement Runnable »


public class TestThreadDeux
// Ce programme teste les
{ public static void main (String args[])
// On définit d'abord des objets de type Ecrit
{ Ecrit ecrit1 = new Ecrit ("Môt ", 10, 5) ;
Ecrit ecrit2 = new Ecrit ("Hai ", 12, 10) ;
Ecrit ecrit3 = new Ecrit ("Ba ", 12, 10) ;
Ecrit ecrit4 = new Ecrit ("\n", 5, 15) ;

// On définit ensuite des objets de type Thread


Thread t1 = new Thread (ecrit1) ;
Thread t2 = new Thread (ecrit2) ;
Thread t3 = new Thread (ecrit3) ;
Thread t4 = new Thread (ecrit4) ;
t1.start() ;
t2.start() ;
t3.start() ;
t4.start() ;
}
}
class Ecrit implements Runnable
// La classe Ecrit comprend 2 méthodes

Programmer en java page 11/13


{ public Ecrit (String texte, int nb, long attente)
// la méthode Ecrit est un constructeur
{ this.texte = texte ;
this.nb = nb ;
this.attente = attente ;
}
public void run ()
// La méthode run définit l'exécution des threads
{ try
{ for (int i=0 ; i<nb ; i++)
{ System.out.print (texte) ;
Thread.sleep (attente) ; // attention Thread.sleep
}
}
catch (InterruptedException e) {} // impose par sleep
}
private String texte ;
private int nb ;
private long attente ;
}

Ba Môt
Hai Môt Ba Hai Môt
Môt Hai Ba Môt Môt
Ba Hai Môt Môt Ba Hai Môt
Môt Hai Ba
Hai Ba Hai Ba Ba Hai Ba Hai Ba Hai Ba Hai

Programmer en java page 12/13


Annexe : références

UKO (.be)
http://www.ukonline.be/programmation/java/

Didacticiel (J. M. Doudoux)


http://www.jmdoudoux.fr/accueil_java.htm

Programmer en java page 13/13