Programmer en java

publicité
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

Programmer en java
Float : 4 bytes, 7 chiffres significatifs, e-44 à e37
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 ;
private int y ;
// abscisse
// 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
Môt Hai Ba
Ba Hai Môt
Môt Hai Ba
Hai Ba Hai
Hai Môt
Môt Môt
Môt Ba Hai Môt
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
Téléchargement