1. Introduction à la Programmation
Orientée Objet (POO) - Java
LSIA - L2
TRAORE Yaya
Institut Burkinabè des Arts et Métiers (IBAM)
Université Joseph KI-ZERBO
2. Objectifs du cours
familiariser l'étudiant avec la programmation élémentaire en Java: types,
constantes versus variables, les énoncés de contrôle, les boucles, les
tableaux, en utilisant les concepts de la programmation objet: classes, objets,
méthodes
fournit une bonne expérience théorique et pratique de la programmation
orientée objets (P.O.O.) avec Java avec l'apprentissage de :
– l'écriture, la compilation et le débogage de programmes
– les concepts objets et les mécanismes d'héritage
3. 3
Organisation du cours
Nous verrons :
– Approche de la programmation orientée objet
– Caractéristiques de Java et son environnement de développement
– Structures fondamentales
– Héritage ,Polymorphisme
– Les exceptions, les entrées / sorties en Java
– Les collections en Java
4. 4
Références (1)
Bibliographie
– Au cœur de Java 2 : Volume I - Notions fondamentales.
C. Hortsmann et G. Cornell. The Sun Microsystems Press.
Java Series. CampusPress.
– Au cœur de Java 2 : Volume II - Fonctions avancées.
C. Hortsmann et G. Cornell. The Sun Microsystems Press.
Java Series. CampusPress.
– Passeport pour l’algorithmique objet. Jean-Pierre Fournier.
Thomsom Publishing International.
5. 5
Références (2)
Webographie
– Pour récupérer le kit de développement de Sun
• http://java.sun.com/ (racine du site)
– Outils de développement
• Eclipse (http://www.eclipse.org)
• Netbeans (http://www.netbeans.com)
• Borland JBuilder (http://www.borland.com/jbuilder)
– Des exemples de programmes commentés
• http://www.technobuff.com/javatips/ (en anglais)
• http://developer.java.sun.com/developer/JDCTechTips/ (en
anglais)
6. 6
Du problème au programme
Nécessité d’analyser le problème pour pouvoir le
traduire en une solution informatique
(cela semble évident, mais pourtant!)
– avant de construire un bâtiment, on fait un plan. Ce n’est
pas différent en informatique : conception de
l’algorithme, i.e. une réponse (rationnelle) au problème
posé
– puis mise en œuvre technique - le codage - dans un
langage de programmation, dans notre cas Java.
7. 7
Analyse du problème (1)
Se poser les bonnes questions
– Quelles sont les objets qui interviennent dans le
problème? Quelles sont les données, les objets,
que le programme va manipuler?
– Quelles vont être les relations entre ces objets?
Quelles sont les opérations que je vais pouvoir
effectuer sur ces objets?
8. 8
Analyse du problème (2)
Savoir être :
– efficace : quelle méthode me permettra
d’obtenir le plus vite, le plus clairement, le plus
simplement possible les résultats attendus ?
– paresseux : dans ce que j’ai développé avant,
que puis-je réutiliser ?
– prévoyant : comment s’assurer que le
programme sera facilement réutilisable et
extensible ?
10. Chaque langage de programmation appartient à une “famille” de langages
définissant une approche ou une méthodologie générale de programmation.
La programmation procédurale propose une méthodologie centrée en priorité
sur les traitements que le programme devra effectuer.
Par exemple , un programmeur C commencera par identifier ces traitements
pour écrire les fonctions qui les réalisent sur des données prises comme
paramètres d’entrée.
La programmation orientée-objet propose une méthodologie centrée sur les
données.
Par exemple le programmeur Java va d’abord identifier un ensemble
d’objets,tel que chaque objet représente un élément qui doit être utilisé ou
manipulé par le programme, sous la forme d’ensembles de données. Ce n’est
que dans un deuxième temps, que le programmeur va écrire les traitements, en
associant chaque traitement à un objet donné.
Approche POO(1)
11. Qu'est ce qu’un Programme Orientée Objet ?
– Ensemble d'objets autonomes et responsables qui s'entraident pour
résoudre un problème final en s'envoyant des messages.
Objet 1
Objet 2
Objet 3
Message
Approche POO(2)
12. Qu’est ce qu’un objet
– Objet = Données + Méthodes (Fonctions Membres)
DONNEES
Fonction 1 Fonction 2
Fonction
3
Fonction 4
Fonction 5
Fonction
6
Approche POO(3)
13. Encapsulation des données
– L’accès aux données des objets est réglementé
• Données privées à accès uniquement par les fonctions
membres
• Données publiques à accès direct par l’instance de l’objet
– Conséquences
• Un objet n’est vu que par ses spécifications
• Une modification interne est sans effet pour le fonctionnement
général du programme
• Meilleure réutilisation de l’objet
Approche POO(4)
14. Polymorphisme (du Grecqueàplusieurs formes)
– Un nom (de fonction par exemple) peut être associé à plusieurs
mais différentes utilisations
– Exemple
• Si a est un nombre complexe, sqrt(a) appellera si elle existe la
fonction adaptée au type de a.
• Dans un langage non OO, il aurait fallu connaître le nom de
deux fonctions distinctes (selon que a soit complexe ou réel)
• C’est le système qui choisit selon le type de l’argument ou de
l’opérande
Approche POO(5)
15. L’Héritage
– Permet de définir les bases d’un nouvel objet à partir d’un objet
existant
– Le nouvel objet hérite des propriétés de l’ancêtre et peut recevoir
de nouvelles fonctionnalités
Avantages
– Meilleures réutilisations des réalisations antérieures parfaitement
au point
Approche POO(6)
16. Concept de Classe
– Type réunissant une description
• D’une collection de données membres hétérogènes ayant un
lien entres elles
• D’une collection de méthodes (fonctions membres) servant à
manipuler les données membres
– Généralisation du type structure ou record des langages non OO
(classe = définition de données + définition de méthodes)
– Possibilité de fixer la visibilité externe des différents constituants
de la classe
Instance d’une classe
– C’est un objet initialisé à partir de la description figée d’une classe
Fonctions membres publiques
– Les constructeurs ;Les destructeurs;
– Les accesseurs ;Les mutateurs
Approche POO(7)
17. Instance d’une classe
– C’est un objet initialisé à partir de la description figée d’une classe
Fonctions membres publiques
– Les constructeurs
– Les destructeurs
– Les accesseurs
– Les mutateurs
Approche POO(8)
18. Les Constructeurs
– Permettent d’initialiser l’objets lors de sa création
• copie des arguments vers les données membres
• initialisation de variables dynamiques à la création de l’objet
– Sont appelés de manière automatique à la création de l’objet
– Peuvent être surchargésàOn peut en définir plusieurs de même
nom mais acceptant des arguments différents
– Possèdent le même nom que la classe
Approche POO(9)
19. Les Accesseurs
– Catégorie de fonctions membres qui permettent l’accès et
l’utilisation des informations privées contenues dans l’objet
Les Mutateurs
– Permettent de modifier l’état des données internes (publiques ou
privées) de l’objet
Approche POO(10)
21. Le langage Java est un langage généraliste de programmation synthétisant les
principaux langages existants lors de sa création en 1995 par Sun Microsystems.
Il permet une programmation orientée-objet et reprend une syntaxe très proche de
celle du langage C.
Outre son orientation objet, le langage Java a l’avantage d’être:
Ø modulaire (on peut écrire des portions de code génériques, c-à-d
utilisables par plusieurs applications),
Ø rigoureux (la plupart des erreurs se produisent à la compilation et non à
l’exécution)
Ø portable (un même programme compilé peut s’exécuter sur différents
environnements).
Java est un langage de programmation
22. 22
JAVA est un langage interprété (1)
Java est un langage interprété
– La compilation d'un programme Java crée du pseudo-code
portable : le "byte-code"
– Sur n'importe quelle plate-forme, une machine virtuelle Java peut
interpréter le pseudo-code afin qu'il soit exécuté
Les machines virtuelles Java peuvent être
– des interpréteurs de byte-code indépendants (pour exécuter les
programmes Java)
– contenues au sein d'un navigateur (pour exécuter des applets Java)
23. JAVA est un langage interprété (2)
23
Exécution
Avant exécution
Fichier
de code
Java
MaClasse.java
Compilation
javac
Autres byte code
Machine virtuelle
Java (JVM)
java
Byte code
MaClasse.class
24. Compilation : La compilation s’effectue par la commande javac suivie d’un ou
plusieurs nom de fichiers contenant le code source de classes Java.
Par exemple, javac MaClasse.java compile la classe MaClasse dont le code
source est situé dans le fichier MaClasse.java.
Interprétation : Le bytecode obtenu par compilation ne peut être exécuté qu’à
l’aide de l’interpréteur. L’exécution s’effectue par la commande java suivie du
nom de la classe à exécuter (sans l’extension .class). Comme lors de la
compilation, il se peut que des classes d’autres répertoires soient nécessaires.
Par exemple, java MaClasse
NB: Il est nécessaire de configurer les variables d’environnement pour ajouter
à path le chemin d’accès au JDKBIN où se trouve les commandes javac et java
JAVA est un langage interprété (3)
25. L’API de Java (1)
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").
25
26. 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)
26
L’API de Java (2)
27. L’API de Java (3)
La documentation de Java est standard, que ce soit pour les classes de
l'API ou pour les classes utilisateur
– possibilité de génération automatique avec l’outil Javadoc.
Elle est au format HTML.
– intérêt de l'hypertexte pour naviguer dans la documentation
Pour chaque classe, il y a une page HTML contenant :
– la hiérarchie d'héritage de la classe,
– une description de la classe et son but général,
– la liste des attributs de la classe (locaux et hérités),
– la liste des constructeurs de la classe (locaux et hérités),
– la liste des méthodes de la classe (locaux et hérités),
– puis, chacune de ces trois dernières listes, avec la description
détaillée de chaque élément.27
28. L’API de Java (5)
Où trouver les informations sur les classes de l’API
– sous le répertoire jdk1.x/docs/api dans le JDK
• les documentations de l’API se téléchargent et s’installent (en général)
dans le répertoire dans lequel on installe java.
Par exemple si vous avez installer Java dans le répertoire
D:/Apps/jdk1.4/, vous décompresser le fichier zip contenant les
documentations dans ce répertoire.
Les docs de l’API se trouveront alors sous :
D:/Apps/jdk1.4/docs/api/index.html
– Sur le site de Sun, on peut la retrouver à http://java.sun.com/docs/index.html
– Ou sur le site de oracle
28
29. Outil de développement (1)
3 choix sont possibles :
ü Choix 1 : JDK
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.
29
30. ü Choix 2 : Environnement de développement Intégré (IDE) (Freeware)
• offrent une interface graphique au JDK
• des outils supplémentaires (générateurs d'interface...)
• exemple : Eclipse, NetBeans
ü Choix 3 : Environnement de développement professionnel
• très puissants
• très chers…
• exemples:
ØJBuilder 2 de Inprise (anciennement Borland)
ØVisual J++ de Microsoft
Outil de développement (2)
31. Deux façons d’écrire des programmes Java:
En écrivant le code dans un simple éditeur de texte
– Compilation et exécution du code en ligne de commande DOS
En utilisant un environnement de développement (IDE)
– Eclipse (http://www.eclipse.org)
– Netbeans (http://www.netbeans.com)
– Borland JBuilder (http://www.borland.com/jbuilder)
– …
TP1
TP2
Application JAVA
32. Une application Java
– est composée d’une classe possédant une méthode main() :
public static void main (String[] args){
//code à exécuter pour initialiser l’application
}
Exemple :
public class Etudiant {
public static void main(String[] args) {
String x = args[0];
String y = args[1];
System.out.println(“Etudiant de nom : “+y+ “ ” +x);
}
}
• Compiler le programme : javac Etudiant.java
• Le compilateur génère le bytecode dans le fichier : Etudiant.class
• Exécuter l’application : java Etudiant TRAORE Yaya
• « Etudiant de nom : Yaya TRAORE » s’affiche à l’écran
Premier programme JAVA