Programmation Orientée Objet
Introduction à Java
Riadh BOUSLIMI
1
PRÉSENTATION
2
Programmation orientée objet
Qu’est ce que la programmation objet
❑ « La programmation orientée objet (POO), ou programmation par
objet, est un concept de programmation informatique élaboré par les
Norvégiens Ole-Johan Dahl et Kristen Nygaard au début des années 1960
et poursuivi par les travaux de l’Américain Alan Kay dans les années 1970.
Il consiste en la définition et l’interaction de briques logicielles appelées
objets. »
❑La programmation procédurale consiste à écrire des procédures ou des
fonctions qui effectuent des opérations sur les données, tandis que la
programmation orientée objet consiste à créer des objets contenant à la
fois des données et des fonctions.
❑Exemples de langages de programmation orientés objets :
Java, C++, Python, C#, Ruby, etc.
3
Programmation orientée objet
La Programmation Orientée Objet
❑ Les concepts de base de la POO sont :
▪ L’abstraction
▪ La modularité
▪ L’encapsulation
▪ Le polymorphisme
❑ Les outils qui supportent ces concepts sont :
▪ Les classes ou les prototypes En Java
▪ L’héritage (simple ou multiple)
▪ Le système de typage (statique ou dynamique, explicite ou inféré)
❑ Points forts (supposés)
▪ Du code plus proche du monde réel et donc plus facile à assimiler et à maintenir.
▪ Stabilité accrue : les modifications ne s’appliquent que localement à des sous-systèmes.
4
Programmation orientée objet
Gestion d’une bibliothèque d’une université
Objets Fonctions (méthodes)
❑ Etudiant ❑ Trouver les livres disponibles
▪ Etat, livres, emprunts ❑ Trouver les livres par thème
❑ Livre ❑ Trouver les étudiants retardataires
▪ Etudiants, emprunts
❑ Vérifier l’état d’un étudiant
❑ Thème
❑ Déterminer les livres non rendus
▪ Année, Livres
❑ Calculer le nombre d’emprunts
❑ Emprunt
▪ Etudiants, livre
Des données Des comportements
Les objets s’échangent des messages en
fonction de leurs comportements associés.
10
5
Programmation orientée objet
Les avantages et les inconvénients
La programmation orientée objets admet des avantages mais aussi des inconvénients :
❑ Les avantages sont :
➢ Amélioration de la productivité du développement logiciel: la programmation orientée objet est
modulaire. Les objets peuvent également être réutilisés dans plusieurs applications.
➢ Amélioration de la maintenabilité des logiciels: puisque La conception étant modulaire, une partie
du système peut être mis à jour en cas de problèmes sans avoir besoin de faire changements.
➢ Développement plus rapide : la réutilisation permet un développement plus rapide.
➢ Réduction des coûts de développement et meilleure qualité logiciel: la réutilisation des logiciels
réduit également le coût de développement. Ce qui permet d'utiliser plus de temps et de ressources
pour la vérification du logiciel.
❑ Les inconvénients sont :
➢ Nécessite du temps d’apprentissage : pour s’habituer aux techniques de programmation tel que
l’héritage et le polymorphisme.
➢ La grande taille de programme: les programmes orientés objets impliquent généralement plus de
lignes de code que les programmes procéduraux.
➢ Programmes plus lents: les programmes orientés objet sont généralement plus lents que les
programmes basés sur des procédures, car ils nécessitent généralement plus d'instructions pour être
6
exécutées.
Programmation orientée objet
Qu'est-ce que java?
❑Le langage Java a été initialement développé par James
Gosling chez Sun Microsystems, qui est maintenant une filiale
d'Oracle Corporation, et lancé en 1995 en tant que James Gosling
composant principal de la plateforme Java de Sun
Microsystems.
❑Java est dérivé d’une grande partie de sa syntaxe de C / C ++,
mais il a moins de fonctionnalités de bas niveau de l’un ou de
l'autre.
7
Programmation orientée objet
Caractéristiques principales de java?
❑Il y avait 5 objectifs principaux dans la création du
langage Java.
❑Il devrait:
➢ être simple, orienté objet et familier
➢ robuste et sécurisé
➢ être indépendant de l'architecture et portable
➢ s’exécuter avec des performances élevées
➢ être interprété, multithreadé et dynamique
8
Programmation orientée objet
Historique des versions de Java
9
Programmation orientée objet
Java vs c++
❑ Le C++ dépend de la plateforme par contre Java est indépendant. Le
code source en C++ est compilé en code natif (exécutable), qui ne
s'exécute que sur une architecture particulière.
❑ Le code Java est compilé en bytecode qui peut s'exécuter sur n’importe
quelle plateforme dont il foudre installer une machine virtuelle Java.
❑ Les bytecodes produits sur une machine pourront s'exécuter sur des
architectures différentes.
❑ Le programme est distribué à la fois de manière compilé et portable.
1
0
Programmation orientée objet
Exécution du code java
Lors de l'exécution d'un programme Java compilé, la machine virtuelle Java
JVM:
❑ Lit le bytecode
❑ Vérifie qu'il est correct
❑ Optimise les instructions
❑ Compile le bytecode en code natif
❑ Exécute le code natif
Java produit un code (bytecode) qui est portable. Il est robuste (il est sûr, typé statiquement et
fortement) et performant (il est exécuté après une compilation en code natif)
1
1
Programmation orientée objet
Concept d’objet
- Un objet consiste à encapsuler l’état et le comportement dans une
seule unité de programmation.
- Un objet java est un objet du monde réel.
- Exemple :
Comportement
[Link]() [Link]() [Link]() [Link]()
[Link]élérer() [Link]() [Link]() [Link]()
[Link]() [Link]() [Link]() 1
[Link]() 2
ENVIRONNEMENT DE DÉVELOPPEMENT
13
Programmation orientée objet
Compilateur
❑Le processeur de l’ordinateur ne comprend pas le code Java (code
source)
❑Le compilateur traduit (compile) le code source
▪ Vers du code binaire natif (langage compilé)
• Spécifique à un processeur donné
• Spécifique au système d’exploitation utilisé
▪ Vers un langage neutre (ex: bytecode)
• Ce langage neutre est alors interprété par la machine virtuelle java (Java Virtual Machine -
JVM)
❑ Un interpréteur interprète directement le code source (langage
interprété)
14
Programmation orientée objet
Processus de compilation en Java
Fichier source [Link]
Compilation javac [Link]
(JDK)
interprétation
bytecode java Test
[Link]
API JRE 7.0
JRE
OS Windows, Mac, Linux
Processeur Intel, AMD
15
Programmation orientée objet
Méthode main – Arguments en paramètre
❑ En Java, args contient les arguments de ligne de commande fournis
sous forme de tableau d'objets String.
[Link]:
public class Test {
public static void main(String[] args) {
[Link](« Bonjour " + arg[0] + " " + arg[1]);
}
}
> javac [Link]
> dir
[Link]
> java Test BOUSLIMI Riadh
Bonjour BOUSLIMI Riadh
16
Programmation orientée objet
Méthode main – java Test
[Link]: [Link]:
public class Test { class Voiture {
int vitesse;
String modele ;
Voiture v = new Voiture(1, "Peugeot");
void accelerer () {
[Link]()
vitesse += 1;
[Link]();
}
[Link]();
void freiner() {
Vitesse =-1;
}
}
17
Programmation orientée objet
Méthode main – java Test
[Link]: [Link]:
public class Test { class Voiture {
int vitesse;
public static void main(String[] args) { String modele ;
Voiture v = new Voiture(1, "Peugeot");
void accelerer () {
[Link]()
nombreDeNotes += 1;
[Link]();
}
[Link]();
[Link]("Modèle=" + [Link] +
void freiner() {
"Vitesse=" + [Link]);
Vitesse =-1;
}
}
18
Programmation orientée objet
Méthode main – java Test
[Link]: > dir
[Link]:
[Link]
class Voiture {
public class Test {
[Link]
int vitesse;
public static void main(String[] args) { > String modele ;
javac [Link]
Voiture v = new Voiture(1, "Peugeot"); > dir
void accelerer () {
[Link]
[Link]()
nombreDeNotes += 1;
[Link]
[Link]();
}
[Link](); [Link]
[Link]("Modèle: " + [Link] + [Link]
void freiner() {
", Vitesse=" + [Link]);
Vitesse
> java Test =-1;
}
Modèle: Peugeot, Vitesse : 2
}
19
Quizz
1) Java est un langage
(a) Compilé
(b) Interprété
(c) Compilé et interprété
(d) Ni compilé ni interprété
2) Java est un langage développé par
(a) Hewlett-Packard
(b) Sun Microsystems
(c) Microsoft
(d) Oracle
3) Lequel de ces langages de programmation n’est pas orienté objet?
(a) C++
(b) Java
(c) C
(d) Python
4) Qu’est-ce que l’état d’un objet?
(a) C’est l’ensemble des méthodes d’un objet.
(b) C’est l’ensemble des attributs d’un objet.
(c) C’est la valeur des attributs d’un objet.
(d) C’est l’ensemble des méthodes et attributs d’un objet 2
0
Bibliographie
❑ Apprendre la Programmation Orientée Objet avec le langage Java,
Luc Gervais, Eni Ressources Informatiques, 385 pages, 16 mai 2018
❑ L'orienté objet, Hugues Bersini & Ivan Wellesz, Eyrolles, 602 pages,
3ème édition, 1er avril 2007
2
1