CHAPITRE 2.
INTRODUCTION À LA POO
AVEC JAVA
Java, un Langage de
programmation orientée objet
SOMMAIRE
•Chapitre 1 : Concepts fondamentaux de la POO
•Chapitre 2 : Introduction à la POO avec JAVA
•Chapitre 3 :Techniques de base de la
programmation en JAVA
•Chapitre 4 : Classes et Héritage en Java
•Chapitre 5 : Exceptions en Java
Dr P. PODA, MC, Fev -2025 2
Chapitre 2 : Introduction à la POO avec JAVA
1. Naissance et développement de JAVA
1. Caractéristiques de JAVA
2. Historique de JAVA
2. Environnement de JAVA
1. Java Developer’s Kit (JDK)
2. Le code source
3. la compilation
4. La machine virtuelle
3. Les paquetages (packages)
2. Construction de package
3. Utilisation des classes d’un package
4. API de JAVA
4. Les types de programme de
JAVA
5. Les Classes en JAVA
1. Architecture d’une classe
JAVA
2. Les modificateurs de classe
3. Conventions d’écriture en
JAVA
4. Un premier exemple
Dr P. PODA, MC, Fev -2025 3
Chapitre 2 : Introduction à la POO avec JAVA
6. Utilisation des classes
1. Déclaration d’un objet
2. Création d’un objet
3. Un exemple d’utilisation
d’objets
7. Les constructeurs
1. Définition
2. Le mot clé this
3. Exemple
8. Attributs et méthodes
1. Définition d’attribut et de
méthode
2. Modificateurs de méthodes et
variables
9. Droits d’accès
10. Eléments de conception des
classes
Dr P. PODA, MC, Fev -2025 4
CHAPITRE 2:
À LA
POO AVEC JAVA
1-
Naissance et développement
de JAVA
Caractéristiques de JAVA
• JAVA est un langage de P.O.O proche de C++
• JAVA est portable (machine virtuelle indépendante des architectures
matérielle comme logicielle)
• JAVA est simple (pas de pointeur)
• JAVA autorise le multitâches (multithreading; un thread: processus
qui s’exécutent simultanément à l’intérieur d’un unique programme)
• JAVA contient une très riche bibliothèque de classes (packages) qui
permettent de créer des interfaces graphiques, d’utiliser des données
multimédia, de communiquer à travers les réseaux, d’accéder à des
BD, etc.
Dr P. PODA, MC, Fev -2025 6
Caractéristiques de Java
 Java est au cœur de plusieurs éditions standards de
développement logiciel :
 Java ME (anciennement J2ME: Java 2 Micro Edition) est
prévu pour le développement d'applications embarquées,
notamment sur des assistants personnels (PDA) et
terminaux mobiles;
 Java SE (anciennement J2SE: Java 2 Standard Edition) est
destiné au développement d'applications pour ordinateurs
personnels (PC);
 Java EE (anciennement J2EE : Java 2 Enterprise Edition):
destiné à un usage professionnel avec la mise en œuvre de
serveurs.
Dr P. PODA, MC, Fev -2025 7
Historique de Java
• 1991 : Projet de recherche chez Sun Microsystems sur un langage de pilotage des
appareils électroniques a aboutit à la création du l.o.o OAK
• 1995 : Java utilisé pour la réalisation du logiciel de navigation web Hotjava.
• 1996 : Java version 1.01 et version 1.02
• 1998: Java version 1.1
• 1999: Java 2 (version 1.2)
• 2002: Java version 1.4
• 2004: Java version 5.0
• …
• 2017 : Java 9
• 17 Mars 2020 : Java SE 14
• 19 Janvier 2021 : Java SE 15
• Mars 2021 : Java SE 16
• Mars 2022 : Java SE 18
• Mars 2023 : Java 20 (JDK 20)
Dr P. PODA, MC, Fev -2025 8
CHAPITRE 2 :
INTRODUCTION À LA
POO AVEC JAVA
2- Environnement de JAVA
Le Java Developer’s Kit (JDK)
 Les éléments constitutifs du jdk sont:
 Le compilateur (javac)
 L’interpréteur (java)
 L’appletviewer ou inspecteur d’applet
 etc…
 Le jdk comprend par ailleurs l’API de java
 le kit JDK ne comporte pas d’éditeur
Dr P. PODA, MC, Fev -2025 10
Le code source
•Une application Java est généralement composée
de plusieurs fichiers source.
•Les fichiers source de java ont l’extension .java.
•Le nom du fichier source java doit être le même
que celui de la classe publique que ce fichier
renferme.
Dr P. PODA, MC, Fev -2025 11
La compilation
La compilation va transformer le code source en
J-code ou byte-code java.
prompt MS-DOS> javac nom_fich.java
 Création d’un fichier nom_fich.class
Dr P. PODA, MC, Fev -2025 12
La machine virtuelle java
•Le code java comprend des instructions écrites pour
une certaine machine virtuelle java (JVM: JavaVirtual
Machine)
•Un programme java est exécuté sur tout ordinateur
sur lequel une machine virtuelle est disponible
•Une application sera exécutée par l’interpréteur de
java
prompt MS-DOS> java nom_fich
Dr P. PODA, MC, Fev -2025 13
CHAPITRE 2 :
INTRODUCTION À
JAVA
3- Les Paquetages
Les paquetages (packages)
•Les classes Java sont organisées
(hiérarchiquement) en paquetages (packages)
•Un paquetage : regroupe plusieurs classes qui
collaborent entre elles dans une application
•Avec les paquetages, un certain niveau de
protection est défini (voir notion de visibilité)
Dr P. PODA, MC, Fev -2025 15
Les paquetages : construction
• Pour ranger une classe dans un paquetage, il faut
insérer la ligne suivante au début du fichier source :
package nomDuPackage ;
• Un paquetage qui doit contenir des classes et
donc des fichiers est un répertoire.
• Le paquetage a le même nom que le répertoire
qui le contient.
Dr P. PODA, MC, Fev -2025 16
Les paquetages : utilisation des classes
• On peut importer les paquetages de deux
manières différentes :
(i) import nomDuPackage.* ;
(ii) import nomDupackage.nomDeLaclasse ;
Dr P. PODA, MC, Fev -2025 17
API de Java (quelques exemples)
•Java.lang : contient les classes les plus fondamentales du
langage.
•Il contient la classe Object qui est la super classe,
primitive de toutes les classes
•Il est importé par défaut
•Exemples : Java.lang.Math, Java.lang.System,
Java.lang.String
•Java.awt: (awt pour AbstractWindows Toolkit) contient
les classes pour fabriquer des interfaces graphiques
•Exemple de méthodes : drawLine, drawRect
Dr P. PODA, MC, Fev -2025 18
API de Java (quelques exemples)
•Java.applet : utile pour faire des applets qui sont des
applications utilisables à travers le web
•java.io : contient les classes nécessaires aux E/S
•Java.net : contient les classes d’accès aux réseaux
•Java.util : paquetage des classes d’utilitaires (Random, Date,
etc.)
•Détails : http://download.oracle.com/javase/7/docs/api/ (anciennement
http://java.sun.com/j2se/1.5.0/docs/api/index.html)
Dr P. PODA, MC, Fev -2025 19
CHAPITRE 2 :
INTRODUCTION À JAVA
4-Types de programmes JAVA
Types de programmes java
• Applications Java : programmes écrits en Java
• Applets Java : programmes lancés à partir d’un programme HTML par un
logiciel de navigation
• Servlets : composants Java s'exécutant côté serveur ; utilisé couramment
dans la génération dynamique de pageWeb.
• les midlets : applications mobiles
• NB. Javascript est un langage largement indépendant, dont le code est
directement inséré dans un fichier HTML
• Javascript surtout destiné à l’enrichissement graphique et au pilotage des
pages HTML
Dr P. PODA, MC, Fev -2025 21
CHAPITRE 2 :
INTRODUCTION À LA POO
AVEC JAVA
5- Les classes en JAVA
Les classes de Java
Dr P. PODA, MC, Fev -2025 23
Une classe
contient :
- des attributs
- et des méthodes
Architecture d’une classe Java
L'architecture d'une classe en Java est
constituée de deux parties :
• l’en-tête de la classe
• le corps de la classe
Dr P. PODA, MC, Fev -2025 24
Architecture d’une classe Java
L’EN-TÊTE DE LA CLASSE :
[Modificateur] class <NomClasse> [extends
<superclass>] [implements <Interface>]
•Légende :
[ ]: optionnel
<>: obligatoire
en gras (et en rouge) : mot clé
Dr P. PODA, MC, Fev -2025 25
Architecture d’une classe Java
LE CORPS DE LA CLASSE :
 Il donne la définition de la classe.
 Il contient les déclarations des attributs (variables) et des
