0% ont trouvé ce document utile (0 vote)
45 vues63 pages

Chap1 - Java

Le document présente un cours sur l'architecture de base du JEE, enseigné par Youness OUBENAALLA, avec un plan détaillé des chapitres abordant le langage Java, les servlets, les JSP, et la connexion à une base de données. Il couvre les caractéristiques de Java, son historique, les outils de développement, ainsi que les types de données, opérateurs, et structures de contrôle. Le cours inclut également des exemples pratiques et des ressources pour approfondir les connaissances en Java.

Transféré par

mohammed.benakkaouayad
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
45 vues63 pages

Chap1 - Java

Le document présente un cours sur l'architecture de base du JEE, enseigné par Youness OUBENAALLA, avec un plan détaillé des chapitres abordant le langage Java, les servlets, les JSP, et la connexion à une base de données. Il couvre les caractéristiques de Java, son historique, les outils de développement, ainsi que les types de données, opérateurs, et structures de contrôle. Le cours inclut également des exemples pratiques et des ressources pour approfondir les connaissances en Java.

Transféré par

mohammed.benakkaouayad
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

12/02/2025

IHM-Java
ARCHITECTURE DE BASE DU JEE

Prof : Youness OUBENAALLA


[email protected]

IHM - Java

Plan du cours

Chap 1 : Initiation au Langage Java Chap 3 : Les Servlets


- Introduction - Les HttpServlet
- Eléments de base du langage - Servlet Package Hierarchy
- Les tableaux de données et chaines de caractères - doGet et doPost
- Les instructions d’écriture et de lecture - Réponse http
- Classes et Objets - Annotations serveur
- Héritage - Exécution d’une servlet
- Packages
- Classes internes et Interfaces
- Les Files
Chap 4 : Les JSP
- Définition d’une JSP (Java Server Page)
- Les exceptions
- Type d’éléments de balise JSP
- Balises usuelles JSP
Chap 2 : Initiation à J2EE et aux applications web - EL : Expression Language
- Architecture client-serveur en http - JSTL
- Composantes d’une Application Web Java J2EE Chap 5 : Connexion à une base de données
- Protocole http
- L’API JDBC et les bases de données
- Commandes GET / POST / HEAD
- Connexion à une base de données relationnelle
- Le patron de conception Modèle-Vue-Contrôleur
- Émission de requêtes SQL vers la base
- Les PreparedStatement
IHM - Java 2
12/02/2025

Chap1
Initiation au Langage Java

IHM - Java

Initiation au Langage Java


(Chapitre 1)

C’est quoi Java ?


 Un langage de programmation à usage général,
 Évolué
 Orienté objet dont la syntaxe est proche du C/C++

Type de programmes Java :

Il existe 2 types de programmes en Java :


 Application : s'exécute localement sous le contrôle direct du système
d'exploitation.
 Applet : chargée par un navigateur et est exécutée sous le contrôle d'un plugin
de ce dernier
IHM - Java 4
12/02/2025

Initiation au Langage Java


(Chapitre 1)

Who is Using Java

IHM - Java 5

Initiation au Langage Java


(Chapitre 1)

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

Initiation au Langage Java


(Chapitre 1)

Principes de fonctionnement de Java :


 Source Java
- Fichier utilisé lors de la phase de programmation
- Le seul fichier réellement intelligible par le programmeur

 Byte-Code Java
- ou Pseudocode : Code objet destiné à être exécuté sur toute « Machine
Virtuelle » Java

 Machine Virtuelle Java


- Programme interprétant le Byte-Code Java et fonctionnant sur un système
d’exploitation

NB: : il suffit de disposer d’une « Machine Virtuelle » Java pour pouvoir exécuter tout
programme Java
IHM - Java 7

Initiation au Langage Java


(Chapitre 1)

- Le JRE (Java Runtime Environment) contient l'environnement d'exécution de programmes


Java : JVM

- Le JDK (Java Development Kit, SDK) pour la compilation de programmes Java. Il contient
lui même le JRE

Trois éditions de Java existent :


 J2ME : Java To Micro Edition  développer des applications dans des
environnements limités : PDA, GSM,…
 J2SE : Java To Standard Edition  développer des applications pour les postes
clients.
 J2EE : Java To Entreprise Edition  développer des applications d’un serveur,
destinées aux entreprises
 Dans ce qui suit on va s’intéresser principalement aux API fournies par Java SE

IHM - Java 8
12/02/2025

Initiation au Langage Java


(Chapitre 1)

Bref historique de Java :


Les principaux événements de la vie de Java sont les suivants :
Année Événements
1995 Premier lancement commercial
1996 JDK 1.0
1997 JDK 1.1
1998 Lancement de J2SE
2000 J2SE 1.3
2002 J2SE 1.4
2004 J2SE 5.0
2006 J2SE1.6  Java SE1.6 ou Java SE6.0
2011 Java SE 7
2014 Java SE 8
2017 Java SE 9
2018 Mars Java SE 10 Septembre Java SE 11
2020 Java SE 15.0.2
2021 Java SE 16 Cette version est sortie le 16 mars 2021
2022 Java SE 17 Cette version est sortie le 14 septembre 2021.
2024 Java SE 23 Cette version est sortie le17 Septembre 2024
IHM - Java 9

Initiation au Langage Java


(Chapitre 1)

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

Initiation au Langage Java


(Chapitre 1)

• La compilation d'un fichier source Java

Edition Compilation

Editeur de monFichier.java monFichier.class


Texte(Eclispe)

Fichier Source le pseudo code Java

Remarque : Le nom du fichier doit correspondre exactement au nom de la classe principale

IHM - Java 11

Initiation au Langage Java


(Chapitre 1)

Exécution d’une application java


 Un programme java est une classe  fonction main()
 Pour exécuter le fichier source précèdent :
1. Depuis le logiciel de développement :
2. Depuis la ligne de commande : Java nomfichier
 Exécution d'une applet :
<HTML>
<TITLE> test applet Java </TITLE>
<BODY>
<APPLET code="NomFichier.class" width=270 height=200> </APPLET>
</BODY>
</HTML>

