Vous êtes sur la page 1sur 68

Ecole Nationale Supérieure de Tunis

Département Informatique

PROGRAMMATION ORIENTÉE OBJET: JAVA


Plan du cours
2

Chapitre1:Introduction à la programmation orientée


objet
Chapitre2:Langage Java : Introduction et caractéristiques
Chapitre3: Syntaxe Java
Chapitre4: Classes et Objets Java
Chapitre5: Héritage, Polymorphisme et classes abstraites
Chapitre 6: Les Exceptions
Chapitre 7: Les Collections
Chapitre 8: Les interfaces graphiques
CHAPITRE1: INTRODUCTION À LA
PROGRAMMATION ORIENTÉE OBJET
Plan du chapitre1

1. De la Programmation Procédurale (PP) vers la


Programmation Orientée Objet (POO)
2. La POO
3. Objectifs de la POO
4. Concepts de base de la POO
5. Caractéristiques de la POO: encapsulation, héritage et
polymorphisme
Plan du chapitre1

1. De la Programmation Procédurale (PP) vers la


Programmation Orientée Objet (POO)
2. La POO
3. Objectifs de la POO
4. Concepts de base de la POO
5. Caractéristiques de la POO: encapsulation, héritage et
polymorphisme
De la PP vers la POO
6

 La programmation procédurale telle que étudiée au travers


des langages C, Pascal… définie un programme comme étant:

 un ensemble de données sur lesquelles agissent des procédures et


des fonctions.
Les données constituent la partie passive du programme. Les
procédures et les fonctions constituent la partie active;

 Programmer dans ce cas revenait à:


définir un certain nombre de variables (structures, tableaux…)
écrire des procédures pour les manipuler sans associer explicitement
les unes aux autres.
6
De la PP vers la POO
7

Exécuter un programme se réduit alors à appeler ces procédures dans un ordre décrit par le
séquençage des instructions et en leur fournissant les données nécessaires à l’accomplissement de
leurs tâches.
De la PP vers la POO
8

Dans cette approche données et procédure sont traitées indépendamment


les unes des autres sans tenir compte des relations étroites qui les unissent.
Les questions qu’on peut poser dans ce cas:
1. Cette séparation (données, procédures) est elle utile?
2. Pourquoi privilégier les procédures sur les données (Que veut-on faire?)
3. Pourquoi ne pas considérer que les programmes sont avant tout
des ensembles d’objets informatiques caractérisé par les opérations qu’ils
connaissent?
Les langages objets sont nés pour répondre à ces questions. Ils sont
fondés sur la connaissance d’une seule catégorie d’entités informatiques: le
objets.
Un objet incorpore des aspects statiques et dynamiques au sein d’une
même notion.
8
De la PP vers la POO
9

 Un programme est constitué d’un ensemble d’objets chacun disposant


d’une partie procédures et d’une partie données. Les objets interagissent par
envoie de messages.
Un objet peut recevoir un msg qui déclenche:
Une fonction qui modifie son état ou
Une fonction qui envoie un msg à un autre objet

9
De la PP vers la POO
10

Programmation Procédurale Programmation Orienté e Objet

10
La POO
11

 Un paradigme de programmation qui consiste à la définition


d’une collection d'objets qui communiquent entre eux par envoi
de messages.

 Une approche naturelle de conception et de développement de


logiciels.

 Représenter les éléments du monde réel par des entités


informatiques appelés «objets ».
Plan du chapitre1

12

1. De la Programmation Procédurale (PP) vers la


Programmation Orientée Objet (POO)
2. La POO
3. Objectifs de la POO
4. Concepts de base de la POO
5. Caractéristiques de la POO: encapsulation, héritage et
polymorphisme
Objectifs de la POO
13

1. Modélisation Simplifiée
2. Maintenance facile
3. Extension simple
Modélisation Simplifiée (1)
14

 Modélisation simplifiée vu que le monde réel


n'est plus représenté par des structures de
données et des fonctions isolées (cas de la
programmation classique) mais par des objets
correspondant aux éléments traités du champ
de l'étude.
Modélisation Simplifiée (2)
15