méthodes.
La syntaxe d’une définition de classe est la suivante :
entête
{
déclarations des attributs (variables)
définition des méthodes
}
Dr P. PODA, MC, Fev -2025 26
Les modificateurs de classe
Modificateur Définition
abstract Aucun objet ne peut instancier cette classe.
Seules les classes abstraites peuvent
déclarer des méthodes abstraites.
final Les classes final ne sont pas héritables
private N’a de sens que pour les classes internes
(notion avancée)
public La classe est accessible par toutes les
autres classes des autres packages. Elle est
visible partout
Dr P. PODA, MC, Fev -2025 27
Conventions d’écriture en Java
Type Convention Exemple
Nom d’une classe Débute par une majuscule class Polygone
Nom d’un objet Débute par une
minuscule; peut s’étaler
sur plusieurs mots chacun
commençant par une
majuscule à l’exception du
premier
premierObjet
Nom de méthode Débute par une minuscule
sauf pour le constructeur
void ecrire()
Constante S’écrit en majuscules A_CONSTANT
Dr P. PODA, MC, Fev -2025 28
Classe : un premier exemple
Dr P. PODA, MC, Fev -2025 29
public class Enfant
{
String nom;
String contactMaman;
int age;
public void feterAnniversaire()
{
age = age +1;
System.out.println(’’Joyeux anniversaire’’);
}
public String appelerParents()
{
return contactMaman;
}
}
Classe : classe programme Java
• A priori, une classe a vocation à être instanciée
pour donner naissance à des objets.
• Si on veut mettre en œuvre un programme Java, il
faut nécessairement écrire une classe.
• La classe qui met en œuvre le programme Java est
unique par projet et se distingue des classes
ordinaires par la présence de la méthode main().
Dr P. PODA, MC, Fev -2025 30
Classe : exemple de classe programme
public class PremierProgramme
{
public static void main(String[] arg)
{
System.out.println(’’Welcome!’’);
}
}
Dr P. PODA, MC, Fev -2025 31
classe objet méthode
Classe : exemple de classe programme
public : visible de partout, y compris des autres packages
static : méthode de classe
System.out.println : la méthode println écrit sur
l’écran la chaîne de caractères passée en paramètres à
cette méthode.
out : objet désignant l’écran, se trouve dans la classe
System appartenant au package java.lang
Dr P. PODA, MC, Fev -2025 32
Classe : exemple de classe programme
• La classe PremierProgramme doit se trouver dans le fichier
PremierProgramme.java
• Il est compilé par la commande javac PremierProgramme.java
• La compilation crée un fichier PremierProgramme.class
• Le fichier est exécuté par la commande java PremierProgramme
• Le résultat obtenu est l’affichage de Welcome! sur l’écran.
Dr P. PODA, MC, Fev -2025 33
CHAPITRE 2 :
INTRODUCTION À LA POO
AVEC JAVA
6-Utilisation des classes
Déclaration d’un objet
•L’utilisation d’une classe requiert qu’elle soit
instanciée. Concrètement, Il y a création d’un objet
précédée de sa déclaration.
• Syntaxe de déclaration d’un objet :
NomClasse objet ;
Exemple : Enfant doudou ;
• Cette instruction déclare un objet de la classe
NomClasse mais ne le crée pas.
Dr P. PODA, MC, Fev -2025 35
Création d’un objet
•Pour créer un objet après l’avoir déclaré il suffit d’écrire
l’instruction selon la syntaxe suivante :
objet = new NomClasse(arguments) ;
où arguments est la liste des arguments à fournir
au constructeur de la classe appelée pour créer
l’objet.
• Exemple : doudou = new Enfant( );
Dr P. PODA, MC, Fev -2025 36
Création d’un objet
•La déclaration et la création d’un objet peuvent être
regroupées en une seule instruction :
NomClasse nomObjet = new NomClasse(arguments) ;
Exemple : Enfant doudou = new Enfant();
•On accède aux méthodes et aux attributs comme suit :
•nomObjet.methode(arguments effectifs) ;
•nomObjet.attribut ;
Dr P. PODA, MC, Fev -2025 37
Exemple d’utilisation d’objets (1/2)
class Ecriture
{
String chaine = "encore une fois";
void ecrire(String autreChaine)
{
System.out.println(chaine);
System.out.println(autreChaine);
}
}
…/…
Dr P. PODA, MC, Fev -2025 38
Exemple d’utilisation d’objets (2/2)
public class PourFeliciter
{
public static void main(String[] arg)
{
Ecriture ecrivain;
ecrivain = new Ecriture( );
ecrivain.ecrire("Bravo");
ecrivain.chaine = "et pour finir";
ecrivain.ecrire("Au revoir");
}
}
Dr P. PODA, MC, Fev -2025 39
CHAPITRE 2 :
INTRODUCTION À JAVA
7- Les constructeurs
Définition
• Le constructeur est une méthode qui est exécutée au
moment de la création d’un objet.
• Le constructeur sert à initialiser les attributs
contenus dans les objets.
• Le constructeur porte le même nom que sa classe.
• Le constructeur ne retourne pas de valeur mais ne
mentionne pas void au début de sa déclaration.
Dr P. PODA, MC, Fev -2025 41
Définition
• Toute classe possède au moins un constructeur.
Si une classe ne définit pas de constructeur, un
constructeur vide est créé automatiquement par
défaut.
•Un constructeur est une fonction (méthode) qui
est appelée par le biais de l’opérateur new :
nomObjet = new Constructeur(arguments);
Dr P. PODA, MC, Fev -2025 42
Exemple de constructeur (1)
class Incremente
{ int increment;
int petitPlus;
Incremente(int i, int petit)
{ increment = i;
petitPlus = petit;
}
int additionne(int n)
{ return (n + increment + petitPlus);
}
} …/…
Dr P. PODA, MC, Fev -2025 43
Exemple de constructeur (2)
…/…
class Constructeur
{
public static void main(String [] arg)
{
Incremente monAjout = new Incremente(10,1);
System.out.println(monAjout.additionne(5));
}
}
Dr P. PODA, MC, Fev -2025 44
Le mot-clé this
• Le mot clé this sert à référencer toute instance de la classe en
cours de définition.
•Plusieurs cas de son utilisation sont rencontrés :
•(i) dans les constructeurs/méthodes où les attributs de la
classe et les arguments portent exactement le même nom :
voir exemple à suivre ;
•(ii) quand une méthode prend en paramètre un objet de la
classe en cours de définition (appel de la méthode) :
objet.methode(this);
•(iii) quand une méthode doit retourner un objet de la classe
en cours de définition : return this;
Dr P. PODA, MC, Fev -2025 45
Le mot-clé this
• Plusieurs cas de son utilisation sont rencontrés :
•(iv) dans un constructeur pour faire appel à un autre
constructeur de la même classe en cours de définition :
this(args);
•(v) pour invoquer une méthode ou un attribut de la classe
en cours de définition (ce dernier cas n’est pas nécessaire
mais s’inscrit dans la même logique) : this.methode(args);
ou this.attribut;
Dr P. PODA, MC, Fev -2025 46
this : exemple d’Utilisation dans une méthode
class Incremente
{ int increment; int petitPlus;
Incremente(int increment, int petit)
{
this.increment = increment; /* attribut de la clase =
argument du constructeur*/
petitPlus = petit;
}
int additionne(int petitPlus)
{ return (petitPlus + increment + this.petitPlus); }
} …/…
Dr P. PODA, MC, Fev -2025 47
this : exemple d’Utilisation dans une méthode
…/…
class Constructeur
{
public static void main(String [] arg)
{
Incremente monAjout = new Incremente(10,1);
System.out.println(monAjout.additionne(5));
}
}
Dr P. PODA, MC, Fev -2025 48
CHAPITRE 2 :
INTRODUCTION À LA POO
AVEC JAVA
8- Attributs et Méthodes
Attribut : Définition
•Un attribut correspond à une variable ou une constante
pouvant prendre une valeur différente pour chaque objet
(instance) de la classe.
•Tous les objets d’une même classe ont les mêmes
attributs, mais chaque objet associe à ces attributs des
valeurs qui lui sont propres.
• La syntaxe de déclaration d’un attribut dans une classe
suit le format suivant :
[<modificateur>] type nom_attribut ;
Exemple : private int b ;
Dr P. PODA, MC, Fev -2025 50
Attribut : plusieurs types
•Les attributs représentent les données d'une classe .
•Ce sont des variables pouvant être :
•des variables d'instance;
•des variables de classe;
•ou des constantes.
Dr P. PODA, MC, Fev -2025 51
Attribut : plusieurs types
qAttribut comme variable d'instance : ce sont des
variables simplement déclarées dans le corps de la classe.
•Exemple :
public class MaClasse {
public int valeur1 ;
int valeur2 ;
protected int valeur3 ;
private int valeur4 ;
}
•Chaque instance de la classe a accès à sa propre
occurrence de la variable.
Dr P. PODA, MC, Fev -2025 52
Attribut : plusieurs types
q Attribut comme constante :
•Une constante est une variable définie avec le mot
clé final ;
•La valeur d’une constante ne peut être modifiée une
fois initialisée.
•Exemple de constante : final double PI = 3.14 ;
Dr P. PODA, MC, Fev -2025 53
Attribut : plusieurs types
qAttribut comme variable de classe :
•Une variable de classe est une variable associée à une
classe et non aux instances de cette classe.
•Une variable de classe est partagée par toutes les instances
de la classe.
•Les variables de classe sont préfixées par le mot clé static.
•On accède à une variable de classe en faisant précéder le
nom de cette variable par le nom de la classe suivi d’un
point.
Dr P. PODA, MC, Fev -2025 54
Attribut : plusieurs types
qVARIABLE DE CLASSE : EXEMPLE
•Exemple :
La classe java.lang.Math contient la valeur de PI
class Math
{
public static final double PI=3.141592653589793d ;
…
}
•Utilisation : Math.PI
Dr P. PODA, MC, Fev -2025 55
Méthodes : définition
•Les méthodes sont les opérations qu’on peut appliquer
aux objets.
•Les méthodes permettent de changer l’état des objets
ou de calculer des valeurs.
•Plusieurs méthodes d’une même classe peuvent avoir le
même nom, mais des paramètres différents (surcharge)
•Une méthode peut elle aussi posséder des modificateurs.
Dr P. PODA, MC, Fev -2025 56
Méthodes : syntaxe générale
•Syntaxe générale de définition :
[<modificateur>] type nomMethode(type1 arg1, type2
arg2, …, typeN argN)
{
//code de la méthode
}
•type correspond au type retourné par la méthode et peut
être un type élémentaire, void ou un objet.
Dr P. PODA, MC, Fev -2025 57
Méthodes : passage de paramètres
•Les arguments sont passés par valeur : la méthode fait
une copie de la variable qui lui est locale.
• Lorsqu'un objet est passé en paramètre, ce n'est pas
l'objet lui même qui est passé mais une référence (sur
l'objet).
•Il est possible de modifier l'objet grâce à ses méthodes
mais il n'est pas possible de remplacer la référence
contenue dans la variable passée en paramètre : ce
changement n'aura lieu que localement à la méthode.
Dr P. PODA, MC, Fev -2025 58
Méthodes : passage de paramètres
•Pour transmettre des arguments par référence à une méthode,
il faut les encapsuler dans un objet qui prévoit les méthodes
nécessaires pour les mises à jour.
•Si un objet obj transmet sa variable d'instance v en paramètre
à une méthode m, deux situations sont possibles :
•si v est une variable primitive alors elle est passée par valeur :
il est impossible de la modifier dans m pour que v en retour
contienne cette nouvelle valeur.
•si v est un objet alors m pourra modifier l'objet en utilisant
une méthode de l'objet passé en paramètre.
Dr P. PODA, MC, Fev -2025 59
Méthodes : méthode main()
•La méthode main() de la classe principale d'une
application doit être déclarée de la façon suivante :
public static void main (String args[ ]);
args étant un identificateur de l’argument reste le seul
élément pouvant être ici personnalisé.
•Cette déclaration de la méthode main() est imposée par la
machine virtuelle pour reconnaitre le point d'entrée d'une
application.
•Si la déclaration de la méthode main() diffère, une
exception sera levée lors de la tentative d'exécution par la
machine virtuelle.
Dr P. PODA, MC, Fev -2025 60
Méthodes : valeur de retour
•La valeur de retour de la méthode doit être transmise par
l'instruction return qui la (méthode) termine; toute autre
instruction suivant return étant ignorée.
•Si la méthode ne retourne rien, elle est de type void, alors
l’instruction return n’est pas requise.
•Si la méthode retourne un tableau alors les caractères ‘[’
et ‘]’ peuvent être précisés après le type de retour ou
après la liste des paramètres comme dans l’exemple ci-
après:
int[] valeurs() { ... }
int valeurs()[] { ... }
Dr P. PODA, MC, Fev -2025 61
Méthodes : NOMBRE VARIABLE D’ARGUMENTS
•Cette fonctionnalité, permet de transmettre
un nombre variable d'arguments d'un type
donné à une méthode.
•Les arguments seront transmis comme un
tableau.
•On peut transmettre soit un tableau, soit une
liste unitaire mais pas les deux en même
temps.
Dr P. PODA, MC, Fev -2025 62
Méthodes : NOMBRE VARIABLE D’ARGUMENTS
Exemple de liste variable d’arguments
public class VarArgs
{
public static void main(String[] args)
{ new VarArgs () ; }
public VarArgs ()
{ System.out.println(additionner (1,2,3)) ;
System.out.println (additionner (4,5,6,7,8,9)) ; }
public int additionner (int ... valeurs) // … indique une liste variable d'entiers
{ int total = 0 ;
for (int val : valeurs) total += val ;
return total ; }
}
Dr P. PODA, MC, Fev -2025 63
Méthodes de classe
•Une méthode de classe est une méthode associée à une
classe et non à une instance de cette classe.
•Les méthodes de classe sont préfixées par le mot clé
static.
•Une méthode de classe est appelable sans avoir à créer
d’objet de cette classe.
•Une méthode de classe est appelée en préfixant le nom
de la méthode par le nom de la classe suivi d’un point.
Dr P. PODA, MC, Fev -2025 64
Méthodes de classe : exemples
•Exemple 1 : La classe java.lang.Math contient beaucoup de
méthodes static
class Math {
…
public static int max( int a, int b);
public static double sqrt( double a ) ;
public static double sin( double a ) ;
…
}
•Utilisation: Math.sqrt (3.678) ;
Dr P. PODA, MC, Fev -2025 65
Méthodes de classe : exemples
•Exemple 2 :
class MathStuff
{
static int halfInt (int x)
{
return x/2 ;
}
}
•Utilisation: MathStuff.halfInt (10) ;
Dr P. PODA, MC, Fev -2025 66
Attributs/méthodes de classe : importation
statique
•L'importation statique allège l'écriture pour l'accès aux
données et aux méthodes statiques d'une classe.
import static java.lang.Math.* ; // Nouveauté: mot clé static
public class TestStaticImport {
public static void main (String args []) {
new TestStaticImport () ;
}
public TestStaticImport () {
System.out.println (PI) ; // Remplace Math.PI grâce à
//l'importation statique
} }
Dr P. PODA, MC, Fev -2025 67
Exemple d’utilisation d’attribut et de méthode (1)
class Repetiteur
{
private String nom;
private int nbRepetitions;
String message="travaillons";
Repetiteur(String nom, int nbRepetitions)
{
this.nom = nom;
this.nbRepetitions = nbRepetitions;
}
…/…
Dr P. PODA, MC, Fev -2025 68
Exemple d’utilisation (2)
…/…
void repete()
{
for(int i=0; i<=nbRepetitions; i++)
System.out.println(message);
}
public String toString()
{
return nom + "repete : " + message;
}
…/…
Dr P. PODA, MC, Fev -2025 69
Exemple d’utilisation (3)
…/…
public static void main(String[] argv)
{
int repetition = Integer.parseInt(argv[0]);
Repetiteur ecrivain = new Repetiteur(‘’Ali’’,repetition);
ecrivain.repete(); // possible car repete() non privée
// par contre ecrivain.nom interdit car nom est private
ecrivain.message = "reposons nous";
System.out.println(ecrivain.message);
}
}
Dr P. PODA, MC, Fev -2025 70
Un plus!
• parseInt : fonction qui permet de
convertir une chaîne en entier
• Elle est statique car appliquée
directement à une classe (Integer) et
non à un objet.
Dr P. PODA, MC, Fev -2025 71
CHAPITRE 2 :
INTRODUCTION À JAVA
9- Droits d’accès
Droits d’accès
•Les droits d’accès sont régis par des modificateurs
qui se placent par convention avant le type de
l'objet.
•Les modificateurs s'appliquent aux classes et/ou
aux méthodes et/ou aux attributs.
•Les modificateurs ne peuvent pas être utilisés
pour qualifier des variables locales : seules les
variables d'instance et de classe peuvent en
profiter.
Dr P. PODA, MC, Fev -2025 73
Droits d’accès
•Les modificateurs assurent le contrôle des
conditions d'héritage, d'accès aux éléments et de
modification de données par les autres objets.
•Java implémente quatre types de modificateurs
d’accès : public, , protected,
private.
•Lors de la conception d’une classe, il faut décider
des méthodes/attributs qui seront visibles à
l’extérieur de cette classe.
Dr P. PODA, MC, Fev -2025 74
Droits d’accès
•private : visible uniquement au sein de la classe.
•public : visible partout
•Le droit par défaut est une visibilité des
classes/attributs/méthodes pour toutes les classes au sein
d’un même package. Il n’y a pas de mot clé pour préciser
explicitement cet accès.
•protected : visible uniquement dans la classe et dans les
classes dérivées de cette classe.
Dr P. PODA, MC, Fev -2025 75
Tour d’horizon des modificateurs (en général)
Dr P. PODA, MC, Fev -2025 76
Modificateur Principe
par défaut visibilité des classes/attributs/méthodes pour toutes les classes d’un même
package
public attribut, méthode ou classe visible par tous les autres objets
private Un attribut/méthode privé(e) ne peut être utilisée que dans les méthodes de la
même classe. Un attribut/méthode privé(e) ne peut pas être utilisée par une
instance. Pour 1e classe, elle n’est pas utilisée à l’exception des classes dites
internes
protected Méthode/attribut visible uniquement dans la classe et dans ses classes dérivées.
final Attribut constant. Méthode qui ne peut être redéfinie. Classe qui ne peut être
héritée.
static Méthode ou attribut de classe. Impossible d'appeler une méthode d'instance ou
d'accéder à une variable d'instance à partir d'une méthode de classe.
abstract Classe abstraite ne peut être instanciée telle quelle. Méthode abstraite =
méthode dont on veut forcer l’implémentation dans une sous-classe.
synchronized la méthode fait partie d'un thread. Lorsqu'elle est appelée, elle « barre » l'accès à
son instance. L'instance est à nouveau libérée à la fin de son exécution.
native Méthode dont le code source est écrit dans un autre langage que Java.
CHAPITRE 2 :
INTRODUCTION À LA POO
AVEC JAVA
10- Éléments de conception des classes
10. Conception des classes : notion
de contrat et d’implémentation
•En Java, quoique l’encapsulation des données
n’est pas obligatoire, il est vivement conseillé
d’y recourir systématiquement en déclarant
tous les attributs privés.
•Une bonne conception orientée objets s’appuie
généralement sur la notion de contrat.
Dr P. PODA, MC, Fev -2025 78
10. Conception des classes : notion de
contrat et d’implémentation
•La notion de contrat définit les « engagements » d’une classe
vis-à-vis de ses utilisateurs.
•La notion de contrat considère qu’une classe est caractérisée
par un ensemble de services définis par :
•les entêtes de ses méthodes publiques,
•le comportement de ces méthodes.
•La notion d’implémentation est constituée du reste de la
classe, qui n’a pas à être connu de l’utilisateur (de la classe),
c-à-d :
•les attributs et les méthodes privés,
•le corps des méthodes publiques.
Dr P. PODA, MC, Fev -2025 79
10. Conception des classes :
typologie des méthodes d’une classe
q Une classe peut comporter plusieurs types de méthodes :
• les constructeurs;
• les méthodes d’accès (ou accesseurs) : permettent l’accès en
lecture à certains attributs de la classe;
• les méthodes d’altération (ou mutateurs) : donnent l’accès en
écriture à certains attributs de la classe.
•Autres types de méthodes.
q Les méthodes d’accès sont souvent nommés sous la forme
getXXX tandis que les méthodes d’altération le sont sous la
forme setXXX.
Dr P. PODA, MC, Fev -2025 80
Pour aller plus loin
•Plusieurs liens vers des cours et
tutoriels de Java à l’url :
•http://java.developpez.com/cours/
Dr P. PODA, MC, Fev -2025 81
Éléments de Bibliographie JAVA en français: livres
•Titre : Programmer en Java,
Auteur: Claude Delannoy - 7è édition Eyrolles 2010.
•Titre : Programmer en Java,
Auteur: Claude Delannoy - 9è édition Eyrolles 2014.
•Titre: Le langage Java: concepts et pratique
Auteur: Irène Charon - Editions Hermès, mars 2000
•Titre: Java 2, le guide du développeur;
Auteur: PierreYves Saumont et Antoine Mirecourt – édition:
Osman Eyrolles Multimedia
Dr P. PODA, MC, Fev -2025 82
Éléments de Bibliographie JAVA en français : sites web
 http://www.infres.enst.fr/~charon/coursJava (cours complet +
