Vous êtes sur la page 1sur 24

ENSEM

POO/JAVA

OBJECTIFS DU COURS

➢ Rappeler les principes de la POO


LANGAGE DE PROGRAMMATION ➢ Maitriser les instruments de base

JAVA pour le développement avec JAVA


➢ Connaitre les bases théoriques pour
approfondir ses connaissances
Année: 2022/2023

Mme S.TALLAL

PARTIE 1
PRISE DE CONNAISSANCE AVEC JAVA
 chapitre1: Qu’est-ce que Java?
 chapitre 2: Eléments de base du langage
Chapitre 1
 chapitre 3: La Programmation Orientée
QU’EST-CE QUE JAVA?
Objet
 chapitre 4:Installer Java, compiler et
exécuter un programme
 chapitre 5: Objets, classes et messages 4

 chapitre 6: Approfondissement +TD


3

1. QU’EST CE QUE JAVA? 1.1 QU’EST CE QUE JAVA?


➢ Java par rapport à d’autres langages ➢ NOM : Appellation Java
➢ Qu’est ce que la machine virtuelle ➢Un langage de programmation
Java? ➢Orienté objets
➢ La plate forme Java
➢Réalisé par Sun Microsystems Inc.
➢ La documentation de Java
➢Conçu pour Internet

5 6

S.TALLAL 1
ENSEM
POO/JAVA

HISTORIQUE
 Java est un langage de programmation orienté objet créé par deux
employés de la société Sun Microsystems : James Gosling et Patrick
Naughton, et présenté officiellement en mai 1995 à la
 Nom : conference SunWorld. (Il a été mis au point à partir de 1990 )
 La société Sun a été ensuite rachetée en 2009 par la société Oracle qui
 ➔en l'honneur à la boisson préférée détient et maintient désormais Java.
 Le but de Java à l'époque était de constituer un langage de
des programmeurs américains , c'est- programmation pouvant être intégré dans les appareils
électroménagers, afin de pouvoir les contrôler, de les rendre
à-dire le café, interactifs, et surtout de permettre une communication entre les
appareils.

 Une partie de la production provient


 Ce programme de développement se situait dans un projet
appelé Green, visant à créer une télécommande universelle (Star 7,
présentée en 1992) comprenant un système d'exploitation capable de
de l'île Java gérer l'ensemble des appareils électroménagers de la maison.

Aussi ,
 A la même époque, Internet faisait son apparition, or Java possèdait
toutes les caractéristiques faisant de lui un langage approprié pour le
7
Web

JAVA PAR RAPPORT À D’AUTRES  Java est un langage de programmation objet,