Approche procédurale :

"Que doit faire mon programme ?  "  


Modélisation Simplifiée (3)
16

Approche orientée-objet :
"De quoi doit être composé mon programme ?"
Maintenance facile
17

 Maintenance facile : Détecter et cibler les bugs est


plus facile dans un programme orienté objet que
dans un programme procédural.
Extension simple (1)
18

 Extension : Un programme orienté objet est


facilement extensible. Il suffit d’ajouter les classes
d’objets dans le programme et d’établir les liens
nécessaires entre les objets.
Extension simple (2)
19

Exemple: Gestion d’une bibliothèque


Si on souhaite surveiller le compte bancaire des employés, on peut
étendre l’application par l’objet Compte et établir les connexions
adéquates avec les autres objets.
Compte
Plan du chapitre1
20

1. De la Programmation Procédurale (PP) vers la


Programmation Orientée Objet (POO)
2. La POO
3. Objectifs de la POO
4. Concepts de base de la POO
5. Caractéristiques de la POO: encapsulation, héritage et
polymorphisme
Concepts de base de la POO
21

1. Classe
2. Attributs et Méthodes
3. Objets
Classe (1)
22

 Une classe représente un modèle de construction


d’objets.
 Il s'agit d'une description abstraite en terme de
données et de comportements d'une famille d'objets.
 Une classe d'objets est constituée d'une partie
statique et d'une partie dynamique
Classe (2)
23

Une classe peut être vue comme un « plan de construction


» d'objets
Classe (3)
24

Des objets similaires peuvent être informatiquement


modélisés par une même abstraction: Une classe
 Même structure de données et mêmes traitements
 Valeurs différentes pour chaque objet
Attributs et Méthodes (1)
25

- Une classe est constituée de deux parties:

LES ATTRIBUTS :
Partie statique les données (Propriétés) Les attributs représentent la
description des données propres
à chaque classe d'objets

le code les manipulant LES METHODES :


Partie dynamique Les méthodes représentent
(Méthodes)
l'ensemble des actions,
procédures, fonctions ou
opérations que l'on
peut associer à une classe
Classe
Attributs et Méthodes (2)

Exemple

CLASSE VOITURE
ATTRIBUTS METHODES
Marque Démarrer
Modèle Accélérer
Immatriculation Freiner
Vitesse Stopper
Niveau de carburant Vidanger
Puissance fiscale Etc ....
Puissance DIN
Etc ...
Objet (1)
24

 Une instance de classe est un élément construit


selon le modèle de sa classe.
 On nomme cet élément "OBJET".
 L'opération par laquelle une classe produit
plusieurs instances est l'instanciation
Objet (2)

Objet= identité + Etat + comportement

• Un objet représente une entité du monde réel qui se caractérise par une identité,
Un état et par un comportement.

• L’identité d’un objet permet de distinguer les objets les uns par rapport aux autres.
Son état correspond aux valeurs de tous les attributs à un instant donné.

• Le comportement d’un objet se définit par l’ensemble des opérations qu’il peut
exécuter en réaction aux messages envoyés (un message= demande d’exécution d’une
opération) par les autres objets.
Objet (3)
29

Classe et Objets: Exemple


CLASSE VOITURE EXEMPLES D'INSTANCES
DE LA CLASSE VOITURE
ATTRIBUTS METHODES
Marque Démarrer PEUJOT
Modèle Accélérer 54S
Immatriculation Freiner 3412 SM 59
Vitesse Stopper 130 Km /h
Niveau de Vidanger 54 l
carburant Etc .... 15 CV
Puissance fiscale 120 DIN, ...
Puissance DIN RENAUT
Etc ... ULTIMA V6
4954 VD 59

190 Km /h
62 l
23 CV
160 DIN, ...
Concepts d’activation
30

 Le seul mode de communication entre objets est l'envoi


de messages.
 Les messages : Un message est une requête. L'arrivée
d'un message provoque l'exécution d'une méthode d'un
objet.
 Chaque message précise la méthode à appliquer avec