IHM - Java 12
12/02/2025

Initiation au Langage Java


(Chapitre 1)

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

Initiation au Langage Java


(Chapitre 1)

Des ressources sur Java


Site de Java
https://education.oracle.com/learn/java/

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

Initiation au Langage Java


(Chapitre 1)

La structure d'un programme Java:


public class myClass { Le fichier doit porter
public static void main(String[] args) { le nom de la classe
// TODO Auto-generated method stub publique : myClass
//Votre code ici
} //fin de main
} // fin de la classe test1

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

Initiation au Langage Java


(Chapitre 1)

Les instructions d’écriture :


La syntaxe de l'instruction d'écriture sur l'écran est la suivante
System.out.println(expression) ;
ou bien
System.err.println(expression);
où expression est tout type de donnée qui puisse être converti en chaîne de caractères pour être
affiché à l'écran.

Exemple :
System.out.println(" longueur demandée est " + L);
System.out.println(taux[1][1]);

System.err écriture des messages d’erreurs :


System.err.print("Attention!!!"); Attention!!!

IHM - Java 16
12/02/2025

Initiation au Langage Java


(Chapitre 1)

Premier Programme :

public class maClass {

public static void main(String[] args) {


// TODO Auto-generated method stub
System.out.println("Hello World of Java Developers");
}
}

IHM - Java 17

Initiation au Langage Java


(Chapitre 1)

données, types et operateurs en Java :


Java utilise les types de données suivants :
 les nombres entiers
 les nombres réels
 les caractères et chaînes de caractères
 les booléens
 les objets

IHM - Java 18
12/02/2025

Initiation au Langage Java


(Chapitre 1)

données, types et operateurs en Java :


Type Codage Domaine
boolean 1 bit true, false
byte 1 octet -128 à 127
short 2 octets -32768 à 32767
char 2 octets car. Unicode 0 à 65535
Int 4 octets -2147483648 à 2147483647
float 4 octets [3.4 10-38, 3.4 10+38]
long 8 octets [-2e63, 2e63 -1]
double 8 octets [1.7 10-308,1.7 10+308]

IHM - Java 19

Initiation au Langage Java


(Chapitre 1)

données, types et operateurs en Java :


Déclaration :

- Déclaration des Constantes :


final type nom = valeur; //définit constante nom=valeur
Ex : final float PI = 3.141592F;
- Déclaration des Variables
identificateur_de_type variable1, variable2, ...;

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

Initiation au Langage Java


(Chapitre 1)

données, types et operateurs en Java :


Les Identificateurs :

- Chaque objet, classe, programme ou variable est associé à un nom : l'identificateur

- Le premier caractère doit être une lettre, le caractère de soulignement ou le signe dollar
$.

- Java est sensible à la casse.

- 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

Initiation au Langage Java


(Chapitre 1)

données, types et operateurs en Java :


Les conversions entre nombres et chaînes de caractères :
nombre -> chaîne "" + nombre
chaine -> int Integer.parseInt(chaine)
chaîne -> long Long.parseLong(chaine)
chaîne -> double Double.parseDouble(chaine)
chaîne -> float Float.valueOf(chaine)

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

Initiation au Langage Java


(Chapitre 1)

données, types et operateurs en Java :


Les opérateurs en java et leur priorité :
les parenthèses ( )
les opérateurs d'incrémentation ++ --
les opérateurs de multiplication, division, et modulo * / %
les opérateurs d'addition et soustraction + -
les opérateurs de comparaison < > <= >=
les opérateurs d'égalité == !=
l'opérateur ET logique &&
l'opérateur OU logique ||
les opérateurs d'assignement = += -=
IHM - Java 23

Initiation au Langage Java


(Chapitre 1)

données, types et operateurs en Java :


L’opérateur cast :
- Permet, dans une expression, de changer le codage d'une valeur.
- On appelle cela changement de type d'une donnée ou en anglais type casting.

- Syntaxe : (type) valeur;

- La valeur prend alors le type indiqué. Cela entraîne un changement de codage de la


valeur.
- Exemple :
int i, j;
float f;
f = (float)i/j; // priorité de () sur /

IHM - Java 24
12/02/2025

Initiation au Langage Java


(Chapitre 1)

Les structures alternatives et répétitives


Les structures alternatives :
// Structure de choix simple
if (boolean)
{ ... } else
{ ... }

//Structure de choix multiple


switch (expression)
{ case c1 : instr11; instr12; break;

case cn : ...
default : ...
}
//Opérateur ternaire
( condition ) ? valeur_vrai : valeur_faux ;
IHM - Java 25

Initiation au Langage Java


(Chapitre 1)

Les structures alternatives et répétitives


Les structures répétitives :
- while ( boolean )
{ ...
// code a exécuter dans la boucle
}
- do
{ ... } while ( boolean );

- for ( initialisation; condition; modification)


{ ... }

- for ( double elt:myArray) Ex : double[] myArray = new double[]{7,2,4};


{ ... } for (double t:myArray) {
System.out.println(t);
} 26
IHM - Java
12/02/2025

Initiation au Langage Java


(Chapitre 1)

Les structures alternatives et répétitives


Les débranchements :
 break :
permet de quitter immédiatement une boucle ou un branchement.
 continue :
s'utilise dans une boucle pour passer directement à l'itération suivante

IHM - Java 27

Initiation au Langage Java


(Chapitre 1)

Les tableaux de données et chaines de caractères:


Les tableaux de données :
Un tableau Java est un objet permettant de rassembler sous un même identificateur des
données de même type.

Un tableau à 1D : Type Tableau[] = new Type[n]


ou Type[] Tableau = new Type[n]

n : le nombre de données que peut contenir le tableau.


Tableau[i] : la donnée n° i où i Є [0,n-1].

NB : Toute référence à la donnée Tableau[i] où i n’appartient pas à [0,n-1]


provoquera une exception.

IHM - Java 28
12/02/2025

Initiation au Langage Java


(Chapitre 1)