exos et corrections)
 Polycopié: JAVA programmation orientée objet, Patrick Ducrot,
Ecole Nationale Supérieure d’Ingénieurs de Caen.
http://www.ducrot.org/java/PolycopieJAVA.pdf
 http://www.ensta.fr/java/java_index.htm?
 http://www.developpez.com/java/cours.htm
 http://www.larcher.com/eric/guides/javactivex/
 http://cedric.cnam.fr/~farinone/Java
Dr P. PODA, MC, Fev -2025 83

programmationjavascriptpour2emea_P02.pdf

  • 1.
    CHAPITRE 2. INTRODUCTION ÀLA POO AVEC JAVA Java, un Langage de programmation orientée objet
  • 2.
    SOMMAIRE •Chapitre 1 :Concepts fondamentaux de la POO •Chapitre 2 : Introduction à la POO avec JAVA •Chapitre 3 :Techniques de base de la programmation en JAVA •Chapitre 4 : Classes et Héritage en Java •Chapitre 5 : Exceptions en Java Dr P. PODA, MC, Fev -2025 2
  • 3.
    Chapitre 2 :Introduction à la POO avec JAVA 1. Naissance et développement de JAVA 1. Caractéristiques de JAVA 2. Historique de JAVA 2. Environnement de JAVA 1. Java Developer’s Kit (JDK) 2. Le code source 3. la compilation 4. La machine virtuelle 3. Les paquetages (packages) 2. Construction de package 3. Utilisation des classes d’un package 4. API de JAVA 4. Les types de programme de JAVA 5. Les Classes en JAVA 1. Architecture d’une classe JAVA 2. Les modificateurs de classe 3. Conventions d’écriture en JAVA 4. Un premier exemple Dr P. PODA, MC, Fev -2025 3
  • 4.
    Chapitre 2 :Introduction à la POO avec JAVA 6. Utilisation des classes 1. Déclaration d’un objet 2. Création d’un objet 3. Un exemple d’utilisation d’objets 7. Les constructeurs 1. Définition 2. Le mot clé this 3. Exemple 8. Attributs et méthodes 1. Définition d’attribut et de méthode 2. Modificateurs de méthodes et variables 9. Droits d’accès 10. Eléments de conception des classes Dr P. PODA, MC, Fev -2025 4
  • 5.
    CHAPITRE 2: À LA POOAVEC JAVA 1- Naissance et développement de JAVA
  • 6.
    Caractéristiques de JAVA •JAVA est un langage de P.O.O proche de C++ • JAVA est portable (machine virtuelle indépendante des architectures matérielle comme logicielle) • JAVA est simple (pas de pointeur) • JAVA autorise le multitâches (multithreading; un thread: processus qui s’exécutent simultanément à l’intérieur d’un unique programme) • JAVA contient une très riche bibliothèque de classes (packages) qui permettent de créer des interfaces graphiques, d’utiliser des données multimédia, de communiquer à travers les réseaux, d’accéder à des BD, etc. Dr P. PODA, MC, Fev -2025 6
  • 7.
    Caractéristiques de Java Java est au cœur de plusieurs éditions standards de développement logiciel :  Java ME (anciennement J2ME: Java 2 Micro Edition) est prévu pour le développement d'applications embarquées, notamment sur des assistants personnels (PDA) et terminaux mobiles;  Java SE (anciennement J2SE: Java 2 Standard Edition) est destiné au développement d'applications pour ordinateurs personnels (PC);  Java EE (anciennement J2EE : Java 2 Enterprise Edition): destiné à un usage professionnel avec la mise en œuvre de serveurs. Dr P. PODA, MC, Fev -2025 7
  • 8.
    Historique de Java •1991 : Projet de recherche chez Sun Microsystems sur un langage de pilotage des appareils électroniques a aboutit à la création du l.o.o OAK • 1995 : Java utilisé pour la réalisation du logiciel de navigation web Hotjava. • 1996 : Java version 1.01 et version 1.02 • 1998: Java version 1.1 • 1999: Java 2 (version 1.2) • 2002: Java version 1.4 • 2004: Java version 5.0 • … • 2017 : Java 9 • 17 Mars 2020 : Java SE 14 • 19 Janvier 2021 : Java SE 15 • Mars 2021 : Java SE 16 • Mars 2022 : Java SE 18 • Mars 2023 : Java 20 (JDK 20) Dr P. PODA, MC, Fev -2025 8
  • 9.
    CHAPITRE 2 : INTRODUCTIONÀ LA POO AVEC JAVA 2- Environnement de JAVA
  • 10.
    Le Java Developer’sKit (JDK)  Les éléments constitutifs du jdk sont:  Le compilateur (javac)  L’interpréteur (java)  L’appletviewer ou inspecteur d’applet  etc…  Le jdk comprend par ailleurs l’API de java  le kit JDK ne comporte pas d’éditeur Dr P. PODA, MC, Fev -2025 10
  • 11.
    Le code source •Uneapplication Java est généralement composée de plusieurs fichiers source. •Les fichiers source de java ont l’extension .java. •Le nom du fichier source java doit être le même que celui de la classe publique que ce fichier renferme. Dr P. PODA, MC, Fev -2025 11
  • 12.
    La compilation La compilationva transformer le code source en J-code ou byte-code java. prompt MS-DOS> javac nom_fich.java  Création d’un fichier nom_fich.class Dr P. PODA, MC, Fev -2025 12
  • 13.
    La machine virtuellejava •Le code java comprend des instructions écrites pour une certaine machine virtuelle java (JVM: JavaVirtual Machine) •Un programme java est exécuté sur tout ordinateur sur lequel une machine virtuelle est disponible •Une application sera exécutée par l’interpréteur de java prompt MS-DOS> java nom_fich Dr P. PODA, MC, Fev -2025 13
  • 14.
    CHAPITRE 2 : INTRODUCTIONÀ JAVA 3- Les Paquetages
  • 15.
    Les paquetages (packages) •Lesclasses Java sont organisées (hiérarchiquement) en paquetages (packages) •Un paquetage : regroupe plusieurs classes qui collaborent entre elles dans une application •Avec les paquetages, un certain niveau de protection est défini (voir notion de visibilité) Dr P. PODA, MC, Fev -2025 15
  • 16.
    Les paquetages :construction • Pour ranger une classe dans un paquetage, il faut insérer la ligne suivante au début du fichier source : package nomDuPackage ; • Un paquetage qui doit contenir des classes et donc des fichiers est un répertoire. • Le paquetage a le même nom que le répertoire qui le contient. Dr P. PODA, MC, Fev -2025 16
  • 17.
    Les paquetages :utilisation des classes • On peut importer les paquetages de deux manières différentes : (i) import nomDuPackage.* ; (ii) import nomDupackage.nomDeLaclasse ; Dr P. PODA, MC, Fev -2025 17
  • 18.
    API de Java(quelques exemples) •Java.lang : contient les classes les plus fondamentales du langage. •Il contient la classe Object qui est la super classe, primitive de toutes les classes •Il est importé par défaut •Exemples : Java.lang.Math, Java.lang.System, Java.lang.String •Java.awt: (awt pour AbstractWindows Toolkit) contient les classes pour fabriquer des interfaces graphiques •Exemple de méthodes : drawLine, drawRect Dr P. PODA, MC, Fev -2025 18
  • 19.
    API de Java(quelques exemples) •Java.applet : utile pour faire des applets qui sont des applications utilisables à travers le web •java.io : contient les classes nécessaires aux E/S •Java.net : contient les classes d’accès aux réseaux •Java.util : paquetage des classes d’utilitaires (Random, Date, etc.) •Détails : http://download.oracle.com/javase/7/docs/api/ (anciennement http://java.sun.com/j2se/1.5.0/docs/api/index.html) Dr P. PODA, MC, Fev -2025 19
  • 20.
    CHAPITRE 2 : INTRODUCTIONÀ JAVA 4-Types de programmes JAVA
  • 21.
    Types de programmesjava • Applications Java : programmes écrits en Java • Applets Java : programmes lancés à partir d’un programme HTML par un logiciel de navigation • Servlets : composants Java s'exécutant côté serveur ; utilisé couramment dans la génération dynamique de pageWeb. • les midlets : applications mobiles • NB. Javascript est un langage largement indépendant, dont le code est directement inséré dans un fichier HTML • Javascript surtout destiné à l’enrichissement graphique et au pilotage des pages HTML Dr P. PODA, MC, Fev -2025 21
  • 22.
    CHAPITRE 2 : INTRODUCTIONÀ LA POO AVEC JAVA 5- Les classes en JAVA
  • 23.
    Les classes deJava Dr P. PODA, MC, Fev -2025 23 Une classe contient : - des attributs - et des méthodes
  • 24.
    Architecture d’une classeJava L'architecture d'une classe en Java est constituée de deux parties : • l’en-tête de la classe • le corps de la classe Dr P. PODA, MC, Fev -2025 24
  • 25.
    Architecture d’une classeJava L’EN-TÊTE DE LA CLASSE : [Modificateur] class <NomClasse> [extends <superclass>] [implements <Interface>] •Légende : [ ]: optionnel <>: obligatoire en gras (et en rouge) : mot clé Dr P. PODA, MC, Fev -2025 25
  • 26.
    Architecture d’une classeJava LE CORPS DE LA CLASSE :  Il donne la définition de la classe.  Il contient les déclarations des attributs (variables) et des méthodes. La syntaxe d’une définition de classe est la suivante : entête { déclarations des attributs (variables) définition des méthodes } Dr P. PODA, MC, Fev -2025 26
  • 27.
    Les modificateurs declasse Modificateur Définition abstract Aucun objet ne peut instancier cette classe. Seules les classes abstraites peuvent déclarer des méthodes abstraites. final Les classes final ne sont pas héritables private N’a de sens que pour les classes internes (notion avancée) public La classe est accessible par toutes les autres classes des autres packages. Elle est visible partout Dr P. PODA, MC, Fev -2025 27
  • 28.
    Conventions d’écriture enJava Type Convention Exemple Nom d’une classe Débute par une majuscule class Polygone Nom d’un objet Débute par une minuscule; peut s’étaler sur plusieurs mots chacun commençant par une majuscule à l’exception du premier premierObjet Nom de méthode Débute par une minuscule sauf pour le constructeur void ecrire() Constante S’écrit en majuscules A_CONSTANT Dr P. PODA, MC, Fev -2025 28
  • 29.
    Classe : unpremier exemple Dr P. PODA, MC, Fev -2025 29 public class Enfant { String nom; String contactMaman; int age; public void feterAnniversaire() { age = age +1; System.out.println(’’Joyeux anniversaire’’); } public String appelerParents() { return contactMaman; } }
  • 30.
    Classe : classeprogramme Java • A priori, une classe a vocation à être instanciée pour donner naissance à des objets. • Si on veut mettre en œuvre un programme Java, il faut nécessairement écrire une classe. • La classe qui met en œuvre le programme Java est unique par projet et se distingue des classes ordinaires par la présence de la méthode main(). Dr P. PODA, MC, Fev -2025 30
  • 31.
    Classe : exemplede classe programme public class PremierProgramme { public static void main(String[] arg) { System.out.println(’’Welcome!’’); } } Dr P. PODA, MC, Fev -2025 31 classe objet méthode
  • 32.
    Classe : exemplede classe programme public : visible de partout, y compris des autres packages static : méthode de classe System.out.println : la méthode println écrit sur l’écran la chaîne de caractères passée en paramètres à cette méthode. out : objet désignant l’écran, se trouve dans la classe System appartenant au package java.lang Dr P. PODA, MC, Fev -2025 32
  • 33.
    Classe : exemplede classe programme • La classe PremierProgramme doit se trouver dans le fichier PremierProgramme.java • Il est compilé par la commande javac PremierProgramme.java • La compilation crée un fichier PremierProgramme.class • Le fichier est exécuté par la commande java PremierProgramme • Le résultat obtenu est l’affichage de Welcome! sur l’écran. Dr P. PODA, MC, Fev -2025 33
  • 34.
    CHAPITRE 2 : INTRODUCTIONÀ LA POO AVEC JAVA 6-Utilisation des classes
  • 35.
    Déclaration d’un objet •L’utilisationd’une classe requiert qu’elle soit instanciée. Concrètement, Il y a création d’un objet précédée de sa déclaration. • Syntaxe de déclaration d’un objet : NomClasse objet ; Exemple : Enfant doudou ; • Cette instruction déclare un objet de la classe NomClasse mais ne le crée pas. Dr P. PODA, MC, Fev -2025 35
  • 36.
    Création d’un objet •Pourcréer un objet après l’avoir déclaré il suffit d’écrire l’instruction selon la syntaxe suivante : objet = new NomClasse(arguments) ; où arguments est la liste des arguments à fournir au constructeur de la classe appelée pour créer l’objet. • Exemple : doudou = new Enfant( ); Dr P. PODA, MC, Fev -2025 36
  • 37.
    Création d’un objet •Ladéclaration et la création d’un objet peuvent être regroupées en une seule instruction : NomClasse nomObjet = new NomClasse(arguments) ; Exemple : Enfant doudou = new Enfant(); •On accède aux méthodes et aux attributs comme suit : •nomObjet.methode(arguments effectifs) ; •nomObjet.attribut ; Dr P. PODA, MC, Fev -2025 37
  • 38.
    Exemple d’utilisation d’objets(1/2) class Ecriture { String chaine = "encore une fois"; void ecrire(String autreChaine) { System.out.println(chaine); System.out.println(autreChaine); } } …/… Dr P. PODA, MC, Fev -2025 38
  • 39.
    Exemple d’utilisation d’objets(2/2) public class PourFeliciter { public static void main(String[] arg) { Ecriture ecrivain; ecrivain = new Ecriture( ); ecrivain.ecrire("Bravo"); ecrivain.chaine = "et pour finir"; ecrivain.ecrire("Au revoir"); } } Dr P. PODA, MC, Fev -2025 39
  • 40.
    CHAPITRE 2 : INTRODUCTIONÀ JAVA 7- Les constructeurs
  • 41.
    Définition • Le constructeurest une méthode qui est exécutée au moment de la création d’un objet. • Le constructeur sert à initialiser les attributs contenus dans les objets. • Le constructeur porte le même nom que sa classe. • Le constructeur ne retourne pas de valeur mais ne mentionne pas void au début de sa déclaration. Dr P. PODA, MC, Fev -2025 41
  • 42.
    Définition • Toute classepossède au moins un constructeur. Si une classe ne définit pas de constructeur, un constructeur vide est créé automatiquement par défaut. •Un constructeur est une fonction (méthode) qui est appelée par le biais de l’opérateur new : nomObjet = new Constructeur(arguments); Dr P. PODA, MC, Fev -2025 42
  • 43.
    Exemple de constructeur(1) class Incremente { int increment; int petitPlus; Incremente(int i, int petit) { increment = i; petitPlus = petit; } int additionne(int n) { return (n + increment + petitPlus); } } …/… Dr P. PODA, MC, Fev -2025 43
  • 44.
    Exemple de constructeur(2) …/… class Constructeur { public static void main(String [] arg) { Incremente monAjout = new Incremente(10,1); System.out.println(monAjout.additionne(5)); } } Dr P. PODA, MC, Fev -2025 44
  • 45.
    Le mot-clé this •Le mot clé this sert à référencer toute instance de la classe en cours de définition. •Plusieurs cas de son utilisation sont rencontrés : •(i) dans les constructeurs/méthodes où les attributs de la classe et les arguments portent exactement le même nom : voir exemple à suivre ; •(ii) quand une méthode prend en paramètre un objet de la classe en cours de définition (appel de la méthode) : objet.methode(this); •(iii) quand une méthode doit retourner un objet de la classe en cours de définition : return this; Dr P. PODA, MC, Fev -2025 45
  • 46.
    Le mot-clé this •Plusieurs cas de son utilisation sont rencontrés : •(iv) dans un constructeur pour faire appel à un autre constructeur de la même classe en cours de définition : this(args); •(v) pour invoquer une méthode ou un attribut de la classe en cours de définition (ce dernier cas n’est pas nécessaire mais s’inscrit dans la même logique) : this.methode(args); ou this.attribut; Dr P. PODA, MC, Fev -2025 46
  • 47.
    this : exempled’Utilisation dans une méthode class Incremente { int increment; int petitPlus; Incremente(int increment, int petit) { this.increment = increment; /* attribut de la clase = argument du constructeur*/ petitPlus = petit; } int additionne(int petitPlus) { return (petitPlus + increment + this.petitPlus); } } …/… Dr P. PODA, MC, Fev -2025 47
  • 48.
    this : exempled’Utilisation dans une méthode …/… class Constructeur { public static void main(String [] arg) { Incremente monAjout = new Incremente(10,1); System.out.println(monAjout.additionne(5)); } } Dr P. PODA, MC, Fev -2025 48
  • 49.
    CHAPITRE 2 : INTRODUCTIONÀ LA POO AVEC JAVA 8- Attributs et Méthodes
  • 50.
    Attribut : Définition •Unattribut correspond à une variable ou une constante pouvant prendre une valeur différente pour chaque objet (instance) de la classe. •Tous les objets d’une même classe ont les mêmes attributs, mais chaque objet associe à ces attributs des valeurs qui lui sont propres. • La syntaxe de déclaration d’un attribut dans une classe suit le format suivant : [<modificateur>] type nom_attribut ; Exemple : private int b ; Dr P. PODA, MC, Fev -2025 50
  • 51.
    Attribut : plusieurstypes •Les attributs représentent les données d'une classe . •Ce sont des variables pouvant être : •des variables d'instance; •des variables de classe; •ou des constantes. Dr P. PODA, MC, Fev -2025 51
  • 52.
    Attribut : plusieurstypes qAttribut comme variable d'instance : ce sont des variables simplement déclarées dans le corps de la classe. •Exemple : public class MaClasse { public int valeur1 ; int valeur2 ; protected int valeur3 ; private int valeur4 ; } •Chaque instance de la classe a accès à sa propre occurrence de la variable. Dr P. PODA, MC, Fev -2025 52
  • 53.
    Attribut : plusieurstypes q Attribut comme constante : •Une constante est une variable définie avec le mot clé final ; •La valeur d’une constante ne peut être modifiée une fois initialisée. •Exemple de constante : final double PI = 3.14 ; Dr P. PODA, MC, Fev -2025 53
  • 54.
    Attribut : plusieurstypes qAttribut comme variable de classe : •Une variable de classe est une variable associée à une classe et non aux instances de cette classe. •Une variable de classe est partagée par toutes les instances de la classe. •Les variables de classe sont préfixées par le mot clé static. •On accède à une variable de classe en faisant précéder le nom de cette variable par le nom de la classe suivi d’un point. Dr P. PODA, MC, Fev -2025 54
  • 55.
    Attribut : plusieurstypes qVARIABLE DE CLASSE : EXEMPLE •Exemple : La classe java.lang.Math contient la valeur de PI class Math { public static final double PI=3.141592653589793d ; … } •Utilisation : Math.PI Dr P. PODA, MC, Fev -2025 55
  • 56.
    Méthodes : définition •Lesméthodes sont les opérations qu’on peut appliquer aux objets. •Les méthodes permettent de changer l’état des objets ou de calculer des valeurs. •Plusieurs méthodes d’une même classe peuvent avoir le même nom, mais des paramètres différents (surcharge) •Une méthode peut elle aussi posséder des modificateurs. Dr P. PODA, MC, Fev -2025 56
  • 57.
    Méthodes : syntaxegénérale •Syntaxe générale de définition : [<modificateur>] type nomMethode(type1 arg1, type2 arg2, …, typeN argN) { //code de la méthode } •type correspond au type retourné par la méthode et peut être un type élémentaire, void ou un objet. Dr P. PODA, MC, Fev -2025 57
  • 58.
    Méthodes : passagede paramètres •Les arguments sont passés par valeur : la méthode fait une copie de la variable qui lui est locale. • Lorsqu'un objet est passé en paramètre, ce n'est pas l'objet lui même qui est passé mais une référence (sur l'objet). •Il est possible de modifier l'objet grâce à ses méthodes mais il n'est pas possible de remplacer la référence contenue dans la variable passée en paramètre : ce changement n'aura lieu que localement à la méthode. Dr P. PODA, MC, Fev -2025 58
  • 59.
    Méthodes : passagede paramètres •Pour transmettre des arguments par référence à une méthode, il faut les encapsuler dans un objet qui prévoit les méthodes nécessaires pour les mises à jour. •Si un objet obj transmet sa variable d'instance v en paramètre à une méthode m, deux situations sont possibles : •si v est une variable primitive alors elle est passée par valeur : il est impossible de la modifier dans m pour que v en retour contienne cette nouvelle valeur. •si v est un objet alors m pourra modifier l'objet en utilisant une méthode de l'objet passé en paramètre. Dr P. PODA, MC, Fev -2025 59
  • 60.
    Méthodes : méthodemain() •La méthode main() de la classe principale d'une application doit être déclarée de la façon suivante : public static void main (String args[ ]); args étant un identificateur de l’argument reste le seul élément pouvant être ici personnalisé. •Cette déclaration de la méthode main() est imposée par la machine virtuelle pour reconnaitre le point d'entrée d'une application. •Si la déclaration de la méthode main() diffère, une exception sera levée lors de la tentative d'exécution par la machine virtuelle. Dr P. PODA, MC, Fev -2025 60
  • 61.
    Méthodes : valeurde retour •La valeur de retour de la méthode doit être transmise par l'instruction return qui la (méthode) termine; toute autre instruction suivant return étant ignorée. •Si la méthode ne retourne rien, elle est de type void, alors l’instruction return n’est pas requise. •Si la méthode retourne un tableau alors les caractères ‘[’ et ‘]’ peuvent être précisés après le type de retour ou après la liste des paramètres comme dans l’exemple ci- après: int[] valeurs() { ... } int valeurs()[] { ... } Dr P. PODA, MC, Fev -2025 61
  • 62.
    Méthodes : NOMBREVARIABLE D’ARGUMENTS •Cette fonctionnalité, permet de transmettre un nombre variable d'arguments d'un type donné à une méthode. •Les arguments seront transmis comme un tableau. •On peut transmettre soit un tableau, soit une liste unitaire mais pas les deux en même temps. Dr P. PODA, MC, Fev -2025 62
  • 63.
    Méthodes : NOMBREVARIABLE D’ARGUMENTS Exemple de liste variable d’arguments public class VarArgs { public static void main(String[] args) { new VarArgs () ; } public VarArgs () { System.out.println(additionner (1,2,3)) ; System.out.println (additionner (4,5,6,7,8,9)) ; } public int additionner (int ... valeurs) // … indique une liste variable d'entiers { int total = 0 ; for (int val : valeurs) total += val ; return total ; } } Dr P. PODA, MC, Fev -2025 63
  • 64.
    Méthodes de classe •Uneméthode de classe est une méthode associée à une classe et non à une instance de cette classe. •Les méthodes de classe sont préfixées par le mot clé static. •Une méthode de classe est appelable sans avoir à créer d’objet de cette classe. •Une méthode de classe est appelée en préfixant le nom de la méthode par le nom de la classe suivi d’un point. Dr P. PODA, MC, Fev -2025 64
  • 65.
    Méthodes de classe: exemples •Exemple 1 : La classe java.lang.Math contient beaucoup de méthodes static class Math { … public static int max( int a, int b); public static double sqrt( double a ) ; public static double sin( double a ) ; … } •Utilisation: Math.sqrt (3.678) ; Dr P. PODA, MC, Fev -2025 65
  • 66.
    Méthodes de classe: exemples •Exemple 2 : class MathStuff { static int halfInt (int x) { return x/2 ; } } •Utilisation: MathStuff.halfInt (10) ; Dr P. PODA, MC, Fev -2025 66
  • 67.
    Attributs/méthodes de classe: importation statique •L'importation statique allège l'écriture pour l'accès aux données et aux méthodes statiques d'une classe. import static java.lang.Math.* ; // Nouveauté: mot clé static public class TestStaticImport { public static void main (String args []) { new TestStaticImport () ; } public TestStaticImport () { System.out.println (PI) ; // Remplace Math.PI grâce à //l'importation statique } } Dr P. PODA, MC, Fev -2025 67
  • 68.
    Exemple d’utilisation d’attributet de méthode (1) class Repetiteur { private String nom; private int nbRepetitions; String message="travaillons"; Repetiteur(String nom, int nbRepetitions) { this.nom = nom; this.nbRepetitions = nbRepetitions; } …/… Dr P. PODA, MC, Fev -2025 68
  • 69.
    Exemple d’utilisation (2) …/… voidrepete() { for(int i=0; i<=nbRepetitions; i++) System.out.println(message); } public String toString() { return nom + "repete : " + message; } …/… Dr P. PODA, MC, Fev -2025 69
  • 70.
    Exemple d’utilisation (3) …/… publicstatic void main(String[] argv) { int repetition = Integer.parseInt(argv[0]); Repetiteur ecrivain = new Repetiteur(‘’Ali’’,repetition); ecrivain.repete(); // possible car repete() non privée // par contre ecrivain.nom interdit car nom est private ecrivain.message = "reposons nous"; System.out.println(ecrivain.message); } } Dr P. PODA, MC, Fev -2025 70
  • 71.
    Un plus! • parseInt: fonction qui permet de convertir une chaîne en entier • Elle est statique car appliquée directement à une classe (Integer) et non à un objet. Dr P. PODA, MC, Fev -2025 71
  • 72.
    CHAPITRE 2 : INTRODUCTIONÀ JAVA 9- Droits d’accès
  • 73.
    Droits d’accès •Les droitsd’accès sont régis par des modificateurs qui se placent par convention avant le type de l'objet. •Les modificateurs s'appliquent aux classes et/ou aux méthodes et/ou aux attributs. •Les modificateurs ne peuvent pas être utilisés pour qualifier des variables locales : seules les variables d'instance et de classe peuvent en profiter. Dr P. PODA, MC, Fev -2025 73
  • 74.
    Droits d’accès •Les modificateursassurent le contrôle des conditions d'héritage, d'accès aux éléments et de modification de données par les autres objets. •Java implémente quatre types de modificateurs d’accès : public, , protected, private. •Lors de la conception d’une classe, il faut décider des méthodes/attributs qui seront visibles à l’extérieur de cette classe. Dr P. PODA, MC, Fev -2025 74
  • 75.
    Droits d’accès •private :visible uniquement au sein de la classe. •public : visible partout •Le droit par défaut est une visibilité des classes/attributs/méthodes pour toutes les classes au sein d’un même package. Il n’y a pas de mot clé pour préciser explicitement cet accès. •protected : visible uniquement dans la classe et dans les classes dérivées de cette classe. Dr P. PODA, MC, Fev -2025 75
  • 76.
    Tour d’horizon desmodificateurs (en général) Dr P. PODA, MC, Fev -2025 76 Modificateur Principe par défaut visibilité des classes/attributs/méthodes pour toutes les classes d’un même package public attribut, méthode ou classe visible par tous les autres objets private Un attribut/méthode privé(e) ne peut être utilisée que dans les méthodes de la même classe. Un attribut/méthode privé(e) ne peut pas être utilisée par une instance. Pour 1e classe, elle n’est pas utilisée à l’exception des classes dites internes protected Méthode/attribut visible uniquement dans la classe et dans ses classes dérivées. final Attribut constant. Méthode qui ne peut être redéfinie. Classe qui ne peut être héritée. static Méthode ou attribut de classe. Impossible d'appeler une méthode d'instance ou d'accéder à une variable d'instance à partir d'une méthode de classe. abstract Classe abstraite ne peut être instanciée telle quelle. Méthode abstraite = méthode dont on veut forcer l’implémentation dans une sous-classe. synchronized la méthode fait partie d'un thread. Lorsqu'elle est appelée, elle « barre » l'accès à son instance. L'instance est à nouveau libérée à la fin de son exécution. native Méthode dont le code source est écrit dans un autre langage que Java.
  • 77.
    CHAPITRE 2 : INTRODUCTIONÀ LA POO AVEC JAVA 10- Éléments de conception des classes
  • 78.
    10. Conception desclasses : notion de contrat et d’implémentation •En Java, quoique l’encapsulation des données n’est pas obligatoire, il est vivement conseillé d’y recourir systématiquement en déclarant tous les attributs privés. •Une bonne conception orientée objets s’appuie généralement sur la notion de contrat. Dr P. PODA, MC, Fev -2025 78
  • 79.
    10. Conception desclasses : notion de contrat et d’implémentation •La notion de contrat définit les « engagements » d’une classe vis-à-vis de ses utilisateurs. •La notion de contrat considère qu’une classe est caractérisée par un ensemble de services définis par : •les entêtes de ses méthodes publiques, •le comportement de ces méthodes. •La notion d’implémentation est constituée du reste de la classe, qui n’a pas à être connu de l’utilisateur (de la classe), c-à-d : •les attributs et les méthodes privés, •le corps des méthodes publiques. Dr P. PODA, MC, Fev -2025 79
  • 80.
    10. Conception desclasses : typologie des méthodes d’une classe q Une classe peut comporter plusieurs types de méthodes : • les constructeurs; • les méthodes d’accès (ou accesseurs) : permettent l’accès en lecture à certains attributs de la classe; • les méthodes d’altération (ou mutateurs) : donnent l’accès en écriture à certains attributs de la classe. •Autres types de méthodes. q Les méthodes d’accès sont souvent nommés sous la forme getXXX tandis que les méthodes d’altération le sont sous la forme setXXX. Dr P. PODA, MC, Fev -2025 80
  • 81.
    Pour aller plusloin •Plusieurs liens vers des cours et tutoriels de Java à l’url : •http://java.developpez.com/cours/ Dr P. PODA, MC, Fev -2025 81
  • 82.
    Éléments de BibliographieJAVA en français: livres •Titre : Programmer en Java, Auteur: Claude Delannoy - 7è édition Eyrolles 2010. •Titre : Programmer en Java, Auteur: Claude Delannoy - 9è édition Eyrolles 2014. •Titre: Le langage Java: concepts et pratique Auteur: Irène Charon - Editions Hermès, mars 2000 •Titre: Java 2, le guide du développeur; Auteur: PierreYves Saumont et Antoine Mirecourt – édition: Osman Eyrolles Multimedia Dr P. PODA, MC, Fev -2025 82
  • 83.
    Éléments de BibliographieJAVA en français : sites web  http://www.infres.enst.fr/~charon/coursJava (cours complet + exos et corrections)  Polycopié: JAVA programmation orientée objet, Patrick Ducrot, Ecole Nationale Supérieure d’Ingénieurs de Caen. http://www.ducrot.org/java/PolycopieJAVA.pdf  http://www.ensta.fr/java/java_index.htm?  http://www.developpez.com/java/cours.htm  http://www.larcher.com/eric/guides/javactivex/  http://cedric.cnam.fr/~farinone/Java Dr P. PODA, MC, Fev -2025 83