éventuellement des paramètres
Message AFFICHE(vide) OBJET Carré  
ou
Message AFFICHE(plein)  OBJET Carré  
Plan du chapitre1

31

1. De la Programmation Procédurale (PP) vers la


Programmation Orientée Objet (POO)
2. La POO
3. Objectifs de la POO
4. Concepts de base de la POO
5. Caractéristiques de la POO: encapsulation, héritage et
polymorphisme
Caractéristiques de la POO
32

1. Encapsulation
2. Héritage
3. Polymorphisme
4. Composition
Encapsulation (1)
33

 L'encapsulation consiste à rendre les membres d'un


objet plus ou moins visibles pour les autres objets.
 La visibilité dépend des membres : certains membres
peuvent être visibles et d'autres non.
 La visibilité dépend de l'observateur : les membres de l'objet
encapsulé peuvent être visibles pour certains objets mais pas
pour d'autres. L'encapsulation a pour objectif d'améliorer
la robustesse et l'évolutivité des programmes.
Encapsulation (2)
34
Héritage (1)
35

.
 L'héritage est un mécanisme destiné à exprimer les
similitudes entre classes.

 Il met en œuvre les principes de généralisation et de


spécialisation en partageant explicitement les attributs et
méthodes communs au moyen d'une hiérarchie de
classes.
Héritage (2)
36

Une classe fille hérite de sa classe mère ses caractéristiques


(attributs et méthodes) mais elle se distingue par ses propres
caractéristiques.

ou classe mère,
métaclasse,
SUPER CLASSE classe de base,
ancêtre

Lien d'héritage
ou classe fille,
SOUS CLASSE classe dérivée,
descendant
Héritage (3)
37

 Exemple:

Personne Etudiant Employe


cin cin cin
nom nom nom
lire() moyenne salaire
lire() lire()
reviser() Travailler
()

Duplication de code.
Une modification faite sur un attribut (ou méthode)
commun doit être refaite dans les autres classes.
Héritage (4)
38

Personne
nom On place dans la classe mère tous les
Super-classe
cin attributs et toutes les méthodes communs à
lire() toutes les classes.

Héritent de

Etudiant Employe Les classes filles ne comportent que les


moyenne salaire attributs ou méthodes plus spécifiques.
reviser() travailler() Les classes filles héritent automatiquement
les attributs (et les méthodes) qui n'ont pas
Sous-classes besoin d'être ré-écrits.
Héritage (5)
39

Les
. différents types d'héritage
 Héritage simple : une classe fille n'a qu'une seule classe mère et
elle hérite d'une partie des attributs et méthodes de celle-ci en
ayant ses spécifications propres.
 Héritage multiple : une classe fille hérite de plusieurs classes

mères. Elle hérite d'une partie des attributs et des méthodes de


chacune de ses classes mères, en plus de ses spécifications
propres.
AVION BATEAU

HYDRAVION
Polymorphisme
40

 Le polymorphisme définit des exécutions différentes pour


une méthode commune à une hiérarchie d'objets.

 Un code qui n'utiliserait pas le polymorphisme pourrait


utiliser une instruction à choix multiple suivant la classe des
objets rencontrés.

 OBJET
TRIANGLE

Message AFFICHE

 OBJET
CERCLE

Composition
41

La composition consiste à réunir des objets pour en former un


autre.
.

VOITURE

1 4 1 1  

CARROSSERIE ROUES DIRECTION MOTE


U  
R

Dans le cas d'une composition, on s'attachera à préciser le cardinal


de cette relation.
CHAPITRE2: LANGAGE JAVA : INTRODUCTION ET CARACTÉRISTIQUES
Plan du chapitre2
43

1. Historique
2. Présentation
3. Plateforme Java
4. Caractéristiques de java
5. Comparaison avec C++
Plan du chapitre2
44

1. Historique
2. Présentation
3. Plateforme Java
4. Caractéristiques de java
5. Comparaison avec C++
Historique
45

 Le projet de départ de Java était de faire un langage de programmation


indépendant de la CPU.
 Cette tâche a été confiée à James Gosling qui commença en travaillant sur