Les tableaux de données et chaines de caractères:


Les tableaux de données :
Exemple:
public class Tableau {
public static void main(String arg[ ]){
float []t = new float[2];
t[0]=0.24F;
System.out.println("t[0]= " + t[0]);
System.out.println("t[1]= " + t[1]);
System.out.println("t[2]= " +t[2]);
}
}
les résultats de l'exécution :
t[0]= 0.24
t[1]= 0.0
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at test1.main(test1.java:10)
IHM - Java 29

Initiation au Langage Java


(Chapitre 1)

Les tableaux de données et chaines de caractères:


Les tableaux de données :

Un tableau à 2D :
int Tableau[][] = new int[n][p]
ou int [][] Tableau = new int[n][p]

Tableau[i] désigne lui-même un tableau


Tableau[i][j] désigne la donnée n° j de Tableau[i] où j Є [0,p-1].

IHM - Java 30
12/02/2025

Initiation au Langage Java


(Chapitre 1)

Les tableaux de données et chaines de caractères:


Les tableaux de données :
Exemple:
public class myClass {

public static void main(String[] args) {


float [][] taux=new float[2][2];
taux[1][0]=0.24F;
taux[1][1]=0.33F;
System.out.println(" longueur demandée est " + taux[1].length);
System.out.println(taux[1][1]);
}
}
les résultats de l'exécution :
longueur demandée est 2
0.33

IHM - Java 31

Initiation au Langage Java


(Chapitre 1)

Les tableaux de données et chaines de caractères:


Les chaînes de caractères :
Les variables de type String sont des objets.
//Déclaration d’une chaîne : String texte = "bonjour";
//Modification d’une chaîne : String texte = " java".replace('a','o');
//Addition de chaînes : texte += " Programmation ";
//La comparaison de deux chaînes : if (texte1.equals(texte2))
//La détermination de la longueur d'une chaîne : int i = texte.length();
//La modification de la casse d'une chaîne :
String textemaj = texte.toUpperCase(); String textemaj = texte.toLowerCase();
//Convertir une Chaine de caractères en un tableau de caractères:
char[] ch = nom.toCharArray();

IHM - Java 32
12/02/2025

Initiation au Langage Java


(Chapitre 1)

Les instructions de lecture :


Lecture de données tapées au clavier :

- Depuis le JDK 5 la classe Scanner permet de récupérer des données au milieu


d’un flot d’entrée, à l’image de la fonction scanf du langage C

- On crée une instance de Scanner avec un de ses nombreux constructeurs

- On lui passe en paramètre le flot d’entrée dans lequel on va extraire les données

IHM - Java 33

Initiation au Langage Java


(Chapitre 1)

Les instructions de lecture :


Lecture de données tapées au clavier :
Exemple
Importer la classe Scanner :
import java.util.Scanner;
Pour lire l’entrée standard : Créer un objet de type Scanner
Scanner sc = new Scanner(System.in);
On extrait ensuite les données une à une avec une des méthodes nextXXX :
lire un entier :
int j;
System.out.println("Entrez un entier ");
j = sc.nextInt();

IHM - Java 34
12/02/2025

Initiation au Langage Java


(Chapitre 1)

Les instructions de lecture :


Lecture de données tapées au clavier :
next ()  saisir une valeur de type String (sans espace)

nextLine ()  saisir une valeur de type String


next ().charAt(0)  saisir une valeur de type char
nextByte()  saisir une valeur de type byte
nextShort()  saisir une valeur de type short
nextInt()  saisir une valeur de type int
nextLong()  saisir une valeur de type long
nextFloat()  saisir une valeur de type float
nextDouble()  saisir une valeur de type double

IHM - Java 35

Initiation au Langage Java


(Chapitre 1)

Les instructions de lecture :


Lecture de données tapées au clavier :
System.out.println("bonjour");
Scanner s = new Scanner(System.in);
System.out.print("donner votre nom");
String nom = s.next();
System.out.print("donner votre age");
int age = s.nextInt();
System.out.print(" Age est "+age+" Nom est "+nom);

IHM - Java 36
12/02/2025

Initiation au Langage Java


(Chapitre 1)

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

2- Ecrire un programme qui :


demande à l’utilisateur la saisie d’un nombre entier N strictement positif
demande la saisie du tableau de N réels
affiche le maximum

IHM - Java 37

Initiation au Langage Java


(Chapitre 1)

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

Initiation au Langage Java


(Chapitre 1)

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

Java Orienté Objet


(Chapitre 1)

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

Java Orienté Objet


(Chapitre 1)

Le concept de classe :

Exemple : Classe Personne.

Nom de la
classe
Personne
prenom : chaine
nom : chaine
age : entier
Attributs
- affiche()
- initialise(chaine, chaine, entier)
Méthodes

IHM - Java 41

Java Orienté Objet


(Chapitre 1)

Le concept de classe :
Codage de la classe « Personne » en Java
public class Personne{

private String prenom;


private String nom; Nom classe
private int age;

public void initialise(String P, String N, int age){


prenom=P;
Attributs nom=N;
this.age=age;
}
public void affiche(){
System.out.println(prenom+","+nom+","+age);
Méthodes }
}
IHM - Java 42
12/02/2025

Java Orienté Objet


(Chapitre 1)

Forme générale d’une classe:

modificateur_accès class C1{


type1 p1; // propriété p1
type2 p2; // propriété p2

type3 m3(…){ // méthode m3

}
type4 m4(…){ // méthode m4

}
…}
A partir de la classe C1, on peut créer de nombreux objets O1, O2,…

IHM - Java 43

Java Orienté Objet


(Chapitre 1)

Classe et visibilité des attributs :


Caractéristiques d’un attribut :
• Variable « globale » de la classe
• Accessible dans toutes les méthodes de la classe Attribut visible dans les
public class Personne{ méthodes
private String prenom;
private String nom;
private int age;
public void initialise(String P, String N, int age){
this.prenom=P;
this.nom=N;
this.age=age; }
public void affiche(){
System.out.println(prenom+","+nom+","+age); }
}
N.B. Ne pas confondre attribut et variable d’une méthode
IHM - Java 44
12/02/2025

