Chap1 - Java
Chap1 - Java
IHM-Java
ARCHITECTURE DE BASE DU JEE
IHM - Java
Plan du cours
Chap1
Initiation au Langage Java
IHM - Java
IHM - Java 5
Caractéristiques de Java
Java est interprété : Interpréteur JVM (Java Virtual Machine)
Java est indépendant de toute plate-forme
Java est orienté objet
Java est simple
Java est fortement typé : Toute variable a son type
Java assure la gestion de la mémoire
Java est économe : Petite taille du pseudocode
Java est multitâche : Threads
IHM - Java 6
12/02/2025
Byte-Code Java
- ou Pseudocode : Code objet destiné à être exécuté sur toute « Machine
Virtuelle » Java
NB: : il suffit de disposer d’une « Machine Virtuelle » Java pour pouvoir exécuter tout
programme Java
IHM - Java 7
- Le JDK (Java Development Kit, SDK) pour la compilation de programmes Java. Il contient
lui même le JRE
IHM - Java 8
12/02/2025
Outils de développement:
Installation du Java SE Development Kit
Le JDK et la documentation sont librement téléchargeable sur le site web de Oracle
https://www.oracle.com/java/technologies/javase-jdk15-downloads.html
IDE(Integrated Development Environment) :
Eclipse:
https://www.eclipse.org/downloads/packages/release/luna/sr1/eclipse-ide-
java-developers
NetBeans…
https://netbeans.org/downloads/8.0.2
IHM - Java 10
12/02/2025
Edition Compilation
IHM - Java 11
IHM - Java 12
12/02/2025
Installation de Eclipse
- L'installation consiste simplement à exécuter le fichier téléchargé.
- Pour le lancement exécuter le fichier eclipse.exe
IHM - Java
13
Cours et exemples :
Programmer en Java (2ème édition)
Auteur : Claude Delannoy, Éditeur : Eyrolles
Java en action
Auteur : Ian F. Darwin, Éditeur : O’Reilly
Exercices en Java
Auteur : Claude Delannoy, Éditeur : Eyrolles
Penser en Java (sur le web)
Auteur : B. Eckel 2ème édition, sur le web.
IHM - Java 14
12/02/2025
La fonction main est exécutée la première lors de l'exécution d'un programme Java.
Elle doit avoir obligatoirement la signature précédente :
public static void main(String args[])
ou
public static void main(String[] arg)
Le nom de l'argument arg peut être quelconque.
IHM - Java 15
Exemple :
System.out.println(" longueur demandée est " + L);
System.out.println(taux[1][1]);
IHM - Java 16
12/02/2025
Premier Programme :
IHM - Java 17
IHM - Java 18
12/02/2025
IHM - Java 19
Ex:
int a; // déclaration de a est de type prédéfini int
float pi = 3.141f; // déclaration et initialisation de pi
MaClasse instance; // déclaration de l'objet instance
instance = new MaClasse();// création de l'objet allocation de mémoire
//pour instance
IHM - Java 20
12/02/2025
- Le premier caractère doit être une lettre, le caractère de soulignement ou le signe dollar
$.
- Un identificateur ne peut pas appartenir à la liste des mots réservé du langage Java ex :
abstract boolean catch class default do
else false final if import implements
instanceof interface long new super extends
IHM - Java 21
Ex:
String S;
final long l = 100000;
S = " " +l; // nombre --> chaîne
final boolean b = false;
S = "" + b;//boolean --> chaîne
int i1 = Integer.parseInt("10");// chaîne --> int
float f1 = Float.parseFloat("100.87"); // chaîne --> float
IHM - Java 22
12/02/2025
IHM - Java 24
12/02/2025
IHM - Java 27
IHM - Java 28
12/02/2025
Un tableau à 2D :
int Tableau[][] = new int[n][p]
ou int [][] Tableau = new int[n][p]
IHM - Java 30
12/02/2025
IHM - Java 31
IHM - Java 32
12/02/2025
- On lui passe en paramètre le flot d’entrée dans lequel on va extraire les données
IHM - Java 33
IHM - Java 34
12/02/2025
IHM - Java 35
IHM - Java 36
12/02/2025
Exercices d’application :
1- Ecrire un programme qui :
demande à l’utilisateur la saisie d’un nombre entier
affiche si ce nombre est pair ou impair
affiche tous ses diviseurs
IHM - Java 37
Exercices d’application :
import java.util.Scanner;
public class myClass {
public static void main(String[] args) {
Scanner S= new Scanner (System.in);
int n;
do{ System.out.println("Donner un nombre entier positif");
n=S.nextInt();
}while(n<=0);
if(n%2!=0)
System.out.println(n+" est impair");
else System.out.println(n+" est pair");
for(int i=1;i<=n;i++)
if(n%i==0)
System.out.println(i+" est diviseur de "+n);
}
}
IHM - Java 38
12/02/2025
Exercices d’application :
import java.util.Scanner;
public class myClass {
public static void main(String[] args) {
Scanner S= new Scanner (System.in);
int n;
do{System.out.println("Donner un nombre entier positif");
n=S.nextInt();
}while(n<=0);
float t[]=new float[n];
for(int i=0;i<n;i++){
System.out.print("t["+i+"]= ");
t[i]=S.nextFloat(); }
float max=t[0];
for(int i=1;i<n;i++)
if(max<t[i]) max=t[i];
System.out.println("max="+max);
}
}
IHM - Java 39
Le concept de classe :
Une classe est une abstraction d’une entité du monde réel, c’est un ensemble de données et
de fonctions regroupées dans une même entité pour former un type d’objets donné.
Dans une classe :
Les données sont appelées attributs ou propriétés .
Les fonctions opérant sur les données sont appelées des méthodes ou comportements.
Pour accéder à une classe il faut en déclarer une instance de classe ou objet.
Instancier une classe consiste à créer un objet sur son modèle.
Entre classe et objet il y a, en quelque sorte, le même rapport qu'entre type et variable
IHM - Java 40
12/02/2025
Le concept de classe :
Nom de la
classe
Personne
prenom : chaine
nom : chaine
age : entier
Attributs
- affiche()
- initialise(chaine, chaine, entier)
Méthodes
IHM - Java 41
Le concept de classe :
Codage de la classe « Personne » en Java
public class Personne{
IHM - Java 43
Les objets :
Admet une valeur propre à lui pour chaque attribut déclaré dans la classe
IHM - Java 45
Nom de l’objet, la
référence ou l’instance Relation d’instanciation :
instanceof
p1
- prenom = "Aaaa"
- nom = "Bbbb"
- age = 30
IHM - Java 46
12/02/2025
IHM - Java 47
attribut1
2. p1=new Personne(); attribut2
…
IHM - Java 48
12/02/2025
Programme de test :
// import Personne;
public class Test1{
public static void main(String arg[]){
Personne p1=new Personne();
p1.initialise ("Aaaa","Bbbb",30);
System.out.print("p1=");
p1.affiche();
}
}
Résultat
p1= Aaaa , Bbbb , 30
IHM - Java 49
Remarques :
IHM - Java 50
12/02/2025
IHM - Java 51
Objet temporaire :
C’est un objet
créé par un constructeur
N’est pas référencé
construit pour les besoins d'évaluation de l'expression puis abandonné.
l'espace mémoire occupé par cet objet sera automatiquement récupéré ultérieurement
Exemple
// import Personne;
public class Test1{
public static void main(String arg[]){
new Personne().affiche();
}
}
IHM - Java 52
12/02/2025
L’objet courant :
Il est désigné par le mot clé this :
this permet aussi de désigner un attribut de l'objet courant dans lequel se trouve la
méthode exécutée :
Exemple :
public void initialise(String P, String N, int age){
this.prenom=P;
this.nom=N;
this.age=age;
}
IHM - Java 54
12/02/2025
IHM - Java 55
IHM - Java 56
12/02/2025
Les données (attributs) doivent être protégés et accessibles pour l’extérieur par des accesseurs
IHM - Java 57
Autres modificateurs :
static : le membre appartient à tous les objets de la classe. Il est inutile d'instancier la
classe pour accéder au membre.
abstract : la classe ne pourra pas être instanciée: ses méthodes ne sont pas implémentées
IHM - Java 58
12/02/2025
IHM - Java 59
IHM - Java 60
12/02/2025
Les méthodes :
Les méthodes sont des fonctions qui implémentent les traitements de la classe.
Syntaxe de déclaration :
modificateurs type_val_retour nom_méthode ( arg1, ... ) {
... // définition des variables locales et du bloc d'instructions
}
Syntaxe d’appel :
Nom_objet.nom_méthode ( par1, ... )
Exemples
int add(int a, int b) { return a + b; }
IHM - Java 61
La surcharge :
Définir plusieurs fois une même méthode avec des arguments différents.
Le compilateur choisi la méthode qui doit être exécutée en fonction des arguments.
Simplifier l'interface des classes vis à vis des autres
Exemple classe Personne
//première définition
public void initialise(String P, String N, int age){
this.prenom=P;
this.nom=N;
this.age=age;
}
//Deuxième définition
public void initialise(String P, String N){
this.prenom=P;
this.nom=N;
}
IHM - Java 62
12/02/2025
Les constructeurs :
Un constructeur est une méthode qui porte le nom de la classe et qui est appelée lors de
la création de l'objet.
Initialiser l'objet
C'est une méthode qui :
peut accepter des arguments
ne rend aucun résultat.
Son prototype n’est précédé d'aucun type (même pas void).
Forme générale :
nom_classe objet;
objet=new nom_classe(arg1,arg2, ... argn);
ou
nom_classe objet =new nom_classe(arg1,arg2, ... argn);
IHM - Java 64
12/02/2025
Les constructeurs :
public class Personne{
private String prenom;
private String nom;
private int age;
// constructeur1 avec parametres
public Personne(String P, String N, int age){
this.prenom=P;
this.nom=N;
this.age=age;
}
// constructeur2 recopie NB :
public Personne(Personne P){ Un constructeur peut être surchargé
this.prenom=P.prenom;
this.nom=P.nom;
this.age=P.age;
}
}
IHM - Java 65
Les constructeurs :
// méthodes
public void initialise(String P, String N, int age){
this.prenom=P;
this.nom=N;
this.age=age;
}
IHM - Java 66
12/02/2025
IHM - Java 67
IHM - Java 68
12/02/2025
IHM - Java 69
Exemple de passage :
public class param2{
private static void changeString(String S){
S="Mardi";
System.out.println(" Dans la methode S="+S);
}
private static void changeInt(int a){
a=21;
System.out.println(" Dans la methode a="+a);
}
public static void main(String[] arg){
String S="Lundi";
changeString(S);
System.out.println(" Dans main S="+S);
int jour=20;
changeInt(jour);
System.out.println(" Dans main jour="+jour);
}
IHM - Java 71
}
Exemple de passage :
public class Test {
private static void modifie1(Personne P){
P.initialise("XXX","YYY",40);
System.out.print("dans methode1 :");
P.affiche();
}
private static void modifie2(Personne P){
P=new Personne("AAA","BBB",30);
System.out.print("dans methode 2 :");P.affiche();
}
public static void main(String arg[]){
Personne p1=new Personne("AAA","BBB",30);
System.out.print("Dans main : "); p1.affiche();
modifie1(p1);
System.out.print("Dans main : "); p1.affiche();
modifie2(p1);
System.out.print("Dans main : ");
p1.affiche();
}
} - Java
IHM 72
12/02/2025
IHM - Java 73
// accesseurs = getters
public String getPrenom(){ return prenom; }
public String getNom(){ return nom;}
public int getAge(){ return age;}
//modificateurs = setters
public void setPrenom(String P){ this.prenom=P;}
public void setNom(String N){ this.nom=N; }
public void setAge(int age){ this.age=age; }
}
IHM - Java 74
12/02/2025
IHM - Java 75
IHM - Java 76
12/02/2025
Exemple (static):
public class test1{
public static long getNbPersonnes(){
return nbPersonnes;
}
IHM - Java 78
12/02/2025
Intérêts
Spécialisation, enrichissement : une nouvelle classe réutilise les attributs et les opérations
d’une classe en y ajoutant des attributs et/ou des opérations particulières à la nouvelle
classe
Redéfinition : une nouvelle classe redéfinit les attributs et opérations d’une classe de
manière à en changer le sens et/ou le comportement pour le cas particulier défini par la
nouvelle classe
Réutilisation : évite de réécrire du code existant et parfois on ne possède pas les sources
de la classe à hériter
IHM - Java 79
L’ Héritage en Java :
Utilisation du mot-clé extends après le nom de la classe
Une classe ne peut hériter que d’une seule autre classe
Exemple :
class Enseignant extends Personne{
…}
N.B. : Dans certains autres langages (ex : C++) : possibilité d’héritage multiple
IHM - Java 80
12/02/2025
L’ Héritage en Java :
Personne
Abstraction
Raffinement
Super-classe
Enseignant
Sous-classe
L’héritage permet
de généraliser dans le sens abstraction
de spécialiser dans le sens raffinement
IHM - Java 82
12/02/2025
L’ Héritage en Java :
Remarques
IHM - Java 83
Surcharge et redéfinition :
Surcharge : possibilité de définir des méthodes possédant le même nom mais dont les
arguments différents.
Redéfinition : lorsque la sous-classe redéfinit une méthode de la classe mère dont le
nom, les paramètres et le type de retour sont identiques
IHM - Java 84
12/02/2025
IHM - Java 85
En général :
si O est un objet et M une méthode
pour exécuter la méthode O.M, le système cherche une méthode M dans l'ordre suivant :
dans la classe de l'objet O
dans sa classe mère s'il en a une
dans la classe mère de sa classe mère si elle existe
etc…
L'héritage permet donc de redéfinir dans la classe fille des méthodes de même nom dans
la classe mère
Adapter la classe fille à ses propres besoins.
IHM - Java 86
12/02/2025
Exemple à tester:
Un système de gestion d’une clinique conserve les informations suivantes concernant les
médecins, les patients et leur historique de traitement.
•Chaque médecin est caractérisé par un identifiant, un nom, un prénom, une adresse
(qui est composée du nom de la rue, du numéro dans la rue, du code postal et de la
ville), sa spécialité et une liste de patients en attente.
•Un patient est caractérisé par un identifiant, un nom, un prénom, une adresse, ainsi
qu’un numéro de sécurité sociale.
•La clinique utilise un système de codification des maladies. Une maladie est
caractérisée par un code, un nom scientifique et une appellation commune.
•On désire conserver un historique des soins effectués au sein de la clinique. Ainsi,
pour chaque hospitalisation, on enregistre la date de début et de fin, l’identifiant du
patient et du médecin le traitant, ainsi que la maladie pour laquelle le patient a été
soigné.
IHM - Java 87
Plus généralement, à une référence d’un type donné, soit A, il est possible d’affecter une
valeur qui correspond à une référence vers un objet dont le type effectif est n’importe
quelle sous classe directe ou indirecte de A
IHM - Java 88
12/02/2025
Exemple 1:
public class Test {
public static void main (String[] argv) {
P1.setSec(8);//ERROR
System.out.println(P1.identite());//OK
}
}
IHM - Java 89
Exemple 2:
public class test1{
public static void main(String arg[]){
Enseignant e= new Enseignant("ALAOUI","Mohammed",56,11);
affiche(e);
IHM - Java 90
12/02/2025
Procédure :
Il cherche une méthode toString() dans la hiérarchie des classes menant à la classe
Enseignant en commençant par la dernière :
1. dans la classe Enseignant, il ne trouve pas de méthode toString()
2. dans la classe mère Personne, il ne trouve pas de méthode toString()
3. dans la classe mère Object, il trouve la méthode toString() et l'exécute
IHM - Java 91
Remarque :
On peut redéfinir la méthode toString de la classe mère Object pour les classes Personne et
Enseignant.
paquetages (packages) :
- Le langage Java propose une définition très claire du mécanisme d’empaquetage qui
permet de classer et de gérer les API externes
- Les API sont constituées :
API
Paquetages
Interfaces Classes
Attributs Méthodes
IHM - Java 93
paquetages (packages) :
IHM - Java 94
12/02/2025
- Lorsque, dans un programme, il y a une référence à une classe, le compilateur la recherche dans le
paquetage par défaut (java.lang)
- Pour les autres, il est nécessaire de fournir explicitement l’information pour savoir où se trouve la
classe :
Utilisation d’import Nom du paquetage avec le nom de la classe
Exemples:
import mesclasses.Point;
import java.lang.String; // Ne sert à rien puisque par défaut
import java.io.ObjectOutput;
import mesclasses.*;
import java.lang.*; // Ne sert à rien puisque par défaut
import java.io.*;
Exemple :
package mesclasses;
C1.java
C2.java
I1.java
IHM - Java 96
12/02/2025
A une hiérarchie de paquetage correspond une hiérarchie de répertoires dont les noms
coïncident avec les composants des noms de paquetage
Exemple : la classe String
java
String.java
IHM - Java 97
IHM - Java 98
12/02/2025
Classes internes :
IHM - Java 99
NB :
Pour créer une méthode abstraite, on déclare sa signature (nom et paramètres) sans
spécifier le corps et en ajoutant le mot-clé abstract
import java.math.*;
public class Cercle extends Forme { public class Rectangle extends Forme {
… …
public float aire(int x, int y){ public float aire(int l, int h){
return (float)Math.PI*x*y; return l*h;
} }
…} …}
Programme de test :
Interfaces :
Une interface est un modèle pour une classe
Quand toutes les méthodes d’une classe sont abstraites et il n’y a aucun attribut on
aboutit à la notion d’interface
Elle définit la signature des méthodes qui doivent être implémentées dans les classes qui
respectent ce modèle (Ce contrat)
Toute classe qui implémente l’interface doit implémenter toutes les méthodes définies
par l’interface
Tout objet instance d’une classe qui implémente l’interface peut être déclaré comme étant
du type de cette interface
Les interfaces pourront se dériver
La définition d’une interface se présente comme celle d’une classe. On y utilise simplement
le mot clé interface à la place de class
public interface NomInterface {
...}
Lorsqu’on définit une classe, on peut préciser qu’elle implémente une ou plusieurs
interfaces donnée(s) en utilisant une fois le mot clé implements
public class NomClasses implements Interface1, Interface2, ... {
...}
Si une classe hérite d’une autre classe elle peut également implémenter une ou plusieurs
interfaces
public class NomClasses extends SuperClasse implements Interface1, ...
{
//une interface I1
public interface I1{
int ajouter(int i,int j);
int soustraire(int i,int j);
}
Tout objet instance d’une classe qui implémente l’interface peut être déclaré comme étant
du type de cette interface
Exemple :
Exercice :
Dans cet exercice, on manipule des formes géométriques que l'on dénit par l'interface
suivante:
interface FormeGeometrique {
double perimetre();
double surface();
}
Écrire par les classes Cercle, Triangle, Rectangle, Carre.
Un polygone est la forme définie par une ligne brisée
• qui ne se coupe pas elle-même ;
• qui commence et termine au même point.
Quel sera le type de Polygone ? Quelle sera sa relation avec les classes précédentes ?
Exceptions :
Définition
Une exception est un signal qui indique que quelque chose d’exceptionnel (comme une
erreur) s’est produite. Elle interrompe le flot d’exécution normal du programme
A quoi sert la gestion des exceptions?
- Gérer les erreurs est indispensable : Mauvaise gestion peut avoir des conséquences
graves
- Mécanisme simple et lisible : Regroupement du code réservé au traitement des erreurs
Exceptions :
Mécanisme de traitement:
En java, on peut classer les erreurs en deux catégories :
Les erreurs surveillées
Le programmeur est obligé de les traiter
Les erreurs non surveillés
Considérées trop graves pour que leur traitement soit prévu à priori
Lorsqu’une erreur est rencontrée, l’interpréteur :
Crée immédiatement un objet instance d’une classe particulière et sous classe de la
classe Exception
Cherche le code susceptible de la traiter avec le bloc try catch
Les exceptions sont des objets, nous pouvons donc étendre les classes d’exceptions
Exception
- message : String
+ Exception()
+ Exception(String) Constructeur avec ou sans
+ getMessage() : String argument
+ printStackTrace()
+ …
122
IHM - Java
12/02/2025
123
IHM - Java
124
IHM - Java
12/02/2025
Exercice
Soit l’interface suivante :
125