des modifications du langage C++
 Un langage a été produit en 1991,oak,et il a servi à écrire le

browserbweb,WebRunner,de Sun
 Sun a décidé de commercialiser oak sous le nom Java (café en argot

américain)

 La première version de Java 1.0 fut proposée en 1995, et la version 1.1 est
apparue en décembre 1996.
Des améliorations importantes de Java 1 ont mené à Java 2,tel qu'on le
connaît aujourd'hui.
Mars 2018, sortie du java 10.
Plan du chapitre2
46

1. Historique
2. Présentation
3. Plateforme Java
4. Caractéristiques de java
5. Comparaison avec C++
Présentation (1)
47

Java est un langage de programmation moderne développé


par Sun Microsystems(aujourd'hui racheté par Oracle)

Une des plus grandes forces est son excellente portabilité : un


programme java peut s’executer sous Windows, Mac, Linux,
etc….

Avec le langage Java on peut avoir:


des applications, sous forme de fenêtre ou de console ;
des applets, qui sont des programmes Java incorporés
à des pages web
des applications pour appareils mobiles, avec J2ME
et bien d'autres J2EE, JMF, J3D pour la 3D...
Présentation (2)
48

Java comme langage de programmation


Neutre architecturalement : MyProgram.java
 Il existe une grande diversité de
systèmes d’exploitation
Java Compiler
 Le compilateur Java génère un
bytecode, c’est à dire un format
intermédiaire, neutre
MyProgram.class
architecturalement, conçu pour faire = bytecode
transiter efficacement le code vers
des hardware différents et/ou
plateformes différentes
 Le bytecode ne peut-être interprété JVM JVM JVM
que par la JVM Mac Windows Unix
Présentation (3)
49

Java est un langage compilé et interprété :


 Pendant l'étape de compilation, les programmes source écrits
en Java sont d'abord traduits en un langage machine particulier : le
bytecode Java.

 Le bytecode n'est pas destiné à être exécuté par le CPU de


l'ordinateur mais par celui d'une machine imaginaire : la machine
virtuelle Java, ou JVM (Java Virtual Machine).

 Pour pouvoir être « comprises » par la machine de l'utilisateur,


les instructions du programme compilé doivent être traduites au
moment de l'exécution : c'est l'étape d'interprétation.
Plan du chapitre2
50

1. Historique
2. Présentation
3. La Plateforme Java
4. Caractéristiques de java
5. Comparaison avec C++
La Plateforme Java
51

Plateforme = environnement hardware ou software sur lequel le


programme est exécuté.
La  Platforme (software) Java se compose de:
Java Virtual Machine (JVM)
Java Application Programming Interface (Java API)
La Plateforme JVM(1)
52

 Une machine virtuelle est un ordinateur qui n'existe pas. Ses


caractéristiques (processeur, mémoire, système d'exploitation,
entrées-sorties, etc.) sont définies par un document papier.

 Elle possède un langage natif propre et traduit un programme


écrit dans ce langage vers le langage natif de l’ordinateur.

 La compilation d'un programme Java crée du pseudo-code


portable : le "bytecode".

 Sur n'importe quelle plateforme, une machine virtuelle Java


peut interpréter le bytecode afin qu'il soit exécuté.
La Plateforme JVM(2)
53

Rôle de la JVM: Portabilité


La Plateforme JVM(3)
54

Rôle de la JVM:
Portabilité
La Plateforme API (Application Programming
Interface)
55

 Java fournit de nombreuses librairies de classes


remplissant des fonctionnalités très diverses : c'est
l'API Java
 API (Application and Programming Interface /Interface
pour la programmation d'applications) : Ensemble de
bibliothèques permettant une programmation plus aisée
car les fonctions deviennent indépendantes du matériel.

 Ces classes sont regroupées, par catégories, en


paquetages (ou "packages").
La Plateforme API (Application Programming
Interface)
56

 Les principaux paquetages :


 java.util : structures de données classiques

 java.io : entrées / sorties

 java.lang : chaînes de caractères, interaction avec l'OS, threads

 java.applet : les applets sur le web

 java.awt : interfaces graphiques, images et dessins

 javax.swing : package récent proposant des composants

« légers » pour la création d’interfaces graphiques


 java.net : sockets, URL

 java.rmi : Remote Method Invocation (pas abordé dans ce

cours)
 java.sql : fournit le package JDBC (pas abordé dans ce cours)
Plateforme Java: Comparaison entre C++ et java
57

C++ Langage Compilé


Etapes qui ont lieu avant l'exécution:

Fichier
de Librairies
code

Programme
Compilation Code objet Edition de liens
exécutable

Autres code objet


Fichier
d'entête
Plateforme Java: Comparaison entre C++ et java
58

Java Langage Compilé et Interprété Avant exécution Exécution

Autres byte code

Fichier
Byte code Machine virtuelle
de code Compilation
Java (JVM)
Java

javac MaClasse.class java


MaClasse.java
Plateforme Java: Comparaison entre C++ et java
59

Exemple:
Plan du chapitre2
60

1. Historique
2. Plateforme Java
3. Caractéristiques de java
4. Comparaison avec C++
Caractéristiques de Java (1)
61

 Orienté objet:
 Meilleure modularité.

 Maintenance aisée des applications.

 Optimisation des composants.

 Simple:
 Supprime les aspects lourds et pénibles comme l'héritage multiple.
 Interdit la manipulation de pointeurs générateurs de nombreux

bugs.
 Fournit via sonApplication Programming InterfaceAPI un très

grand nombre d'outils avec des fonctionnalités puissantes qui vont


simplifier et accélérer le développement d'applications.
 Syntaxe proche du C/C++ mais plus simple.
Caractéristiques de Java (2)
62

 Sécurisé:
 Limitation des erreurs par la syntaxe.
 Vérification par le compilateur et l'interpréteur.

 Portable: Indépendant de la plate-forme


 Une même application puisse s'exécuter sur différents ordinateurs,

en s'abstrayant des spécificités du matériel et du système.


 Le bytecode généré par le compilateur est indépendant de toute

architecture. Toute application peut donc tourner sur une plate-


forme implémentant une machine virtuelle Java

« Ecrire une fois, exécuter partout »


Caractéristiques de Java (3)
63

 Multi-thread
 Un thread est une entité d'exécution qui peut s'exécuter en
parallèle d'une manière concurrente à d'autres threads au sein
d'une même application.
 Lancement de plusieurs threads en même temps sans blocage.

 Réparti:
 JAVA supporte des mécanismes de communication à distance
au moyen de son API réseau.
Caractéristiques de Java (3)
64

 Fiable
 Gestion automatique de la mémoire
(ramasse-miette ou "garbage collector")
 Gestion des exceptions
 Sources d'erreurs limitées
 typage fort,
 pas d'héritage multiple,
 pas de manipulations de pointeurs, etc.
 Vérifications faites par le compilateur facilitant une plus
grande rigueur du code
Outil de développement : le JDK
65

 Environnement de développement fourni par Sun


 JDK signifie Java Development Kit (Kit de
développement Java).
 Il contient :
 les classes de base de l'API java (plusieurs centaines),
 la documentation au format HTML
 le compilateur : javac
 la JVM (machine virtuelle) : java
 le visualiseur d'applets : appletviewer
 le générateur de documentation : javadoc
 etc.
Plan du chapitre2
66

1. Historique
2. Plateforme Java
3. Caractéristiques de java
4. Comparaison avec C++
Comparaison avec C++
67

 Pas de pointeurs, seulement des références


 Pas de typedef
 Pas de variables ni de fonctions en dehors des classes
 Pas de fonctions à nombre variable d’arguments
 Pas d'héritage multiple de classes
 Pas de surcharge d’opérateurs
 Pas de passage par copie pour les objets
Java, Inconvénients?
68

 Inconvénients :
 Nécessite l’installation d’un interpréteur pour
pouvoir exécuter un programme Java
 L'interprétation du code ralentit l'exécution
 Gestion gourmande de la mémoire
 Impossibilité d’opérations de « bas niveau » liées au
matériel

Vous aimerez peut-être aussi