Java Orienté Objet


(Chapitre 1)

Les objets :

Un objet est une instance d’une seule classe


 Se conforme à la description que sa classe fournit

 Admet une valeur propre à lui pour chaque attribut déclaré dans la classe

 Les valeurs des attributs caractérisent l’état de l’objet

 Possibilité de lui appliquer toute opération (méthode ) définie dans la classe

Tout objet est manipulé et identifié par sa référence

 On parle indifféremment d’instance, de référence ou d’objet

IHM - Java 45

Java Orienté Objet


(Chapitre 1)

Exemple : Objet de type Personne :


Nom de la classe
Personne

Nom de l’objet, la
référence ou l’instance Relation d’instanciation :
instanceof

p1
- prenom = "Aaaa"
- nom = "Bbbb"
- age = 30

Valeurs des attributs qui caractérisent l’état


de l’objet p1

IHM - Java 46
12/02/2025

Java Orienté Objet


(Chapitre 1)

Création d'un objet :


Instancier la classe de cet objet
L’opérateur new
Syntaxe de déclaration nom_classe nom_objet;
Syntaxe de création nom_objet = new nom_classe();

Exemple : création d’un objet de la classe Personne


public class Test1{
public static void main(String arg[]){

Personne p1=new Personne();

}
}

IHM - Java 47

Java Orienté Objet


(Chapitre 1)

Déroulement de la création d’objets

Personne p1=new Personne(); p1


null
objet
1. Personne p1; p1

attribut1
2. p1=new Personne(); attribut2

IHM - Java 48
12/02/2025

Java Orienté Objet


(Chapitre 1)

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

Java Orienté Objet


(Chapitre 1)

Remarques :

1- la variable p1 contient une référence (adresse ) sur l'objet instancié.


2- L'opérateur new est un opérateur de haute priorité qui permet d’:
 instancier des objets
 appeler une méthode particulière de cet objet : le constructeur.

3- Importation de la classe Personne


Le compilateur cherche le code de la classe Personne dans :
- Le fichier qui contient la méthode principale main()
 les paquetages importés par les instructions import
 le répertoire à partir duquel le compilateur a été lancé

IHM - Java 50
12/02/2025

Java Orienté Objet


(Chapitre 1)

La durée de vie d'un objet

Les objets ne sont pas des éléments statiques


La durée de vie d'un objet passe par 3 étapes :
• la déclaration de l'objet et l'instanciation grâce à l'opérateur new
• l'utilisation de l'objet en appelant ses méthodes
• la suppression de l'objet : elle est automatique en Java grâce à la machine
virtuelle.(Garbage Collectors)

IHM - Java 51

Java Orienté Objet


(Chapitre 1)

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

Java Orienté Objet


(Chapitre 1)

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;
}

L'instruction this.prenom=P;  l'attribut prenom de l'objet courant (this) reçoit la


valeur P.
Remarque
this doit être utilisé explicitement lorsqu'il y a conflit d'identificateurs: Cas de l'instruction
: this.age=age;
IHM - Java 53

Java Orienté Objet


(Chapitre 1)

Gestion des objets :


Afficher son type et son emplacement mémoire
System.out.println(p1) Personne@19821f

Récupérer son type : méthode "getClass()"


p1.getClass(); class Personne

Tester son type : opérateur « instanceof » ou mot clé « class »


if (p1 instanceof Personne) {...} // true
ou
if (p1.getClass() == Personne.class) {...} // true

IHM - Java 54
12/02/2025

Java Orienté Objet


(Chapitre 1)

Destruction et ramasse-miettes : Garbage Collectors


La destruction des objets se fait de manière implicite :
Le ramasse-miettes ou Garbage Collector se met en route
Automatiquement :
Si plus aucune variable ne référence l’objet
Si le bloc dans lequel il était défini se termine
Si l’objet a été affecté à "null"
Manuellement :
Sur demande explicite du programmeur " System.gc() "
Un pseudo-destructeur « protected void finalize() » peut être défini
explicitement par le programmeur. Il est appelé juste avant la libération de la mémoire
par la machine virtuelle, mais on ne sait pas quand.

IHM - Java 55

Java Orienté Objet


(Chapitre 1)

Les mots clés gérants la visibilité des entités :


Il existe 3 présentés dans un ordre décroissant de niveau de visibilité offert
public : visible par tous les objets
par défaut visible par les objets des classes se trouvant dans le même package.
protected : visible par les objets de la classe interne ou d'un objet dérivé
private : visible uniquement par les objets de la classe interne
En général
les données d'une classe sont déclarées privées alors que ses méthodes sont déclarées
publiques.

IHM - Java 56
12/02/2025

Java Orienté Objet


(Chapitre 1)

Encapsulation par l’exemple :

public class Personne{



private String nom;
public void initialise(String P,public class Test1{
String N, int age){ public static void main(String arg[]){
this.prenom=P; Personne p1=new Personne ();
this.nom=N; p1.initialise ("Aaaa","Bbbb",30); //Ok
this.age=age; } p1.nom="Cccc";//erreur
p1.affiche(); //Ok
public void affiche(){ }
System.out.println(nom);} }
}

Les données (attributs) doivent être protégés et accessibles pour l’extérieur par des accesseurs
IHM - Java 57

Java Orienté Objet


(Chapitre 1)

Autres modificateurs :

 static : le membre appartient à tous les objets de la classe. Il est inutile d'instancier la
