Escolar Documentos
Profissional Documentos
Cultura Documentos
en Java
M. L. BALDE
1re Anne IPSL
GENERALITES
C++ / Java
C++ : langage compil
la compilation du source permet dobtenir des instructions
natives excutables.
le code excutable obtenu est trs performant
Java : langage interprt qui utilise une machine virtuelle
Machine virtuelle : simulation dun ordinateur rel
La compilation dun source Java permet dobtenir un
code excutable, le bytecode, par la machine virtuelle Java.
La machine virtuelle Java est capable de comprendre les
instructions contenues dans le bytecode et de les excuter
effectivement dans lenvironnement rel courant.
Code
Java
.java
Compilateur
Java pour
PowerPC
Compilateur
Java pour
Sun Solaris
Interprteur
Java pour PC
Pseudocode Java
indpendant
de la plateforme
.class
Interprteur
Java pour
PowerPC
Interprteur
Java pour
Sun Solaris
Application Java
Application
JVM
+
Fichiers
.class
SYNTAXE DE BASE
une
majuscule
Etudiant,
byte
short
int
long
float
double
char
(8 bits)
(16 bits)
(32 bits)
(64 bits)
(32 bits)
(64 bits)
(16 bits)
Syntaxe:
if (condition)
{
instruction1
}
else
{
instruction2
}
Exemple:
If ( x > 0)
{
System.out.println(positif );
x-- ;
}
else
System.out.print(ngatif );
Syntaxe:
Syntaxe:
while (condition)
{
instructions
}
do
{
instructions
}
while (condition);
Exemple:
int i = 10 ;
while ( i>0)
{
System.out.println(i);
i-- ;
Syntaxe:
switch (expression)
{
case valeur1:
instructions; break;
case valeur2:
instructions; break;
...
default: instructions
}
Exemple:
switch (i) {
case 10 : System.out.println(x
gale 10 ) ; break ;
case 100 : System.out.println(x
gale 100 ) ; break ;
default : System.out.println(x est
diffrent de 10 et de 100 ) ;
}
CLASSES ET OBJETS
EN JAVA
Constructeurs spcifiques
public class Fraction {
public int num, den ;
public Fraction (int n, int d) { this.num=n; this.den=d;}
public Fraction (int n) { this.num=n; this.den=1;}
La mthode main(1)
Premier sous-programme excut au lancement dune
application Java.
Signature:
}
Le paramtre est un tableau de chanes utilis pour les
La mthode main(2)
Exemple avec arguments:
public class Somme
{
public static void main(String[] args)
{
int x = Integer.parseInt(args[0]);
int y = Integer.parseInt(args[1]);
System.out.println(la somme de +x+ et +y+ est:
+(x+y));
}
}
Utilisation:
java Somme 12 14
==> la somme de 12 et 14 est: 26
Entres/Sorties simplifies
La mthode printf
La classe java.io.PrintStream contient une mthode printf qui
fonctionne presque de la mme faon quen C.
Exemple :
int degre = 28;
System.out.printf("Il fait %d degres\n", degre);
// %d indicateur de format pour des entiers
System.out.printf("Le %2$s %1$s", "Java", "langage");
// le 2$ du %2$s indique quil sagit decrire le 2nd paramtre de
// susbstitution en premier sur cet exemple,
// le s indique quil sagit dune chane de caractres.
La classe java.util.Scanner
La classe Scanner permet de lire un flux de donnes formates.
Exemple
public static void main(String arg[]){
Scanner entree = new Scanner(System.in);
System.out.println("Donner votre prenom et votre nom:");
String prenom = entree.next(); String nom = entree.next();
System.out.println("Donner votre age:");
int age = entree.nextInt();
entree.nextLine();
System.out.println("Donner une phrase:");
String phrase = entree.nextLine();
System.out.printf("%s %s, %d ans, dit
%s\n", prenom, nom, age, phrase);
}
La classe java.util.Scanner
Offre des mthodes pour lire un flux de donnes formates :
int nextInt() : lecture de la prochaine valeur de type int.
long nextLong() : lecture de la prochaine valeur de type long.
float nextFloat() : lecture de la prochaine valeur de type float.
double nextDouble() : lecture de la prochaine valeur de type
double.
String nextLine() : lecture de tous les caractres se prsentant
dans le flux dentre jusqu une marque de fin de ligne et renvoi
de la chane ainsi construite. La marque de fin de ligne est
consomme, mais nest pas incorpore la chane produite.
La classe Scanner
Offre aussi toute une srie de mthodes boolennes pour
tester le type de la prochaine donne disponible, sans lire cette
dernire :
boolean hasNext() : Y a-t-il une donne disponible pour la lecture
boolean hasNextLine() : Y a-t-il une ligne disponible pour la lecture
boolean hasNextInt() : La prochaine donne lire est-elle de type int
boolean hasNextLong() : La prochaine donne lire est-elle de type
long
boolean hasNextFloat() : La prochaine donne ` lire est-elle de type
float
boolean hasNextDouble() : La prochaine donnee `a lire est-elle de
type double
Les
Visiblit : exemple
public class Etudiant {
public String nom;
private String numIns;
public Etudiant(String nom) {
this.nom = nom;
}
// methodes accesseurs
}
}
Rfrences et objets
Un objet doit tre considr comme accessible par rfrence.
L'identificateur d'un objet dsigne une rfrence l'objet et
non l'objet lui-mme.
Ce sont ces rfrences qui sont affectes ou passes comme
arguments lors des appels de mthodes.
Exemple:
Fraction f1, f2;
f1 = new Fraction();
f2 = f1;
f1 et f2 sont des variables qui se rfrent au mme objet.
Cet objet existe en un seul exemplaire mais avec deux
rfrences.
Attributs de classe
Ils sont initialiss au moment du chargement de la classe.
Ils sont modifiables par tous les objets de la classe.
Toute modification est rpercute au niveau des autres
objets.
Ils permettent dviter la duplication de certains types
dattributs (comme les constantes) dans chaque instance.
Exemple
Lattribut out est un attribut de la classe java.lang.System
System.out.println( Salut! );
TypeDesElements[ ] NomDuTableau;
TypeDesElements NomDuTableau[ ];
Exemple :
int[ ] tab_entiers; ou int tab_entiers[ ];
String[ ] tab_chaines;
Le type des lments du tableau peut tre une classe
existante.
TypeDesElements[ ][ ] NomDuTableau;
TypeDesElements NomDuTableau[ ][ ];
Exemple
int [ ][ ] matrice
ou int matrice [ ][ ];
Exemples :
public enum PointCardinal { NORD, SUD, EST, OUEST }
public enum JourSemaine { LUNDI, MARDI, MERCREDI, JEUDI,
La classe java.lang.Enum
En fait, tout type numr est sous-classe de la classe
java.lang.Enum.
default:
...
}
n = n + 5;
String s = n.toString();
System.out.println(s);
if (n == 10)
if (n.intValue() == 10)
Exemple 1:
// somme des elements dun tableau
double[ ] t = {3.2, 5.3, 6.2};
double som = 0;
for (double d : t)
som += d;
// d va prendre successivement les valeurs contenues dans le
tableau
PACKAGES
EXCEPTIONS
finally {
reponse = JOptionPane.showConfirmDialog(null, "Voulezvous quitter ?");
}
while (reponse == JOptionPane.NO_OPTION);
}
// methode factorielle
public static long factorielle(long n){
if (n <= 1)
return 1;
return n * factorielle(n-1);
}
HERITAGE
Lhritage
Lhritage permet de dfinir une nouvelle classe partir
EtudiantBoursier
+bourse : double
La pseudo-variable super
En faisant hriter une classe dune autre, on peut
dfinir une mthode dont lidentificateur est le mme
que celui de sa classe mre.
masquage de la mthode de la classe mre.
La pseudo-variable super permet daccder la
mthode masque de la classe mre.
Pice
-surface : int
-locataire : String
+saSurface()
+sonLocataire()
La classe Object
Toutes les classes hritent de la classe Object qui contient certaines
proprits et mthodes intressantes permettant, par exemple :
Connatre la classe dun objet : getClass()
Comparer des objets : equals()
Afficher des objets : toString()
Exemple :
public class Fraction {
public int num, den ;
public Fraction (int n, int d) { this.num=n; this.den=d;}
public String toString() {
return this.num + / + this.den;
}
}
class Compte {
private String id;
private float solde;
c = compte2;
s += "\n solde du compte n " + c.getId() + ":" + c.getSolde();
javax.swing.JOptionPane.showMessageDialog(null,s);
}
COLLECTIONS
Les indices pour accder aux lments dun tableau doivent tre
entiers.
Collections Java
La package java.util fournit un ensemble dinterfaces et de
Collection et Map.
Collection
Set
SortedSet
Map
List
SortedMap
HashSet
Interfaces List
Map
Tableau
(Vecteur)
Arbre
TreeSet
ArrayList
HashMap
Liste
chane
LinkedList
TreeMap
ensemble ordonn.
de leur cl daccs.
Exemple :
import java.util.*;
public class test_iterateur {
public static void main (String[] args) {
Set ufrs = new TreeSet();
ufrs.add(sat); ufrs.add(seg); ufrs.add(sjp);
// iterer
Iterator iter = ufrs.iterator();
while (iter.hasNext()) {
String ufr = (String) iter.next();
System.out.println(ufr);
}
}
}
Gnricit
Classes gnriques
On peut dfinir et utiliser des classes et des mthodes
gnriques.
Classes gnriques
Principal
intrt :
permettre au compilateur deffectuer des contrles de type
plus nombreux et plus fins.
Gnricit et collections
Prsente encore plus dintrt avec lutilisation des
collections.
Vector<E>,
Iterator<E>,
etc.
Exemple 1:
Gnricit et collections
Exemple 2 :
Gnricit et collections
Mthodes gnriques
Les mthodes peuvent elles aussi dpendre dune liste de types
paramtres.
qualifieurs <types-param> type-du-rsultat nom-mthode (args)
Exemple 1:
import java.util.*;
public class MethodesGeneriques{
static <A> void ecrire(A a){
System.out.println(a);
}
}
Mthodes gnriques
Mthodes gnriques
Exemple 2:
static <T> void echangerGenerique(CoupleGen<T> c){
T tmp;
tmp = c.elt1;
c.elt1 = c.elt2;
c.elt2 = tmp;
}
public static void main(String args[]){
CoupleGen<String> mots =
new CoupleGen<String>("club","info");
echangerGenerique(mots);
ecrire(mots);
}
Mthodes gnriques
class CoupleGen<A>{
A elt1, elt2;
CoupleGen(A elt1, A elt2){
this.elt1 = elt1;
this.elt2 = elt2;
}
Exemple 1 :
public class MultiArgs {
static void ecrireLesMots (String ... mots){
for (String mot : mots)
System.out.print(mot + " ");
System.out.println();
}
public static void main(String arg[]){
ecrireLesMots("UGB UFR SAT");
ecrireLesMots("M2ITIC INFO );
}
}
Importation de membres
statiques
Exemple :
import static java.lang.System.out;
import static java.lang.Math.random;
public class TestImportStatic {
public static void main(String arg[]){
out.println("voici un nb aleatoire :"+random());
}
}
INTERFACES
GRAPHIQUES
avancs :
JTabbedPane (onglets),
JTree (arbres), etc.
TextField
Container
Panel
Window
Dialog
FileDialog
Comp. Swing
Frame
Applet
classe java.awt.Container
Espaces graphiques destins recevoir plusieurs
composants (boutons, zones de texte, autres conteneurs ) :
Frame,
Panel,
Dialog,
Applet
Sous-classes de Window :
java.awt.Dialog (botes de dialogue)
java.awt.Frame (cadres)
import java.awt.*;
public class Fenetre extends Frame {
public Panel p; public TextField texte;
public Button bouton1, bouton2;
public Fenetre() {
super(exemple de fenetre);
p = new Panel(); this.add(p);
p.add( new Label(nbre a multplier par 2) );
p.add( texte = new TextField(20) );
p.add( bouton1 = new Button(doubler) );
p.add( bouton2 = new Button(fin) );
this.pack();
}
public static void main(String[] args){
Fenetre f = new Fenetre();
f.show();
}
}
(1.2)
couteur
La source notifie
lvnement
Objet Evt
source
Lcouteur senregistre auprs de la
source
void actionPerformed(ActionEvent e)
import java.awt.event.*;
Interfaces graphiques :
Gestonnaires de positionnement
(exemple FlowLayout)
import java.awt.*;
public class TestFlowLayout1 extends Frame
{
public TestFlowLayout1(){
setLayout(new FlowLayout());
for (int i=1; i<=5; i++)
add(new Button("Bouton "+i));
setBounds(100, 100, 250, 150);
setVisible(true);
}
public static void main(String args[]){
new TestFlowLayout1();
}
}
Interfaces graphiques
Interfaces graphiques
Interfaces graphiques
Interfaces graphiques
Interfaces graphiques
fen.setVisible(true);
APPLETS
La classe JApplet
Se trouve dans le package javax.swing
Attributs optionnels
>
On peut passer des arguments une applet en utilisant la balise
HTML PARAM et la mthode getParameter() de Applet.
LA PERSISTANCE
EN JAVA
La persistance en Java
JDBC:
API Java permettant laccs aux SGBDR.
Difficile utiliser.
Srialisation.
Srialisation (1 /2)
Srialisation (2/2)
JDBC
JDBC
Java Database Connectivity
API Java permettant laccs aux SGBDR (MS Access,
java.sql
JDBC : architecture
Application Java
JDBC Driver Manager
JDBC-ODBC
JDBC Driver
JDBC Driver
bridge driver
Pour MySQL
pour Oracle
ODBC driver
MS
Access
SQL
Server
MySQL
Oracle
JDBC : architecture
Application Java
JDBC Driver Manager
JDBC Driver
Pour MySQL
MySQL
JDBC : architecture
un type de SGBD.
JDBC : fonctionnement
JDBC fonctionne comme suit :
donnes)
java.sql.Connection co;
co =
DriverManager.getConnection(jdbc:mysql://localhost
/MABD);
co =
DriverManager.getConnection(jdbc:mysql://localhost
/MABD, admin, passer);
cration de tables.
Statement st = co.createStatement();
ResultSet rs = (ResultSet)st.executeQuery(Select );
ResultSetMetaData
java.sql.PreparedStatement
setAutoCommit, commit,
transactions
close,
executeUpdate
champs de lenregistrement :
getString()
getInt()
getDate()
getObject()
etc.
Exemple : System.out.println(rs.getString(1),
rs.getString(prenom), rs.getDouble(3));
JPA
Services de JPA
des annotations
des descripteurs XML
Architecture de JPA
Couche dAccs aux donnes
Interface JPA
Implmentation JPA
(Toplink/Hibernate)
JDBC
BD
Fournisseur de persistence
Entits
Exemple :
import javax.Persistence.Entity;
@Entity
public class Personne {
public Personne() {}
public Personne(String prenom, String nom) {
this.prenom = prenom;
this.nom = nom;
}
}
Entit - Table
Entit - Table
@Entity
public class Personne {
@Id
private int id;
private String nom;
private String prenom;
// methodes get et set
}
@Table :
@Entity
@Table(name=t_Personne, schema=MaBD)
public class Personne { }
@Column :
@Entity
public class Personne {
@Column(name=t_nom, nullable=false, length=32)
private String nom;
}
Associations
Les 4 relations possibles entre entits sont signales par des
annotations :
Un Un :
Annotation : @OneToOne
Un plusieurs :
Annotation : @OneToMany
Plusieurs Un
Annotation : @ManyToOne
Plusieurs Plusieurs
Annotation : @ManyToMany
Exemple dassociation
@OneToMany(mappedBy=section")
public Collection<Enseignant> getEnseignants() {
return enseignants;
}
public void setEnseignants(Collection<Enseignant>
ens) {
this.enseignants = ens;
}
Client JPA
Entity Manager
Contexte de
persistance
BD
Exemple :
Personne p = new Personne();
p.setNom(Balde);
p.setPrenom(Lamine);
em.persist(p);
Mthode
<T> T find(Class<T> entityClass, Object primaryKey)
Exemple :
public Personne trouverPersonne(int id){
return em.find(Personne.class, id);
}
Exemple :
public void supprimerPersonne(int id) {
Personne p = em.find(Personne.class, id);
if (p != null)
em.remove(p);
}
Exemple :
public Personne modifierPassword (int id, String newPwd){
Personne p = em.find(Personne.class, id);
if (p != null)
p.setPassword(newPwd);
return p;
}
Exemple :
String req = "SELECT p FROM Personne p WHERE
p.Nom = 'Lo'";
Query query = em.createQuery(req);
List resultat = (List)query.getResultList();
Transactions
em.persist(p);
em.getTransaction().commit();