Académique Documents
Professionnel Documents
Culture Documents
Java SE 8 (1Z0-803)
» 5
Références Médias graphiques
Ouvrages :
Claude Delannoy : programmer en java, Eyrolles 2012
H. Bersini, La programmation orientée objet, Cours et exercices en
UML 2, avec Java, C# 2, C++, Python, PHP 5 et LINQ, Eyrolles 2008
C.Delannoy, S'initier à la programmation : Avec des exemples en C,
C++, C#, Java et PHP, Eyrolles, 2008
C.S. Horstmann, G. Cornell, au cœur de Java 2, Campus Press 2005.
G.Clavel, et al., Java, La synthèse, Dunod 2003.
Sites Web :
Site officiel Java français : http://www.java.com/fr/:
The Java Tutorial from Sun : http://java.sun.com/docs/books/tutorial/
The Java Developer Connection :
http://developer.java.sun.com/developer/index.html
Introduction à Java
I. Introduction et historique
Survol du chapitre
MyProgram.c
MyProgram.o
010110…
Déploiement d’un programme (2/2)
Changement de la vision traditionnelle de la compilation
Chaque programme est compilé et interprété
« Write once run everywhere »
MyProgram.java
MyProgram.class
010110…
Langage interprété
Cas de Java
Avant exécution Exécution
Fichier
Byte code Machine virtuelle
de code Compilation
Java (JVM)
Java
javac MaClasse.class java
MaClasse.java
16
Java, Atouts
Java a su faire une synthèse efficace de bonnes idées
issues de sources d'inspiration variées :
Smalltalk, C++, Ada, etc.
Connectivité aux bases de données
JDBC: Java DataBase Connectivity
Offre des facilités de connexions à la plupart des BD du
marché (MYSQL, Oracle, SQLServer, Informix , ODBC etc..)
Support des caractères internationaux
Java utilise le jeu de caractères UNICODE
JVM adapte automatiquement les paramètres régionaux en
fonction de ceux de la machine sur laquelle elle tourne
Support intégré d’Internet
La Class URL
Communication réseaux TCP et UDP
RMI, CORBA, Servlets, JSP
17
Java, Atouts (2)
Considération basique
Exécution ralentie à cause de l’interpréteur ?
Plusieurs processus peuvent être exécutés en même
temps
Comparable au multitâche d’un OS
Le temps du CPU est divisé (sliced)
Toutes les bibliothèques Java
20
L’API de Java (2)
22
L’API de Java (4)
Pour chaque classe, il y a une page HTML
contenant :
la hiérarchie d'héritage de la classe,
une description de la classe et son but général,
la liste des attributs de la classe (locaux et hérités),
la liste des constructeurs de la classe (locaux et
hérités),
la liste des méthodes de la classe (locaux et hérités),
puis, chacune de ces trois dernières listes, avec la
description détaillée de chaque élément.
23
L’API de Java (5)
Où trouver les informations sur les classes de
l’API
sous le répertoire jdk1.x/docs/api dans le JDK
les documentations de l’API se téléchargent et
s’installent (en général) dans le répertoire dans
lequel on installe java.
Par exemple si vous avez installer Java dans le
répertoire D:/Apps/jdk1.4/, vous décompresser le
fichier zip contenant les documentations dans ce
répertoire.
Les docs de l’API se trouveront alors sous :
D:/Apps/jdk1.4/docs/api/index.html
Sur le site de Sun, on peut la retrouver à
http://java.sun.com/docs/index.html
24
L’API de Java (6)
25
Outil de développement : le JDK
Environnement de développement fourni par
Sun
JDK signifie Java Development Kit (Kit de
développement Java).
Il contient :
les classes de base de l'API java (plusieurs centaines),
la documentation au format HTML
le compilateur : javac
la JVM (machine virtuelle) : java
le visualiseur d'applets : appletviewer
le générateur de documentation : javadoc
etc.
26
Java comme Plateforme
Java Virtual Machine (JVM) (1/2)
« An imaginery machine that is implemented by emulating
it in software on a real machine. Code for the JVM is
stored in .class files, each of which contains code for at
most one public class »
Définit les spécifications hardware de la plateforme
Lit le bytecode compilé (indépendant de la plateforme)
Implémentée en software ou hardware
Implémentée dans des environnements de
développement ou dans les navigateurs Web
Java comme Plateforme
Java Virtual Machine (2/2)
La JVM définit :
Les instructions de la CPU
Les différents registres
Le format des fichiers .class
Le tas (« Heap ») des objets « garbage-collectés »
L’espace mémoire
Java comme Plateforme
Java Runtime Environment (JRE)
Trois tâches principales :
Charger le code (class loader)
Vérifier le code (bytecode verifier)
Exécuter le code (runtime interpreter)
Définition
On peut qualifier un objet de la façon suivante: « un
objet est quelque chose de réel ou d'abstrait, de
tangible ou d'intangible, à propos duquel on
emmagasine des données et les méthodes permettant
de les manipuler».©
• La structure d’un objet est composée de 2
catégories de champs :
Les Attributs
Les Méthodes
Réf: [Objet2000] ©: Bouzeghoub M., Gardarin G., Valduriez P., Les objets,
Eyrolles, 2000
Concept Objet
Périmètre() : double
Méthodes
Surface() : double
Move (dx, dy) : void
Objet 1 : R = 2.1
Cercle C1 Instance 2 c‐x= 35
Instance 1
R = 1.75 c‐y = 8
c‐x=
c 10, c‐y=
y= 8
Surface() Périmètre()
Move() Méthodes
r :double +
c-x :int
c-y :int
Attributs
Application HelloWorld
Créer un fichier texte : HelloWorld.java
Règle de bonne pratique : 1 classe par fichier et 1 fichier par classe
Application HelloWorld
Le mot-clé static précise que la méthode main() n’est pas liée
à une instance (objet) particulière de la classe : c’est la
fonction principale
Le paramètre « String[] args » qui est obligatoire permet de
récupérer des arguments transmis au programme au moment
de son lancement.
Le mot-clé public dans public class HelloWorld sert à définir
les droits d’accès des autres classes.
Le mot-clé public dans public static void main est obligatoire
pour permettre à la machine virtuelle d’accéder à la méthode
main.
System.out.println correspond à une méthode d’affichage
dans la fenêtre console, associée à l’objet System.out
Etapes d’exécution d’un programme Java EX 2.1
Les textes entre « /** » et « */ » sont utilisés pour créer des commentaires que
l’exécutable JAVADOC pourra traiter afin de produire une documentation (cf.
documentation de l’API Java)
/** Commentaires destinés
à la documentation */
Identificateurs
Référence: Adresse
Types primitifs et types de référence
Types de données primitifs (1/4)
Integral Floating
Textual Logical
Déclaration et initialisation :
int int x=12;
short short x= 32; (short x=33000; // Hors limite)
long long x= 200L; // Nombre accolé à un L
byte byte x=012; // Nombre commençant avec un 0
double double x=23.2323;
float float x= 23.233F; // Nombre accolé à un F
char char c=‘a’; char c=‘\u0061’; char c=(char)97;
boolean boolean b=true;
Types primitifs et types de référence
Types de données primitifs (3/4)
Déclaration, Initialisation et Assignation des types primitifs
int a = 5;
Déclaration et initialisation de 2 entiers: a et b
int b = 8;
Référence: Adresse N°
Rue
localité
ville
Application (TD / Labo)
Ibn Rochd
Ibn Sina
La classe String
JAVA offre dans sa librairie (API) java.lang une classe appropriée
aux chaînes de caractères nommée String (non pas un type
primitif), très riche en fonctionnalités.
Déclaration de deux String: String s1, s2;
Initialisation :
s1 = "Hello";
s2 = "le monde";
Déclaration et initialisation : String s3 = "Hello";
Concaténation : String s4 = s1 + " " + s2;
boolean chaine1.equals(String chaine2) : comparaison sémantique des
deux chaînes
String ch1.concat(String ch2) : concaténation de 2 chaînes dans ch1
int ch.length() : retourne la longueur de la chaîne ch .
La classe String (Exemple)
class TestString {
public static void main(String args[]){
String ch1,ch2;
ch1="programmation";
ch2=ch1;
System.out.println("ch1:" + ch1); //programmation
System.out.println("ch2 :" + ch2); // affiche programmation
ch1+="en java";
System.out.println("ch1:" + ch1); //programmation en java
System.out.println("ch2 :" + ch2); //programmation
String s1 = "bonjour";
String s2 = new String("bonjour");
System.out.println(s1.equals(s2)); //retourne la valeur true
}
}
Arithmétique et opérateurs
Arithmétique élémentaire
Quelle est la valeur de : 5+3*4+(12/4+1) (21 )
Règles de précédences sur les opérateurs:
Opérateurs logiques:
Opérateur Usage Renvoie TRUE si
&& expr1 && expr2 expr1 et expr2 sont vraies
& expr1 & expr2 Idem mais évalue toujours les 2 expressions
|| expr1 || expr2 Expr1 ou expr2, ou les deux sont vraies
| expr1 | expr2 idem mais évalue toujours les 2 expressions
! ! expr1 expr1 est fausse
!= expr1 != expr2 si expr1 est différent de expr2
Arithmétique et opérateurs
Opérateurs d’assignation (d’affectation)
L’opérateur de base est ‘=‘
Il existe des opérateurs d’assignation qui réalisent à la fois
une opération arithmétique, logique, ou bit à bit
et l’assignation proprement dite
Exemple ;
int i, j ;
short s = 2 ;
float f = 1.5f ;
i = (int) f ; /* conversion explicite obligatoire avec perte
(on s’intéresse qu’à la partie entière du réel f*/
i=s; // conversion implicite
f = i/2 ; /* conversion implicite par opération arithmétique*/
Opérateur de casting : Application
public class RegConv{
public static void main (String args[]){
float x ; double y ; int n ; short p ;
y = 1e-300 ;
x = (float) y ; System.out.println ("double-float : " + y + " --> " + x) ;
y = -1e-300 ;
x = (float) y ; System.out.println ("double-float : " + y + " --> " + x) ;
y = 1e+300 ;
x = (float) y ; System.out.println ("double-float : " + y + " --> " + x) ;
x = 123456789.f ;
n = (int) x ; System.out.println ("float-int : " + x + " --> " + n) ;
p = (short) x ; System.out.println ("float-short : " + x + " --> " + p) ;
x = 1.23456789e15f ;
n = (int) x ; System.out.println ("float-int : " + x + " --> " + n) ;
p = (short) x ; System.out.println ("float-short : " + x + " --> " + p) ;
x = 32771.f ;
n = (int) x ; System.out.println ("float-int : " + x + " --> " + n) ;
p = (short) x ; System.out.println ("float-short : " + x + " --> " + p) ;
Opérateur de casting : Solution
n double-float
= (int) x ; System.out.println
: 1.0E-300 --> ("float-int
0.0 : " + x + " --> " + n) ;
pdouble-float
= (short) x ; System.out.println
: -1.0E-300 --> ("float-short
-0.0 : " + x + " --> " + p)
;
double-float : 1.0E300 --> Infinity
xfloat-int
= 1.23456789e15f ;
: 1.23456792E8 --> 123456792
nfloat-short
= (int) x ; System.out.println
: 1.23456792E8 ("float-int : " + x + " --> " + n) ;
--> -13032
pfloat-int
= (short): x1.23456795E15 -->
; System.out.println 2147483647
("float-short : " + x + " --> " + p)
;
float-short : 1.23456795E15 --> -1
xfloat-int
= 32771.f : 32771.0
; --> 32771
nfloat-short : 32771.0 --> -32765
= (int) x ; System.out.println ("float-int : " + x + " --> " + n) ;
p = (short) x ; System.out.println ("float-short : " + x + " --> " + p)
;
}
Opérateur Conditionnel
Exemples :
max = a>b ? a:b;
String response = v1!=v2 ? " correcte " : " incorrecte "
Les Structures de Contrôles
Java est riche en structures de contrôles :
Les Structures conditionnelles
Les Structures Répétitives
Les branchements
Instructions et structures de contrôle
Déclarations, instructions, blocs
Une instruction
Réalise un traitement particulier:
Renvoie éventuellement le résultat du calcul
Est comparable à une phrase du langage naturel
Constitue l’unité d’exécution
Est toujours suivie de « ; »
Instruction d’affectation (d’assignation), instruction de déclaration …
Un bloc
Est une suite d’instructions entre accolades « { » et « } »
Délimite la portée des variables qui y sont déclarées
Une déclaration
Constitue la signature d’un élément (classe, variable ou méthode)
Annonce la définition de cet élément
Est (normalement) toujours suivie d’un bloc d’instructions
Instructions et structures de contrôle
Structures de contrôle
Les structures de contrôles permettent d’arrêter l’exécution linéaire
des instructions (de bas en haut et de gauche à droite)
Elles permettent d’exécuter conditionnellement une instruction, ou de
réaliser une boucle
if (expression)
{
//instructions
}
if (expression)
{
//instructions
}
else
{
//instructions dans les autres cas
}
Instructions et structures de contrôle
Structures de contrôle
IF – imbriqués
Dans le cas de plusieurs if imbriqués on peut se trouver
dans une situation d’ambiguïté sur le else concerne quel
if comme le montre l’exemple suivant :
if (a<=b) if (b<=c) System.out.println ("ordonne") ;
else System.out.println ("non ordonne") ;
Dans ce cas il faut suivre la règle suivante :
Un else se rapporte toujours au dernier if rencontré
auquel un else n’a pas encore été attribué.
Instructions et structures de contrôle
Structures de contrôle
SWITCH – CASE
switch (number)
{
case 1 : instructions; break;
case 2 : instructions; break;
default : instructions;
}
Structure Conditionnelle : Application
Voici un exemple d’utilisation des if imbriqués. Il s’agit d’un
programme de facturation avec remise. Il lit en donnée un simple prix
hors taxes et calcule le prix TTC correspondant (avec un taux de TVA
constant de 18,6%). Il établit ensuite une remise dont le taux dépend
de la valeur ainsi obtenue, à savoir :
• 0 % pour un montant inférieur à 1 000 d,
• 1 % pour un montant supérieur ou égal à 1000 d et inférieur à 2000 d,
• 3 % pour un montant supérieur ou égal à 2000 d et inférieur à 5000 d,
• 5 % pour un montant supérieur ou égal à 5 000 d.
import java.util.Scanner;
/ * cette classe contient la méthode nextDouble() pour la saisie en
mode console d’un réel. nextInt() pour la lecture d’un entier */
Structure Conditionnelle : Application
donnez le prix hors taxes
prix ttc 4864.0
remise 145.92
net a payer 4718.08
donnez le prix hors taxes : 859.45
prix ttc 1045.0912
remise 10.450912
net a payer 1034.640288
Structure Conditionnelle : Application
public class Tva {
public static void main (String[] args)
{ double taux, tva = 21.6 ;
double ht, ttc, net, tauxr, remise ;
System.out.print ("donnez le prix hors taxes : ") ;
sc = new Scanner(System.in);
ht = sc.nextDouble()
ttc = ht * ( 1. + taux_tva/100.) ;
if ( ttc < 1000.) tauxr = 0 ;
else if ( ttc < 2000 ) tauxr = 1. ;
else if ( ttc < 5000 ) tauxr = 3. ;
else tauxr = 5. ;
remise = ttc * tauxr / 100. ;
net = ttc - remise ;
System.out.println ("prix ttc : " + ttc) ;
System.out.println ("remise : " + remise) ;
System.out.println ("net a payer :" + net) ;
} }
Instructions et structures de contrôle
Structures de contrôle
FOR
for (initialisation; condition; mise à jour de valeurs){
// instructions
}
Initialisation: à exécuter lorsque le programme rentre pour la première
fois dans la boucle
Condition : à remplir pour recommencer le bloc d’instructions
Mise à jour: instruction exécutée chaque fois que la boucle est terminée
Exemples:
for (int i=0 ; i<10 ; i++) {
System.out.println("The value of i is : " + i);
}
Instructions et structures de contrôle
Structures de contrôle
WHILE – DO WHILE
while (test logique) {
//instructions
}
Boucle infinie:
while (true) {
//instructions
}
Structures de contrôle : Que Fournit ce programme ?
public class Boucle {
public static void main(String[] args) {
int n, p ;
n=0;
while (n<=5) n++ ; System.out.println ("A : n = " + n) ;
n=p=0;
while (n<=8) n += p++ ;
System.out.println ("B : n = " + n) ;
n=p=0;
while (n<=8) n += ++p ;
System.out.println ("C : n = " + n) ;
n=p=0;
while (p<=5) n += p++ ;
System.out.println ("D : n = " + n) ;
n=p=0;
while (p<=5) n+= ++p ;
System.out.println ("D : n = " + n) ; } }
Structures de contrôle : Que Fournit ce programme ?
Le résultat de l’exécution est :
A:n=6
B : n = 10
C : n = 10
D : n = 15
D : n = 21
Structures de contrôle : Application
Voici maintenant un exemple de programme qui calcule
les racines carrées de 5 valeurs fournies en données. Les
lectures au clavier sont réalisées en utilisant la méthode
sc.nextDouble() de la classe Scanner.
import java.util.Scanner;
public class Racines {
public static void main (String[] args){
final int NFOIS = 5 ;
int i ;
double x, racx ;
Scanner sc ;
x =sc.nextDouble () ;
For (i=0;i<NBFOIS;i++)
if (x < 0.0) System.out.println (x + " ne possede pas de racine carree") ;
else { racx = Math.sqrt(x) …..affichage
Instructions et structures de contrôle
Structures de contrôle
BREAK / CONTINUE
outer:
for (int i=0 ; i<10 ; i++) {
for(int j=20;j>4;j--){
if (i==5) continue; // if i=5, you jump to the beginning of the loop
if (i==7) break outer; // if i=7, you jump outside the loop and continue
System.out.println(«The value of i,j is :»+i+ «,»+j);
}
Exercices
Five D Seven D
EX 3.1
Ecrire un programme qui compte de 1 à 100
Affiche ces nombres à l’écran
Remplace les multiples de 5 par « Five D »
Remplace les multiples de 7 par « Seven D »
Calcul de factorielle
Ecrire un programme qui calcule la factorielle d’un nombre
EX 3.2
Dessiner une Pyramide
*
**
***
Décoder une chaîne de caractère
Compiler et exécuter les programmes créé
Exercices
Moyenne des Etudiants EX 3.3
class BankCompte
package mediatheque
Class CompteCourant
Comprendre les Packages
Package design Example
As program manager you need two sets of classes with unique
functionality that will be used by the same end product. You ask
Developer A to build the first set and Developer B to build the second.
Developer A is to create several geometry-based classes including a
point class, a polygon class, and a plane class.
Developer B is to build classes that will be included for simulation
purposes, including objects such as hot air balloons, helicopters, and
airplanes.
Come delivery time, they both give you a class named Plane.java .
Example :
// Package statement
package oca.coursJava; /* Imports all classes from the
java.io package */
/* Imports class ArrayList from import java.io.*;
the java.util package */ public class MainClass {
import java.util.ArrayList; ………….
}