classe pour accéder au membre.

 final : le membre ne peut pas être modifié (cas de l'héritage)

 abstract : la classe ne pourra pas être instanciée: ses méthodes ne sont pas implémentées

IHM - Java 58
12/02/2025

Java Orienté Objet


(Chapitre 1)

Les attributs ou propriétés :

Ce sont des variables :


 variables d'instances
Exemple
public class MaClasse { public int valeur1 ; int valeur2 ; protected
int valeur3 ; private int valeur4 ; }
 variables de classes
Exemple
public class MaClasse { static int compteur ; }
 Constantes
Exemple
public class MaClasse { final double PI=3.14f ; }

IHM - Java 59

Java Orienté Objet


(Chapitre 1)

Initialisation des variables :


En Java
 Toute variable appartenant à un objet est initialisée avec une valeur par défaut
 Cette initialisation ne s'applique pas aux variables locales des méthodes de la classe.
 Les valeurs par défaut lors de l'initialisation automatique des variables d'instances sont :
Type Valeur par défaut
Boolean false
byte, short, int, long 0
float, double 0.0
char \u000 (null Character)
class null

IHM - Java 60
12/02/2025

Java Orienté Objet


(Chapitre 1)

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; }

//Si la méthode retourne un tableau


int[] valeurs() { ... } ou int valeurs()[ ] { ... }

IHM - Java 61

Java Orienté Objet


(Chapitre 1)

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

Java Orienté Objet


(Chapitre 1)
public class Test1 {
public static void main (String[] argv) {
Exemple de surcharge : // Déclaration puis création de v1
public class Voiture { Voiture v1 = new Voiture();
// Accélération 1 avec un double
private int puissance;
v1.accelere(123.5);
private double vitesse; // Accélération 2 avec un entier
private boolean estDemarree; v1.accelere(124);
//… }
public void accelere(double vitesse) { }
if (estDemarree) {
this.vitesse = this.vitesse + vitesse;
}
}
public void accelere(int vitesse) {
if (estDemaree) {
this.vitesse = this.vitesse +(double)vitesse;
}
}
//...
}
IHM - Java 63

Java Orienté Objet


(Chapitre 1)

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

Java Orienté Objet


(Chapitre 1)

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

Java Orienté Objet


(Chapitre 1)

Les constructeurs :
// méthodes
public void initialise(String P, String N, int age){
this.prenom=P;
this.nom=N;
this.age=age;
}

public void affiche(){


System.out.println(prenom+","+nom+","+age);
}
//…autres méthodes

IHM - Java 66
12/02/2025

Java Orienté Objet


(Chapitre 1)

Les constructeurs programme test:

public class Test1{


public static void main(String arg[]){

Personne p1=new Personne("ALAOUI","Mohammed",30);


System.out.print("p1=");
p1.affiche();

Personne p2=new Personne(p1);


System.out.print("p2=");
p2.affiche();
}
}

IHM - Java 67

Java Orienté Objet


(Chapitre 1)

Programme de test : Les références d’objets :


public class Test2{
public static void main(String arg[]){
// p1
Personne p1=new Personne ("ALAOUI","Mohammed",30);
System.out.print("p1=");
p1.affiche();

// p2 référence le même objet que p1


Personne p2=p1;
System.out.print("p2=");
p2.affiche();
}
}

IHM - Java 68
12/02/2025

Java Orienté Objet


(Chapitre 1)

Programme de test : Les références d’objets :


// p3 référence un objet = copie de l’objet réf. par p1
Personne p3=new Personne(p1);
System.out.print("p3=");
p3.affiche();

// on change l'état de l'objet réf. par p1


p1.initialise("ACHIMI","Fatima",20);
System.out.print("p1=");
p1.affiche();

// comme p2=p1, l'objet réf. par p2 a du changer d'état


System.out.print("p2=");
p2.affiche();

// comme p3 ne référence pas le même objet que p1


System.out.print("p3=");
p3.affiche();

IHM - Java 69

Java Orienté Objet


(Chapitre 1)

Passage de paramètres à une méthode :


Un paramètre d’une méthode peut être
• Une variable de type simple
• Une référence d’un objet typée par n’importe quelle classe
En Java tout est passé par valeur
Si les paramètres sont de type simples :
• Leur valeur est recopiée
• Leur modification dans la méthode n’entraîne pas celle de l’original
Si les paramètres sont des objets
• Leur référence est recopiée et non pas les attributs
• Leur modification dans la méthode entraîne celle de l’original !
IHM - Java 70
12/02/2025

Java Orienté Objet


(Chapitre 1)

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
}

Java Orienté Objet


(Chapitre 1)

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

Java Orienté Objet


(Chapitre 1)

Accesseurs et Mutateurs (getter/setter):


L'encapsulation permet de sécuriser l'accès aux données privées d'une classe.
La seule façon d’y accéder est d’utiliser les accesseurs
Un accesseur est une méthode publique qui donne l'accès à une variable d'instance privée
Exemple :
private int valeur = 13;
// accesseur en lecture
public int getValeur(){
return(valeur);
}
//modificateur
public void setValeur(int val) {
valeur = val;
}

IHM - Java 73

Java Orienté Objet


(Chapitre 1)

Accesseurs et Mutateurs (getter/setter):