LANGAGES dont la syntaxe ressemble beaucoup au langage
C++.
➢ Java comme « fils » de C++  Etant donné que le langage C++ comportait trop
de difficultés, James Gosling, un des concepteurs
➢Essai de simplification du projet a décidé de créer un langage orienté
➢Syntaxe très semblable
objet reprenant les caractéristiques principales
du C++ et éliminant ses points difficiles, et en le
➢Elimine les défauts de C rendant moins encombrant et plus portable (il
peut être intégré dans n'importe quel appareil...).
➢Aucune hérédité multiple

9 10

1.2 QU’EST CE QUE LA MACHINE


 Certaines caractéristiques critiques du langage C++ (celles
qui sont à l'origine des principales erreurs) n'ont donc pas VIRTUELLE JAVA?
été reprises:
Java et sa
Cela comprend :
« machine virtuelle »

➢ Les pointeurs
➢ La surcharge d'opérateurs
➢ L'héritage multiple (remplacé par la notion d'interface)
➢ En revanche :La libération de mémoire est transparente
pour l'utilisateur (grâce à un ramasse-miettes)
JVM
➢ La gestion des exceptions est beaucoup plus rigoureuse
➢ Les chaines et les tableaux sont des objets faisant partie
intégrante du langage
o Java est moins rapide que le langage C++, car il est
interprété par une machine virtuelle. Il perd donc en
rapidité ce qu'il gagne en portabilité... 11 12

S.TALLAL 2
ENSEM
POO/JAVA

 Une particularité de Java est que les logiciels


écrits dans ce langage sont compilés vers une PORTABILITÉ DE JAVA
représentation binaire intermédiaire qui peut
être exécutée dans une machine virtuelle Java ➢ Classes Java portables
(JVM) en faisant abstraction du système
d'exploitation. ➢ Indépendances du système d’exploitation
➢ Les « appels systèmes » sont inutiles!
 L'un des principes phares de Java réside dans sa
machine virtuelle : celle-ci assure à tous les
développeurs Java qu'un programme sera
utilisable avec tous les systèmes d'exploitation
sur lesquels est installée une machine virtuelle
Java.

13 14

JAVA ET LE RÉSEAU
 Une de ses plus grandes forces est  Java conçu pour le réseau
son excellente portabilité : une fois  Applications distribuées
votre programme créé, il  Décharger et exécuter les classes
fonctionnera automatiquement sous
 Aucune hérédité multiple
Windows, Mac, Linux, etc.
 Donc indépendant de la plate forme
de votre machine, Et par conséquent
ne fait pas d’ appels systèmes
15 16

ENSEM

JAVA : JDK, JRE ET JVM


 Le JDK (Java Development Kit en anglais, Kit de
JDK (Le Java Development Kit) désigne un ensemble de bibliothèques de base Développement Java en Français) représente l’outillage
du langage de programmation Java, notamment de Classes, ainsi que les outils
indispensable au développeur Java. Ce kit contient les
17

avec lesquels le code Java peut être compilé, transformé en bytecode destiné à la
machine virtuelle Java.
outils nécessaires pour programmer en
java, exécuter ses programmes java, tester ses
JRE (Java Runtime Environment) contient uniquement l'environnement programmes java et livrer ses programmes java à ses
d'exécution de programmes Java. Le JDK contient lui-même le JRE. Le JRE seul clients.
doit être installé sur les machines où des applications Java doivent être exécutées.  Le JDK est en évolution constante et différentes
versions sont mises à la disposition des
JVM (Java Virtual Machine) : désigne l’environnement d'exécution pour
développeurs. Connaître la version du JDK
applications Java. Elle assure l'indépendance du matériel et du système
d'exploitation lors de l'exécution des applications Java. employée est extrêmement important : les classes
disponibles peuvent être sensiblement différentes
Javac : c’est le compilateur java , il utilise un fichier source Java fourni en d'une version à une autre.
paramètre pour créer un ou plusieurs fichiers contenant le bytecode Java 17 18
correspondant.

S.TALLAL 3
ENSEM
POO/JAVA

ENSEM

VERSIONS : 1.3 LA PLATE FORME JAVA


 Comment est fait Java?
 JDK 1.0 (23-Janvier1996)  Dans Java tout est classes et objets

19
 JDK 1.1 (19-Fevrier-1997)

 J2SE 1.2 (8-Decembre-1998)


 Application = classe
 J2SE 1.3 (8-Mai 2000)  Structures données = classes
 J2SE 1.4 (6-Fevrier-2002)

 J2SE 5.0 (30-Septembre-2004)

 Java SE 6 (11- Decembre-2006)

 Java SE 7 (28-Juellet2011)

 Java SE 8 (18-Mars 2014)

 Java SE 9 (16-Janvier-2018) 19 20

COMMENT JAVA EST FAIT LES PACKAGES


➢ Données = Objets  java.applet  java.rmi
 java.awt  java.security
➢ Fenêtres, menus, boutons = objets
 java.beans  java.sql

 java.io  java.text

 java.lang  java.util

 java.math  java.accessibility

 java.net  java.swing

21 22

1.4 LA DOCUMENTATION DE JAVA LA DOCUMENTATION DE JAVA

 Javadoc est standard pour la


documentation de java
 Documentation en HTML
 C:\jdk2.1\docs\index.html

23 24

S.TALLAL 4
ENSEM
POO/JAVA

LA DOCUMENTATION DE JAVA

Indice des
packages
Texte de la
documentation Chapitre 2
ELÉMENTS DE BASE DU LANGAGE

Indice des
classes
26

25

LA MACHINE VIRTUELLE JAVA 1. LA MACHINE VIRTUELLE JAVA ( JVM)

1. La machine virtuelle Java ➢ Une machine à « pile » (Stack)


2. Le Bytecode ➢ Supporte les objets
3. Le format des fichiers .class ➢ Exécute les fichiers .class

27 28

LA MACHINE VIRTUELLE JAVA ( JVM) TYPES PRIMITIFS


 Opère sur deux genres de types:  byte 8 bit,  Char 16 bit,
 short 16 bit,  Float 32,
 Primitifs
 int 32 bit,  double 64,
 Référence
 long 64 bit,  Boolean true |false
 Supporte les threads
TYPES RÉFÉRENCES
oClasse
oVecteur
oInterface
oRéférence nulle «null»

29 30

S.TALLAL 5
ENSEM
POO/JAVA

2. LE BYTECODE INSTRUCTIONS ET TYPES

 Le langage machine de la JVM  Le type d’instruction est presque


 Intermédiaire entre source Java et toujours représenté explicitement
plate-forme physique dans le code d’opération de
 Ensemble d’instructions
l’instruction :
 Empaqueté en fichier. class

31 32

INSTRUCTIONS ET TYPES 3. FORMAT DES FICHIERS .CLASS


Nombre
magique
i int l long s short
b boolean c char f float
d double a
référence

33 34

POUR EN SAVOIR PLUS

 Tim lindhom, Frank Yellin


The Java Virtual Machine
Spécifica.
CHAPITRE 3
Eddition-Wesley, 1999
PROGRAMMATION ORIENTÉE
 http
OBJET (RAPPELS)
://java.sun.com/docs/books/vmspec/
 …. 36

35

S.TALLAL 6
ENSEM
POO/JAVA

LA PROBLÉMATIQUE DE LA PROGRAMMATION :
PLAN PROGRAMMATION ?

1. Introduction  Enchaînement des instructions


2. Principes méthodologiques POO élémentaires pour parvenir à
3. Complexité systèmes software résoudre un problème particulier.
 Production des logiciels avec des
exigences de qualité
 L’exactitude : aptitude à fournir les
résultats voulus, dans des conditions
normales d’utilisation.
37 38

LA PROBLÉMATIQUE DE LA PROGRAMMATION :
PROGRAMMATION ?
PROGRAMMATION ?
 La robustesse : aptitude à bien  La portabilité : facilité avec
réagir lorsque l’on s’écarte des laquelle on peut exploiter un même
conditions normales d’utilisation. logiciel dans différents
 L’extensibilité : facilité avec implémentations.
laquelle un programme pourra être  L’efficience : temps d’exécution,
adapté pour satisfaire à une taille mémoire, etc.
évolution des spécifications.
 La réutilisabilité : possibilité de
réutiliser certains parties du logiciel. 39 40

INTRODUCTION INTRODUCTION
Questions:
 Comment certaines sociétés de l’industrie
informatique sont-elles devenues si importantes Réponse
et aussi rapidement ?
 Elles fabriquent en général de bonnes machines,
 Ces sociétés se sont orientée Objet
vendues à prix bas, dans une période où il existe
une grande demande. = elles ont sous-traité une bonne partie de
leur travail
 Comment ont-elles pu construire tant de
modèles aussi rapidement, et comment ont-elles
répondu aussi vite au changement que subit le ➢ Production rapide et réduction des coûts.
marché de la micro-informatique ? ➢ Ces constructeurs achetaient des «fonctionnalités
41 pré conditionnées». 42

S.TALLAL 7
ENSEM
POO/JAVA

PROGRAMMATION PROCÉDURALE
PROGRAMMATION ORIENTÉ OBJET STRUCTURÉE

 La POO s’appuie sur la même idée. Objectifs


 concevoir un ensemble de fonctions (et
 Un programme est constitué d’objets qui procédures) permettant de résoudre un
interagissent (communiquent) afin de problème.
réaliser une ou plusieurs tâches.  Après avoir déterminé ces fonctions, trouver la
manière appropriée de stocker les données.
 Algorithmes + Structures de données =
 Chaque objet possède certaines propriétés Programme
et peut accomplir certaines opérations.
 D’abord, vous décidez de la manière dont vous
 C’est le temps et les fonctionnalités allez manipuler les données; ensuite
disponibles qui décideront du fait que vous seulement, vous choisissez le genre de
construisez un objet ou que vous utilisez un 43 structures que vous imposeriez aux données 44
autre disponible. afin de faciliter cette manipulation.

PROGRAMMATION PROCÉDURALE PROGRAMMATION ORIENTÉ OBJET


STRUCTURÉE
La POO inverse cet ordre et place les données au premier
 Programmation structurée pose la

plan avant de déterminer l’algorithme qui sera employé
pour opérer sur ces données.
question :
 En POO, chaque objet accomplit quelques tâches associées.
➔ Que dois faire le programme ?
 Si un objet dépend d’une tâche qui n’est pas de sa
responsabilité, il doit avoir accès à un autre objet capable
d’accomplir cette tâche.

45 46

AVANTAGES DE LA P.O.O
CONCLUSION
 La programmation orientée objet est une 1. La découpe du problème en classes et donc en objets
nouvelle méthode de programmation qui permet la réutilisation du code, chose plus difficile
avec un programme classique.
tend à se rapprocher de notre manière
2. Une classe peut hériter d'une autre classe ce qui
naturelle d'appréhender le monde permet d'utiliser les fonctions et les données de la
 Les modèles à objets ont étés crées pour classe parent et de rajouter les données et fonctions
modéliser le monde réel. de la nouvelle classe
Les fonctions de la classe n'ont pas un grand nombre
 Dans un modèle à objet, toute entité du
3.
d'arguments puisque les données sont lisibles par les
monde réel est un objet, et réciproquement, fonctions de la classe.
tout objet représente une entité du monde 4. Les données de la classes sont protégées de
réel. l'extérieur : sécurité.
 Langages orientés objets posent la question 5. Grâce à la P.O.O, on gagne en rapidité de
: fabrication du code, puisqu'il est possible d'utiliser
un grand nombre de classe déjà existante.
➔ Sur quoi porte le programme ? 47 48

S.TALLAL 8
ENSEM
POO/JAVA

I. Introduction à la Programmation Orientée


PROGRAMMATION ORIENTÉ OBJET Objet
EXEMPLES ➢ POO % PP

Un programme informatique comporte toujours des traitements


(des fonctions), mais aussi et surtout des données.
 Classe Bateau : - la programmation structurée (PP) s’intéresse aux traitements
champs : Capitaine, type, couleur, position, vitesse,… puis aux données,
Fonctions ou méthodes : marche, stop, plus_vite, - la conception objet (POO)s’intéresse d’abords aux données,
moins_vite… auxquelles elle associe ensuite les traitements.
- Les données sont ce qu’il y a de plus stable dans la vie d’un
programme, il est donc normal d’architecturer le programme autour
de ces données
 Classe Fenêtre : d’où Le concept de l’orienté objet repose sur les notions :
champs :
positionX,positionY,TailleX,TailleY,Couleur,Nom,… « d’objet » et « classe »
Fonctions ou méthodes : Créer, Réduire, Fermer,
Déplacer, … 49

50

LES LANGAGES OBJETS


POO & PP
Programmation  Simula
POO
Procédurale
 Smalltalk

 C++

 Eiffel

 Java

 C# (Microsoft)

51  Python (script) 52

PRINCIPES DE L’APPROCHE ORIENTÉ PRINCIPES DE L’APPROCHE ORIENTÉ


OBJET OBJET
➢ une définition succincte de chaque
 La conception par objets est une caractéristique:( les détails seront
méthode qui conduit à des
53

54

vus ultérieurement )
architectures logicielles fondées sur des
objets que tout système manipule.  L’encapsulation : est le mécanisme
 Elle est essentiellement caractérisée par lequel le programmeur cache une
par : partie de l’information pour
➢ L’encapsulation des données préserver l’intégrité de l’objet. Il
➢ Les constructions d’objets et leur établit une séparation entre
destruction l’interface (publique) et
➢ L’héritage des attributs et méthodes l’implémentation (invisible).
➢ Le polymorphisme

S.TALLAL 9
ENSEM
POO/JAVA

PRINCIPES DE L’APPROCHE ORIENTÉ PRINCIPES DE L’APPROCHE ORIENTÉ


OBJET OBJET
➢ Le poly morphisme :
➢ L’héritage : est le procédé par ▪ cela consiste à appeler la bonne

55

56
lequel une classe, dite classe méthode d’après le type de l’objet
dérivée ou sous-classe, reçoit une
implémenté. C-à-d, plusieurs classes
partie de sa définition d’une autre
classe, dite classe mère. peuvent posséder une méthode de
▪ Ceci illustre les phénomènes de
même nom.
réutilisation et d’extensibilité. ▪ Suivant la nature de l’objet auquel
 On peut avoir des héritages simples elle doit s’appliquer, on appliquera
ou multiples. telle ou telle méthode.

PRÉSENTATION JAVA
 Un programme écrit en java est :
→ d’abord compilé :
Chapitre 4
Installer JAVA, compiler et exécuter un .java
J .class
V 000001010111
programme M

code source bytecode

→Puis interprété
.class
000001010111
57

58

Interpréteur PC Interpréteur linux Interpréteur Mac

ENSEM

OUTILS DE DÉVELOPPEMENT TRAVAUX PRATIQUES

1. Télécharger et installer JDK (6, 7, 8 ➢TD1


ou le 9)
59

Récupérer, installer et utiliser le JDK


2. Configurer le path; de sun
3. Vérifier l’installation; Introduction à un simple IDE pour Java
4. Télécharger l’IDE; ➢TD2
5. Lancer l’IDE;
6. Nouveau projet Java
Ecrire, compiler et exécuter le
premier programme en JAVA 60

A.IDALENE

S.TALLAL 10
ENSEM
POO/JAVA

PREMIER PROGRAMME JAVA STRUCTURE D’UN PROGRAMME JAVA


1. Ecrire et enregistrer le programme public class PermierProg
ci-après {
2. Compiler le programme de deux public static void main(String args[ ])
façons différentes {
3. Exécuter avec le nom de la classe System.out.println("Mon premier programme
java’’);
4. Exploiter les résultats
}
}
61 62

STRUCTURE D’UN PROGRAMME JAVA EXERCICE

public class Saisie{


public static void main(String
args[]) 1. Ecrire un programme qui lit deux
{ entiers passés en paramètres sur la
String prenom = args[0]; ligne de commandes et affiche leur
System.out.println("Bonjour " + somme, leur différence, leur produit
prenom); et leur quotient
}
63 64
}

COMMENTAIRE
 Un programme java se commente comme
en C :
 // Commentaire de fin de ligne

SYNTAXE DE BASE
 /* Commentaire
sur plusieurs
lignes
*/
65
 /*==================== *
* Commentaire titre * 66
*=====================*/

S.TALLAL 11
ENSEM
POO/JAVA

TYPES DE DONNÉES JAVA TYPES PRIMITIFS JAVA

 Types primitifs de Java :  Types entiers servent à représenter des


 Nombres entiers, nombres entiers relatifs : bytes, short, int,
 Nombres flottants,
long.
 Caractères ,
 Types flottants servent à représenter une
partie des nombres réels : float, double.
 Booléens.
 Types caractères permettent de manipuler
les caractères : char.
 Types références :  Caractères spéciaux :
• \b retour arrière
 Tableaux, • \t tabulation
 Classes , • \n saut de ligne
• \f, \r, \",\ ‘, \\.
 Interfaces. 67 68
• Types booléens : true / false.

CONSTANTE JAVA OPÉRATEURS ET EXPRESSIONS


 L’utilisateur peut définir des  Opérateurs arithmétiques :
constantes dont la valeur est fixée + (addition), - (soustraction), * (multiplié), / (divisé),
%(modulo).
une fois pour toute.
 Opérateurs relationnels :
 Syntaxe == (égalité), < (inférieur strict), <= (inférieur large), >,
>=,
!= (différence)
final type nom_var;  Opérateurs logiques:
! (négation), & (et), &&(et), || (ou), ^ (ou
exclusif).
Exemple : final int n=20;
• Opérateurs d’incrémentation et de
décrémentation
69 ++ (incrément), --(décrément). 70
Ces deux derniers peuvent être pré ou post fixés

OPÉRATEURS ET EXPRESSIONS OPÉRATEURS ET EXPRESSIONS

 Opérateur cast :  Opérateur conditionnel :


Il est possible de convertir une variable en un type Opérateur qui équivaut à une structure conditionnelle complexe
primitif grâce au cast (comme en C). if then else à la différence qu’il renvoie un résultat de valeur
Exemple: pouvant ne pas être un booléen : l’opérateur ternaire.
…….
float x; double y; Syntaxe :
x =(double) y;
……. Condition ? expression1: expression2 ;
• Opérateurs d’affectation / affectation élargie
= (affectation), *= (x*=y équivalent à x=x*y), /=, Exemple :
+=, -=, %=
max = a>b ? a : b;
71 72

S.TALLAL 12
ENSEM
POO/JAVA

INSTRUCTIONS DE CONTRÔLE JAVA IF ………………..ELSE…………….

Java dispose d’instructions structurées permettant de réaliser :


 Syntaxe :
If (condition)
instructions_1
[ else
 Des choix : instruction_2]
Instructions if…else et switch.

 Exemple :
 Des boucles (répétitions) :
Instructions do…while, while et for. if (++i < limite) System.out.println(‘’ok’’);

 Imbrications des instructions if:


 Instructions de branchement inconditionnel: If(a<b) if(b<c) System.out.println(‘’ordonné’’);
Instructions break et continu.
73 Else System.out.println(‘’non ordonné’’); 74

SWITCH … DO ………..WHILE / WHILE


 Syntaxe :
Switch (expression)  Syntaxe do…..while:
{ case constante_1: [suite_d’instructions_1] Do
case constante_2: [suite_d’instructions_2] {
…………………………………….. bloc_instructions
case constante_n: [suite_d’instructions_n] }
[default : suite_d’instructions] While (condition);
}
 Exemple :  Syntaxe while.. :
switch(n)
{ case 0 : System.out.println(‘’null ‘’);
While (condition)
case 1 : System.out.println(‘’un ‘’); {
default : System.out.println(‘’grand ‘’); bloc_instructions
} 75
} 76

FOR.. TABLEAUX
 Syntaxe :
 Déclaration dynamique :
For([initialisation];[condition];[incrémentation]) Typetab[] nomtab;
{ Typetab nomtab[];
bloc_d’instructions
}
 Exemple :  Déclaration :
int i;
for(i=1;i<=5;i++) nomtab[] =new typetab[L]; //L : nombre d’éléments
{ typetab nomtab[] = new typetab[L];
System.out.println(‘’bonjour ‘’); typetab nomtab[] = {Liste des éléments};
System.out.println(i+‘’ fois‘’);

}
 Exemple :
Tabentier[] = new int[10] ;
77 Byte tabyte[] = new byte[10]; 78
Int tabentier[] = {12,45,52,63,10};

S.TALLAL 13
ENSEM
POO/JAVA

TABLEAUX TABLEAUX
 Nombre d’éléments :
 Accès aux éléments :
Les éléments d’un tableau sont indicés à partir de 0. La propriété length représente le nombre d’éléments
du tableau.
L’indice du dernier élément est nombre d’éléments-1.
Le nombre d’éléments d’un tableau tab est :
On fait accès à un élément d’indice i par :
tab.length;
Nomtab[i]
 Exemple :
Tab[1][3] =45;
Tab[2][2] = Tab[1][3] + 56;
79 80

LES CONVERSIONS DE TYPES


TABLEAUX
 Affectation d’un tableau:
 La bibliothèque de classes API fournit une série
de classes qui contiennent des méthodes de
Un tableau peut être affecté :
manipulation et de conversion de types
élémentaires :
- Elément par élément : t[0]=10, t[1]=‘java’….  String : pour les chaines de caractères
Unicode
Ou  Integer : pour les valeurs entières (int)
- En totalité lors de sa déclaration :  Long : pour les entiers long signés (long)
Char carac = {‘L’,‘M’, ‘M’, ‘J’, ‘V’,  Float : pour les nombres à virgules flottante
‘S’, ‘D’}; (float)
81  Double : pour les nombres à virgule flottante 82
en double précision (double)

LA CLASSE SCANNER
LES CONVERSIONS DE TYPES

 Conversion d’une chaine de caractère  Déclaration de l’objet :


en : Scanner s = new Scanner(System.in);
 int : méthode parseInt() de la classe Integer  Quelques méthodes :
 long : méthode parseLong() de la classe Long
 next() : permet de lire une chaine de
 float : méthode parseFloat() de la classe Float caractères String
 double: méthode parseDouble() de la classe  nextInt() : permet de lire un int
Double
 nextLong() : permet de lire un long
 Exemple :
 nextDouble() : permet de lire un double
String ch="10";
 nextFloat() : permet de lire un float
int x=Integer.parseInt(ch) 83 84
Syntaxe :Type val=classe.methode()

S.TALLAL 14
ENSEM
POO/JAVA

EXERCICES
 EX1 :
Écrire un programme qui calcule la moyenne de notes
fournies au clavier
 EX2:
Généraliser l’exercice précédent pour 3 étudiants avec un
nombre de notes variable
 EX3 :
Écrivez un programme permettant de ranger les noms des Chapitre 5
étudiants par ordre alphabétique croissant. OBJETS, CLASSES ET MÉTHODES
 EX4 :

Écrire un algorithme permettant de rechercher puis corriger


86
le nom d’un étudiant figurant dans un tableau de noms en
utilisant la recherche par dichotomie.
85

CARACTÉRISTIQUES DE L’OBJET
OBJET
 Un objet est caractérisé par :
1. Son comportement : que pouvez-vous faire avec
 Un objet est une structure contenant cet objet, ou quelles méthodes pouvez-vous lui
des données et des méthodes qui appliquer ?
Son état : Comment l’objet réagit-il lorsque vous
manipulent les données. 2.
appliquez ces méthodes ? (son aspect actuel)
 Un objet est caractérisé par un
identifiant unique représentant le ➢ L’état d’un objet peut changer dans le temps,
mais pas spontanément. Une modification dans
monde réel. l’état d’un objet doit être la conséquence d’appels
de méthodes.
 La plupart des opérations effectuées
implique des objets. 3. Son identité : Comment l’objet se distingue-t-il
des autres qui peuvent avoir le même
87
comportement et le même état ? 88

SYNTAXE
OBJET: EXEMPLE
 Pour créer un objet, il faut utiliser le mot clef new.
 Exemple 1 :

Cheval poney;
poney = new Cheval();

La première ligne permet de créer une nouvelle


variable de type Cheval, qui sera appelée poney.

La seconde ligne crée un nouvel objet de type Cheval


et le place dans la variable poney.

89 90

S.TALLAL 15
ENSEM
POO/JAVA

EXEMPLE MÉTHODES

 Un objet est  L'objet est manipulé par des


constitué d’attributs qui procédures appelées méthodes qui
caractérisent la structure de celui-ci. sont caractérisées par une entête
 Référence, Désignation, PrixUnitaire définissant leur nom, les paramètres
et Quantité sont les attributs de d'appel et de retour pour chacune
l'objet de type ARTICLE. d'elle.
 Les méthodes représentent des
actions que peut effectuer un objet.
91 92

CLASSES ET OBJETS
MÉTHODES
Exemple :  Les termes « classe » et « objet » sont
 Exemple : Nous pouvons définir comme
méthodes de l'objet ARTICLE
tellement utilisés dans la
 PrixTtc : Méthode permettant de calculer programmation orientée objet qu'ils
le prix TTC d'un article peuvent être facilement confondus.
 SortieArticle : Méthode permettant de
diminuer la quantité en stock  En règle générale, une classe est une
 EntreeArticle : Méthode permettant représentation abstraite de quelque
d'augmenter la quantité en stock chose, tandis qu'un objet est un
 On ne peut exécuter une méthode sans
préciser l'objet sur lequel elle exemple utilisable de ce que
s'applique. 93 représente la classe. 94

SYNTAXE
CLASSE

 Elle est le composant de base.  Une classe est définie par le mot clé
 L'ensemble des propriétés d'un objet Class et par un nom qui doit
(attributs et méthodes) constitue un commencer par une majuscule.
ensemble appelé classe.  Le bloc qui suit doit contenir des
 Une classe décrit la structure
variables et des procédures.
interne d'un objet : les données qu'il
regroupe, les actions qu'il est capable
d'assurer sur ses données.
 Une classe représente le modèle de
l’objet effectif. 95 96

S.TALLAL 16
ENSEM
POO/JAVA

NOTION DE CLASSE :EXEMPLE NOTION DE CLASS

 Exemple :

Class Cheval
{
Int age;
Int DonnerAge (int age)
{
return age+1;
}
}

97 98

NOTION DE CLASS NOTION DE CLASS

99 100

NOTION DE CLASS NOTION DE CLASS

101 102

S.TALLAL 17
ENSEM
POO/JAVA

NOTION DE CLASS NOTION DE CLASS

103 104

NOTION DE CLASS

Chapitre 6
CLASSE ET OBJET JAVA (SUITE)

106

105

CLASSE / OBJET DÉFINITION D’UNE CLASSE


 Notion de Classe :  Définition des champs :
La notion de classe généralise la notion de type. La classe
comporte des champs et des méthodes. [accessSpecifier][static][final][volatile] type
variableName
 Notion d’objet :  accessSpecifier : pour restreindre l’accès à la variable:
 La notion d'objet généralise la notion de variable. Public, Private, Protected, Package.
 Un type classe donné permet d'instancier un ou plusieurs  Static : la variable appartiendra à la classe et
objets du type, chaque objet comportant son propre jeu de non pas à une instance de la classe.
données.  Final : pour définir une constante.
 Volatile : la variable peut être modifiée de façon
asynchrone par plusieurs threads.
 Définition d'une classe RQ: Lorsqu’aucun access-modifier n’est présent, la variable
 Définition des champs est accessible à toutes les classes du même package mais pas
 Définition des méthodes 107
aux classes héritées. 108

S.TALLAL 18
ENSEM
POO/JAVA

DÉFINITION D’UNE CLASSE ACCESSSPECIFIER


 Définition des méthodes:
Une méthode a deux parties : déclaration et corps.
 Public :
Une méthode est accessible à partir de n’importe quelle
autre classe ou package.
[accessSpecifier][modifier][return_value]methodNa
me([pType param1,pType param2,…]) [throws  Protected :
ExceptionList] Une méthode est accessible à partir de n’importe quelle
autre classe ou sous-classe du même package.
 accessSpecifier : pour restreindre l’accès à la méthode:
Public, Private, Protected, Package.  Private :
 modifier : permet de spécifier des propriétés à la Une méthode est accessible à partir de n’importe quelle
méthode : visiblité, interaction avec ses sous-classes. autre méthode de la même classe.
 Return_value : spécifie le type de données retourné par
la méthode avant la fin de son exécution. • Package (par défaut) :
 Dans le cas contraire, void est utilisé comme type de Une méthode est accessible à n’importe quelle autre
retour. méthode de la même classe ou d’autres classes
109 appartenant au même package. 110

MODIFIER TYPES DE MÉTHODE


 Static : Les méthodes de classe sont de 3 types
Le méthode appartient à la classe et non pas aux instances.
Une méthode statique ne sera pas dupliquée pour chaque  les constructeurs.
instance.
 Abstract :  les méthodes d'accès (accessor) de la forme getXXX
Une méthode abstraite est déclarée mais non implantée. qui fournissent des informations relatives à l'état d'un
C’est la responsabilité d’une sous classe de la classe
courante.
objet, c'est-à-dire des valeurs de certains champs sans
 Final :
Une méthode final ne peut pas être surchargée par une les modifier.
sous-classe.
• Native :  les méthodes d'altération (mutator) de la forme
une méthode native est déclarée mais non implantée. Elle le
sera dans un autre langage. setXXX qui modifient l'état d'un objet, c'est-à-dire
• Synchronized : les valeurs de certains champs.
Permet de gérer l’accès aux données de la méthodes par
plusieurs threads. 111 112

DÉCLARATION INSTANCIATION D’UNE


CLASSE EXEMPLE
 Déclaration : Class Test
className objectName {
Public int i =12;
Public int Testclass()
 Instanciation : {
objectName = new Constructeur() i++;
return i;
 Déclaration & Instanciation : }
}
className objectName = new Constructeur()
Test ref =new Test();
 Accès : ref.i=15;
j=ref.Testclass();
objectName.Method-or-VariableName 113 114
EX: cheval percheron = new cheval();

S.TALLAL 19
ENSEM
POO/JAVA

CHAMPS, PROPRIÉTÉS, MÉTHODES ET


ÉVÉNEMENTS
PROPRIÉTÉS
 Les classes se composent de champs, de
propriétés, de méthodes et d'événements.  Les propriétés sont extraites et définies
comme des champs, mais sont
 Les propriétés et les champs sont des implémentées via les procédures de
informations contenues dans un objet. propriété Get et Set qui contrôlent
 Les champs sont similaires aux variables, davantage la façon dont les valeurs
car ils peuvent être lus ou définis sont définies ou retournées.
directement.  La couche d'adressage entre la valeur
stockée et les procédures qui utilisent
 Par exemple, si vous possédez un objet cette valeur vous aide à isoler vos
intitulé "Car", vous pouvez stocker sa données et vous permet de valider les
couleur dans un champ nommé "Color". valeurs avant qu'elles ne soient
115 attribuées ou extraites. 116

MÉTHODES ÉVÉNEMENTS

 Les méthodes représentent des  Les événements vous informent


actions que peut effectuer un objet. lorsqu'un objet est reçu d'autres
Par exemple, un objet "Car" peut applications ou transmis à celles-ci.
avoir des méthodes
« démarrerEngin », «Conduire »et  Les événements permettent aux
« Arrêter ». Pour définir des objets d'effectuer des actions
méthodes, ajoutez des procédures lorsqu'une occurrence spécifique se
(des fonctions ou des routines Sub) à produit.
votre classe. 117 118

PRÉSENTATION DES CLASSES CLASSES : MODÈLES D'OBJETS

Les classes sont des représentations


 Les classes revêtent de l'importance 
symboliques d'objets ; elles décrivent les
dans la programmation orientée propriétés, les champs, les méthodes et les
événements qui constituent des objets de la
objet car elles permettent de même façon que les plans sont des modèles
regrouper des éléments en une seule décrivant les éléments qui composent un
bâtiment. Tout comme un plan peut être
entité, mais aussi d'en contrôler la employé pour construire plusieurs bâtiments,
une classe unique peut servir à créer autant
visibilité et l'accessibilité par d'objets que cela est nécessaire. Et tout comme
d'autres procédures. En outre, une un plan définit les parties d'un bâtiment qui
sont accessibles aux personnes utilisant celui-
classe peut hériter du code défini ci, les classes peuvent elles aussi contrôler
dans d'autres classes et le réutiliser. l'accès des utilisateurs aux composants des
119
objets par l'encapsulation. 120

S.TALLAL 20
ENSEM
POO/JAVA

CLASSES ET OBJETS CLASSES ET OBJETS

 Les termes classe et objet sont  Si l'on reprend l'analogie avec un plan
de construction, une classe est un plan,
parfois employés indifféremment, et un objet est un bâtiment construit à
mais en réalité, les classes décrivent partir de ce plan. Habituellement, la
la structure des objets, alors que ces modification des données dans un objet
ne modifie les données dans aucun
derniers sont des instances autre objet. (les membres partagés qui
utilisables des classes. Chaque sont des membres de classe déclarés
instance est une copie exacte, mais avec le modificateur Shared, font
toutefois exception à cette règle
distincte de sa classe. Dans la puisqu'ils existent indépendamment
mesure où un objet est une instance 121
des instances spécifiques d'une classe). 122

d'une classe, l'action de créer un


objet se nomme instanciation.

I. Introduction à la Programmation Orientée


Objet
➢ POO % PP

Un programme informatique comporte toujours des traitements


(des fonctions), mais aussi et surtout des données.
CH6 (ANNEXE) - la programmation structurée s’intéresse aux traitements puis
aux données,
(REPRISES DE QUELQUES - la conception objet s’intéresse d’abords aux données, auxquelles
NOTIONS FONDAMENTALES) elle associe ensuite les traitements.
- Les données sont ce qu’il y a de plus stable dans la vie d’un
programme, il est donc normal d’architecturer le programme autour
de ces données
d’où Le concept de l’orienté objet repose sur les notions :
123
« d’objet » et « classe »

124

CARACTÉRISATION DE L’APPROCHE CARACTÉRISATION DE L’APPROCHE


ORIENTÉ OBJET ORIENTÉ OBJET

 La conception par objets est une


 L’encapsulation : est le mécanisme
méthode qui conduit à des
125

126

architectures logicielles fondées sur des par lequel le programmeur cache une
objets que tout système manipule. partie de l’information pour
 Elle est essentiellement caractérisée préserver l’intégrité de l’objet. Il
par :
➢ L’encapsulation des données
établit une séparation entre
➢ Les constructions d’objets et leur l’interface (publique) et
destruction l’implémentation (invisible).
➢ L’héritage des attributs et méthodes
➢ Le polymorphisme

S.TALLAL 21
ENSEM
POO/JAVA

CARACTÉRISATION DE L’APPROCHE CARACTÉRISATION DE L’APPROCHE


ORIENTÉ OBJET ORIENTÉ OBJET
➢ Le polymorphisme :
➢ L’héritage : est le procédé par ▪ cela consiste à appeler la bonne

127

128
lequel une classe, dite classe méthode d’après le type de l’objet
dérivée ou sous-classe, reçoit une
implémenté. C-à-d, plusieurs classes
partie de sa définition d’une autre
classe, dite classe mère. peuvent posséder une méthode de
▪ Ceci illustre les phénomènes de
même nom.
réutilisation et d’extensibilité. ▪ Suivant la nature de l’objet auquel
 On peut avoir des héritages simples elle doit s’appliquer, on appliquera
ou multiples. telle ou telle méthode.

ENCAPSULATION ENCAPSULATION

 L'encapsulation est la capacité à contenir un groupe  L'encapsulation permet en outre de contrôler la manière dont les
d'éléments associés et à en contrôler l'accès. Les classes données et les procédures sont utilisées. Vous pouvez recourir à
constituent l'un des moyens les plus courants d'encapsuler des modificateurs d'accès, tels que Privateou Protected, pour
des éléments. Dans l'exemple ci-dessous, la empêcher les procédures externes d'exécuter des méthodes de
classe BankAccount encapsule les méthodes, les champs et classe ou de lire et de modifier les données figurant dans les
propriétés et les champs. Vous devez déclarer les détails internes
les propriétés qui décrivent un compte bancaire. d'une classe en tant que Private pour éviter qu'ils soient utilisés
 Sans encapsulation, il aurait été nécessaire de déclarer des en dehors de votre classe ; cette technique est appelée
procédures et des variables distinctes pour stocker et gérer le masquage de données et permet de protéger des informations
les informations relatives au compte bancaire, sans parler client, telles que le solde d'un compte.
de la difficulté de manipuler plus d'un seul compte bancaire  L'une des règles fondamentales de l'encapsulation est que des
à la fois. L'encapsulation vous permet d'utiliser les données données de classe doivent être modifiées ou extraites uniquement
et les procédures de la classe BankAccount en tant par des méthodes ou des procéduresProperty. Le fait de masquer
qu'unité. Vous pouvez manipuler plusieurs comptes les informations d'implémentation des classes vous permet
bancaires à la fois sans qu'il y ait confusion, car chaque d'empêcher que celles-ci ne soient utilisées de façon non souhaitée
et de modifier ces éléments ultérieurement sans risquer des
compte est représenté par une instance unique de la classe. problèmes de compatibilité. Par exemple, les versions ultérieures
de la classe BankAccount peuvent modifier le type de données du
champ AccountBalance sans entraver le fonctionnement des
129 applications pour lesquelles ce champ doit absolument présenter 130
un type de données spécifique.

MEMBRES PARTAGÉS
HÉRITAGE
 Comme les structures Visual Basic, vous pouvez  Par défaut, les données de classe sont
utiliser des classes pour définir des types de données spécifiques à chaque instance de la classe,
qui encapsulent un groupe d'éléments connexes.
Contrairement aux structures, toutefois, les classes mais il peut arriver qu'une donnée unique
Visual Basic peuvent hériter des caractéristiques doive être partagée entre tous les objets
d'autres classes et étendre ces caractéristiques. Les créés à partir d'une classe. Dans de tels cas,
classes qui servent de base à de nouvelles classes sont utilisez le modificateur Shared pour qu'une
appelées classes de base. Les classes dérivées des
classes de base sont appelées classes dérivées. Les variable partage la même valeur dans
classes dérivées héritent de tous les champs, toutes les instances d'une classe (les
propriétés, méthodes et événements de leur classe de membres Shared sont parfois désignés sous
base. Cela signifie que vous pouvez développer et le nom de « membres statiques » dans
déboguer une classe une seule fois et la réutiliser d'autres langages de programmation). Vous
ensuite comme la classe de base d'autres classes.
pouvez appeler des méthodes partagées
directement à l'aide d'un nom de classe sans
131
créer au préalable une instance de la classe. 132

S.TALLAL 22
ENSEM
POO/JAVA

OCCULTATION 2. GÉNÉRALITÉS
➢ Types de base, opérateurs et expressions

 Les expressions: opérateurs classiques


Symbole Signification
 Les classes dérivées peuvent utiliser == Est égal à
le mot clé Shadows pour déclarer > Est supérieur à
un membre avec le même nom que le < Est inférieur à
membre hérité. Les membres >= Est supérieur ou égal à

occultés ne doivent pas forcément <= Est inférieur ou égal à


!= Est différent de
être du même type de données que le * Multiplication
membre à occulter. Par exemple, une + Addition
propriété peut occulter une variable - Différence
de type Integer. / Division entière et réelle
133
% Modulo
134

2. GÉNÉRALITÉS 2. GÉNÉRALITÉS
➢ Types de base, opérateurs et expressions ➢ Types de base, opérateurs et expressions

➢ Les expressions: opérateurs classiques ➢ Les expressions: Pré et Post incrément (Décrément)
++var incrémente la variable var et retourne la nouvelle valeur.
 Opérateurs booléens ▪

Symbole Signification (++i équivaut à i=i+1)


&& représente l’opérateur “ET”, ▪ var++ incrémente la variable var et retourne l’ancienne valeur.

|| représente le “OU”, (i++ équivaut à (i=i+1)-1)

! représente le “NON”.
▪ L’expression --var décrémente la variable var et retourne la nouvelle
valeur.

▪ L’expression var-- décrémente la variable var et retourne l’ancienne


 Par exemple, ((x<12) && ((y>0) || !(z>4))) valeur.
135 136

2. GÉNÉRALITÉS 2. GÉNÉRALITÉS
➢ Types de base, opérateurs et expressions ➢ Types de base, opérateurs et expressions
➢ Evaluation des expressions arithmétiques
➢ Evaluation des expressions booléennes
 Si une (sous-)expression mélange plusieurs types, c’est le type le plus large
 Dans e1 && e2, la sous-expression e2 n’est évaluée que si e1 a été qui est utilisé.
évaluée à ’true’. int i=3,j=2,m ;

if (i >=0 && T[i] > 20) blabla double r=3.4 ;


m = (i/j)*r ;
 Dans e1 || e2, la sous-expression e2 n’est évaluée que si e1 a été
 D’abord l’expression (i/j) est évaluée: / désigne ici la division entière, cela
évaluée à ’false’.
donne donc 1.
if (i<0 || T[i] > 20) blabla  Pour évaluer le produit 1*r, il faut convertir 1 en double (1.0) et faire le
produit sur les doubles, cela donne 3.4
 Pour l’affectation, comme m est entier, 3.4 est converti en int. Finalement on
a m = 3.

137 138

S.TALLAL 23
ENSEM
POO/JAVA

2. GÉNÉRALITÉS
➢ Types de base, opérateurs et expressions
➢ Evaluation des expressions arithmétiques
 Pour éviter les erreurs, il est possible de convertir explicitement des
données d’un certain type en un autre.

 Par exemple: Différence entre java& C++


int i=3,j=2,m ;
double r=3.4 ;
Table de comparaison
m = (double(i)/j)*r ;
Donne... 5 !

 L’évaluation d’une expression arithmétique ne se fait pas toujours de


gauche à droite !
 Ex: (i/j)*(r/3)

139

Historique
• Java est un langage de programmation orienté objet créé par deux employés
de la société Sun Microsystems : James Gosling et Patrick Naughton, et
présenté officiellement en mai 1995 à la conference SunWorld. (Il a été
mis au point à partir de 1990 )
• La société Sun a été ensuite rachetée en 2009 par la société Oracle qui
détient et maintient désormais Java.
• Le but de Java à l'époque était de constituer un langage de programmation
pouvant être intégré dans les appareils électroménagers, afin de pouvoir les
contrôler, de les rendre interactifs, et surtout de permettre une
communication entre les appareils.
• Ce programme de développement se situait dans un projet appelé Green,
visant à créer une télécommande universelle (Star 7, présentée en 1992)
comprenant un système d'exploitation capable de gérer l'ensemble des
appareils électroménagers de la maison.

Aussi ,
• A la même époque, Internet faisait son apparition, or Java possèdait toutes
les caractéristiques faisant de lui un langage approprié pour le Web

S.TALLAL 24

Vous aimerez peut-être aussi