Exemple Personne:
public class Personne{
private String prenom;
private String nom;
private int age;

// 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

Java Orienté Objet


(Chapitre 1)

Accesseurs et Mutateurs (getter/setter):


Exemple Personne:
public class Test1{
public static void main(String[] arg){
Personne P=new Personne("ALAOUI","Mohammed",20);
System.out.println("P=("+P.getPrenom()+","+P.getNom()+","+P.getAge()+")");
P.setAge(24);
System.out.println("P=("+P.getPrenom()+","+P.getNom()+","+P.getAge()+")");
}
}
//Résultats :
P=(ALAOUI,Mohammed,20)
P =(ALAOUI,Mohammed,24)

IHM - Java 75

Java Orienté Objet


(Chapitre 1)
Les méthodes et attributs de classe :
Attributs :
 Il peut être utile de définir pour une classe des attributs indépendamment des instances : nombre
d’objets créées
 Utilisation des Variables de classe comparables aux " variables globales"
Exemple : private static long nbPersonnes; // nombre de Personnes créées
Méthodes :
 Ce sont des méthodes qui ne s'intéressent pas à un objet particulier
 Utiles pour des calculs intermédiaires internes à une classe
 Utiles également pour retourner la valeur d'une variable de classe en visibilité private
 Elles sont définies comme les méthodes d'instances, mais avec le mot clé static
Exemple :

IHM - Java 76
12/02/2025

Java Orienté Objet


(Chapitre 1)

Exemple (static):
public class test1{
public static long getNbPersonnes(){
return nbPersonnes;
}

public static void main(String arg[]){


Personne p1=new Personne("ALAOUI","Mohammed",30);
new Personne("HACHIMI","Fatima",25);
Personne p3=p2;
System.out.println("Nombre de Personnes créées :
"+Personne.getNbPersonnes());
}
}
//on obtient les résultats suivants :
Nombre de Personnes créées : 2
IHM - Java 77

Java Orienté Objet


(Chapitre 1)
Les tableaux d’objets en Java :
Un objet est une donnée comme une autre : Plusieurs objets peuvent être
rassemblés dans un tableau
public class test1{
public static void main(String arg[]){
Personne[] amis= new Personne[3];
System.out.println("----------------");
amis[0]=new Personne("ALAOUI","Mohammed",30);
amis[1]=new Personne("HACHIMI","Fatima",52);
amis[2]=new Personne("NOUACH","Adil",66);
int i;
for(i=0;i<amis.length;i++)
amis[i].affiche();
}
}

IHM - Java 78
12/02/2025

Java Orienté Objet


(Chapitre 1)
L’ Héritage :
Définition
Technique offerte par les langages de programmation orientée objet pour construire une
classe (ou plusieurs) à partir d’une autre classe (ou plusieurs) en partageant attributs et
opérations

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

Java Orienté Objet


(Chapitre 1)

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

 Héritage à plusieurs niveaux


Exemple :
class Chef_dep extends Enseignant{
…}

IHM - Java 80
12/02/2025

Java Orienté Objet


(Chapitre 1)
L’ Héritage en Java :
Classe Enseignant hérite des propriétés de la classe Personne,
on écrira :
public class Enseignant extends Personne
Personne est appelée la classe mère (super classe)
 Enseignant la classe fille (ou dérivée, sous classe)
Un objet Enseignant a toutes les qualités d'un objet Personne

class Enseignant extends Personne{


// attributs
private int section;
// constructeur
public Enseignant(String P, String N, int age,int section){
super(P,N,age);//Appel du constructeur de la classe mère
this.section=section;
}
}
IHM - Java 81

Java Orienté Objet


(Chapitre 1)

L’ Héritage en Java :

La généralisation exprime une relation « est-un » entre une classe et sa super-classe

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

Java Orienté Objet


(Chapitre 1)

L’ Héritage en Java :

Remarques

 Un objet de la classe Enseignant est forcément un objet de la classe Personne


 Un objet de la classe Personne n’est pas forcément un objet de la classe Enseignant
 Un Enseignant est une Personne

IHM - Java 83

Java Orienté Objet


(Chapitre 1)

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

Dans le cas de l’héritage


 Une sous-classe peut ajouter des nouveaux attributs et/ou méthodes à ceux qu’elle
hérite (surcharge en fait partie)
 Une sous-classe peut redéfinir des méthodes qu’elle héritent et fournir des
implémentations spécifiques pour celles-ci

IHM - Java 84
12/02/2025

Java Orienté Objet


(Chapitre 1)

Exemple de Surcharge et redéfinition :

public class Personne{


public String identite(){
return "Personne("+prenom+","+nom+","+age+")";
}

class Enseignant extends Personne{


int sec;
public String identite(){
return "Enseignant("+super.identite()+","+sec+")";
}

IHM - Java 85

Java Orienté Objet


(Chapitre 1)

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

Java Orienté Objet


(Chapitre 1)

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

Java Orienté Objet


(Chapitre 1)

Polymorphisme et Java : Surclassement :

Java permet le polymorphisme


 A une référence déclarée d’une classe (Personne), il est possible d’affecter une référence
vers un objet de sa sous classe (Enseignant )

 On parle de surclassement d’objets ou upcasting

 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

Java Orienté Objet


(Chapitre 1)

Exemple 1:
public class Test {
public static void main (String[] argv) {

Personne P1 = new Enseignant("Aaaa","Bbbb",50,10); //OK

P1.setSec(8);//ERROR

System.out.println(P1.identite());//OK
}
}

IHM - Java 89

Java Orienté Objet


(Chapitre 1)

Exemple 2:
public class test1{
public static void main(String arg[]){
Enseignant e= new Enseignant("ALAOUI","Mohammed",56,11);
affiche(e);

Personne p= new Personne("HACHIMI","Fatima",30);


affiche(p);
}
public static void affiche(Object obj){
System.out.println(obj.toString());
}
}
Les résultats obtenus sont les suivants :
Enseignant@1ee789
Personne@1ee770

IHM - Java 90
12/02/2025

Java Orienté Objet


(Chapitre 1)

Procédure :

Le système devra exécuter l’instruction System.out.println(e.toString())


où e est un objet Enseignant.

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

Java Orienté Objet


(Chapitre 1)

Remarque :
On peut redéfinir la méthode toString de la classe mère Object pour les classes Personne et
Enseignant.

public class Personne{


//...
public String toString(){
return "Personne("+prenom+","+nom+","+age+")";
}
}
class Enseignant extends Personne{
private int section;
//…
public String toString(){
return "Enseignant("+super.toString()+","+section+")";
}
}
IHM - Java 92
12/02/2025

Java Orienté Objet


(Chapitre 1)

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

Java Orienté Objet


(Chapitre 1)

paquetages (packages) :

Un paquetage est donc un groupe de classes associées à une fonctionnalité


• java.io : lecture et écriture
• java.lang : rassemble les classes de base Java (Object, String, System, …)
• java.util : rassemble les classes utilitaires (Collections, Date, …)

L’utilisation des paquetages permet de regrouper les classes afin d’organiser des libraires
de classes Java

IHM - Java 94
12/02/2025

Java Orienté Objet


(Chapitre 1)

Les paquetages : Utilisation des classes :

- 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.*;

java.io.ObjectOuput toto = new java.io.ObjectOuput(...)


IHM - Java 95

Java Orienté Objet


(Chapitre 1)

Les paquetages : leur « existence » physique :


A chaque classe Java correspond un fichier
A chaque paquetage (sous- paquetage ) correspond un répertoire
Un paquetage peut contenir
 Des classes ou des interfaces
 Un autre paquetage (sous- paquetage )

Exemple :
package mesclasses;
C1.java
C2.java
I1.java

IHM - Java 96
12/02/2025

Java Orienté Objet


(Chapitre 1)

Les paquetages : hiérarchie de paquetages :

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

lang util math

String.java

IHM - Java 97

Java Orienté Objet


(Chapitre 1)

Les paquetages : visibilité :


- L’instruction import nomPackage.* ; ne concerne que les classes du paquetage indiqué.

- Elle ne s’applique pas aux classes des sous-paquetages

import java.util.zip.*; Paquetages


import java.util.*; différents
public class Essai {
...
public Essai() {
Date d = new Date(...);
ZipFile z = new ZipFile(...);
...
}
...
}

IHM - Java 98
12/02/2025

Java Orienté Objet


(Chapitre 1)

Classes internes :

C’est une classe définit au sein d'une autre classe


L’utilisation d’une classe interne est souhaitable lorsque la classe n'a d'utilité que dans la
classe qui la contient.

Soit Article une classe interne de la classe Edition


Lors de la compilation du source Edition.java on obtient deux fichiers .class :
1. Edition$Article.class
2. Edition.class

IHM - Java 99

Java Orienté Objet


(Chapitre 1)

Exemple : Classe interne article de la classe Test :


//classes importées //données locales
import java.io.*; private Article art;
public class Edition{
//classe interne //constructeur
private class Article{ public Edition(String code, String nom, double
//on définit la structure prix){
private String code; art= new Article(code, nom, prix);}
private String nom;
private double prix; //accesseur
//constructeur public Article getArticle(){
public Article(String code, String return art;}
nom, double prix){
this.code=code; //toString
this.nom=nom; public String toString(){
this.prix=prix; return
} "Article("+art.code+","+art.nom+","+art.prix+")
} //fin classe article ";}

IHM - Java 100


12/02/2025

Java Orienté Objet


(Chapitre 1)

Exemple : Classe interne article de la classe Test :


//main
public static void main(String arg[]){
Edition e1= new Edition("a100",“book",1000);
System.out.println("art="+e1.getArticle());
System.out.println("art="+e1.toString());
}
} // fin classe Edition

IHM - Java 101

Java Orienté Objet


(Chapitre 1)

Classes et méthodes abstraites


On ne connaît pas toujours le comportement par défaut d’une opération commune à plusieurs
sous-classes
Exemple : aire d’une forme géométrique. On sait que toutes les formes géométriques ont une
aire, mais la formule est différente d’une forme à l’autre
Solution : on peut déclarer la méthode « abstraite » dans la classe mère et ne pas lui donner
d’implémentation par défaut
Méthode abstraite et conséquences : 3 règles à retenir
1- Si une seule des méthodes d’une classe est abstraite, alors la classe devient aussi abstraite
2- On ne peut pas instancier une classe abstraite car au moins une de ses méthodes n’a pas
d’implémentation
3- Toutes les classes filles héritant de la classe mère abstraite doivent implémenter toutes ses
méthodes abstraites ou sinon elles sont aussi abstraites
IHM - Java 102
12/02/2025

Java Orienté Objet


(Chapitre 1)

Classes abstraites et Java :


On utilise le mot clé abstract pour spécifier une classe abstraite
Une classe abstraite se déclare ainsi :
public abstract class NomMaClasse {
...
}
Une méthode abstraite se déclare ainsi :
public abstract void maMethode(...);

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

IHM - Java 103

Java Orienté Objet


(Chapitre 1)

Exemple : public abstract class Forme {


public abstract float aire(int x,int y);}

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;
} }
…} …}

Attention : ce n’est pas de la redéfinition. On parle d’implémentation de méthode


abstraite

IHM - Java 104


12/02/2025

Java Orienté Objet


(Chapitre 1)

Programme de test :

public class test {


public static void main(String[] args) {

Cercle c1=new Cercle(1,1,25);
System.out.println("L'aire est "+c1.aire(25, 25));

Forme f1=new forme(); // Erreur
}
}

Attention : La classe Forme ne peut être instanciée puisqu’elle est abstraite

IHM - Java 105

Java Orienté Objet


(Chapitre 1)

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

IHM - Java 106


12/02/2025

Java Orienté Objet


(Chapitre 1)

Mise en œuvre d’une interface :

 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, ...
{

IHM - Java 107

Java Orienté Objet


(Chapitre 1)

Mise en œuvre d’une interface :

 Une interface ne possède pas d’attribut


 Une interface peut posséder des constantes
 Une interface ne possède pas de mot clé abstract
 Les interfaces ne sont pas instanciables (Même raisonnement avec les classes
abstraites)

public interface NomInterface {


public static final int CONST = 2; }

NomInterface jeTente = new NomInterface(); // Erreur!!

IHM - Java 108


12/02/2025

Java Orienté Objet


(Chapitre 1)

Exemple : Mise en œuvre d’une interface :

//une interface I1
public interface I1{
int ajouter(int i,int j);
int soustraire(int i,int j);
}

public class C1 implements I1 { public class C2 implements I1 {


public int ajouter(int i,int j) { public int ajouter(int i,int j) {
return i+j+1; return i+j+10;
} }
public int soustraire(int i,int j) { public int soustraire(int i,int j) {
return i-j+1; return i-j+10;
} }
} }

IHM - Java 109

Java Orienté Objet


(Chapitre 1)

Exemple : Mise en œuvre d’une interface :

Tout objet instance d’une classe qui implémente l’interface peut être déclaré comme étant
du type de cette interface
Exemple :

public class Test{



public static void main(String[] arg){
// création d’un objet C
C1 c= new C1();

}//main I1 c= new C1();
}//classe test

IHM - Java 110


12/02/2025

Java Orienté Objet


(Chapitre 1)

Mise en œuvre d’une interface :

Les interfaces pourront se dériver


 Une interface peut hériter d’une autre interface : extends
public interface I2 extends I1{
…}
Conséquences
 La définition de méthodes de l’interface mère I1 sont reprises dans l’interface fille I2
 Toute classe qui implémente l’interface fille doit donner une implémentation à toutes les
méthodes mêmes celle héritées
Utilisation
 Lorsqu’un modèle peut se définir en plusieurs sous-modèles complémentaires
IHM - Java 111

Java Orienté Objet


(Chapitre 1)

Programme de test : Importance des interfaces :

public class Test{


private static void calculer(int i, int j, I1 in){
System.out.println(in.ajouter(i,j));
System.out.println(in.soustraire(i,j));
}
public static void main(String[] arg){
// création de deux objets C1 et C2
C1 c1= new C1();
C2 c2= new C2();
// appels de la fonction statique calculer
calculer(4,3,c1);
calculer(14,13,c2);
}

IHM - Java 112


12/02/2025

Java Orienté Objet


(Chapitre 1)

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 ?

IHM - Java 113

Java Orienté Objet


(Chapitre 1)

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

- Possibilité de « récupérer » une erreur à plusieurs niveaux d’une application (propagation


dans la pile des appels de méthodes)
 Vocabulaire
- détecter et traiter les erreurs ( try catch finally )
- lever ou propager ( throw throws )
IHM - Java 114
12/02/2025

Java Orienté Objet


(Chapitre 1)

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

IHM - Java 115

Java Orienté Objet


(Chapitre 1)

Exemple : Intercepter une erreur :


public class Test{
public static void main(String[] args){
int[] tab=new int[] {0,1,2,3}; // déclaration & initialisation
int i;
for (i=0; i<tab.length; i++)
System.out.println("tab[" + i + "]=" + tab[i]);
tab[100]=6;
} //main
} //class

IHM - Java 116


12/02/2025

Java Orienté Objet


(Chapitre 1)

Exemple : Intercepter une erreur :


public class Test{
public static void main(String[] args){
int[] tab=new int[] {0,1,2,3}; // déclaration & initialisation
for (int i=0; i<tab.length; i++)
System.out.println("tab[" + i + "]=" + tab[i]);
// Interception d'une erreur
try{
tab[100]=6;
}catch (ArrayIndexOutOfBoundsException e){
System.err.println("l’indice utilisé n’existe pas" );
} //try-catch
} //main
} //class

IHM - Java 117

Java Orienté Objet


(Chapitre 1)

Arbre des Exceptions

IHM - Java 118


12/02/2025

Java Orienté Objet


(Chapitre 1)

Le bloc try catch finally :


try {
operation_risquée1; opération_risquée2;
} catch (ExceptionInteressante e) {
traitements
} catch (ExceptionParticulière e) {
traitements
} catch (Exception e) {
traitements
} finally{
traitement_pour_terminer_proprement;
}
NB:
- Le bloc Finally est toujours exécuté, qu'une exception soit levée ou non
- Dans l'ordre séquentiel des clauses catch, un type d'exception de classe ne doit
pas venir après un type d'une exception d'une super classe.
IHM - Java 119

Java Orienté Objet


(Chapitre 1)

Lancer une exception :

Une exception peut être lancée ou propagée.


Une méthode peut déclarer qu’elle lance une exception par le mot clé throws
Public static void paiment(int age) throws Exception {
...}
Permet à la méthode calcul de propager une
exception de type Exception

public static void paiment(int age) throws Exception {


if(age<=0) throw new Exception("L’âge doit être positif");
if(age<18)System.out.println("vous allez payer 100");
else System.out.println("vous allez payer 300");
}

IHM - Java 120


12/02/2025

Java Orienté Objet


(Chapitre 1)
Exemple:
public class Test {
public static void paiment(int age) throws Exception {
if(age<=0) throw new Exception("L'âge doit être positive");
if(age<18)System.out.println("Il faut payer 100 DH");
else System.out.println("Il faut payer 300 DH"); }

public static void main(String[] args) {


Scanner s=new Scanner(System.in);
System.out.println("Saisir votre age");
int a=0;
a=s.nextInt();
s.close();
try {paiment(a);}
catch (Exception e) {System.err.println(e.getMessage());}
finally{System.out.println("Programme terminé");};
}
}
IHM - Java 121

Java Orienté Objet


(Chapitre 1)

Créer ses propres exceptions

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()
+ …

Affiche sur la sortie erreur standard la


ExcePer
liste des appels de méthodes ayant
conduit à l’exception

122
IHM - Java
12/02/2025

Java Orienté Objet


(Chapitre 1) class ExcePer extends ArrayIndexOutOfBoundsException{
ExcePer(String s){
super(s);
Créer ses propres exceptions }
}

public class Test{


public static void main(String[] args){
int[] tab=new int[] {0,1,2,3};
for (int i=0; i<6; i++)
if(i>=tab.length){throw new ExcePer(" ATTENTION la valeur de l'indice
n'est pas possible");}
else System.out.println("tab[" + i + "]=" + tab[i]);
} //main
} //class

123
IHM - Java

Java Orienté Objet


(Chapitre 1)

Les exceptions courantes

 Java fournit de nombreuses classes prédéfinies dérivées de la classe Exception

• ArithmeticException (division par zéro)


• NullPointerException (référence non construite)
• ClassCastException (problème de cast)
• IndexOutOfBoundsException (problème de dépassement d’index dans tableau)

124
IHM - Java
12/02/2025

Exercice
Soit l’interface suivante :

public interface Compte {


void deposer(int montant) throws PlafondDepotAtteintException;
int retirer(int montant) throws PasAssezArgentException;
}

1. Définir le code des classes d’exception


2. Compléter le code de la classe suivante :

public class CompteBancaire implements Compte {


public static final int PLAFOND_DEPOT = 100_000;
private final String numero;
private int balance;

}

125

Vous aimerez peut-être aussi