0% ont trouvé ce document utile (0 vote)
80 vues54 pages

Introduction à la Programmation Java

Ce document présente les concepts de base de la programmation orientée objet avec Java. Il décrit les chapitres du cours, notamment les classes, les objets et les paradigmes de la POO.

Transféré par

jiraya sarutobi
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
80 vues54 pages

Introduction à la Programmation Java

Ce document présente les concepts de base de la programmation orientée objet avec Java. Il décrit les chapitres du cours, notamment les classes, les objets et les paradigmes de la POO.

Transféré par

jiraya sarutobi
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Programmation

Orientée Objet
Java
Enseignant : Ramzi Mahmoudi

mahmoudr@[Link]
Année Universitaire: 2012/2013
Plan des chapitres
1. Introduction
2. Les bases du langage
3. La Programmation Objet avec Java
4. Des concepts avancés de la
programmation orientée objet Java
5. Les classes de base

2
Chapitre I
Introduction
Le développement d’applications
aujourd’hui
Développement de logiciels
 Une application peut comprendre des milliers
de lignes de code
 Systèmes bancaires ou systèmes de contrôle
(l'électricité, les téléphones, l'aéroport),
 Systèmes de simulation ou de modélisation (les
domaines de la biologie, de l'économie)
 Un système implique alors la participation
de plusieurs programmeurs

4
Programmation proche de la machine
 Nécessité de faciliter cette analyse et surtout sa
transcription la plus directe possible en un programme

 L’algorithme est une solution conceptuelle, le


programme est la solution technique mettant en œuvre
l’algorithme.

 Au début de l’informatique, les langages étaient proches


de la machine

 une solution conceptuelle était difficile à mettre en


œuvre sans de bonnes connaissances techniques.

5
La « Crise du Logiciel » (1960, 1970)
 Coût de production de logiciel qui marche est trop
élevé
 Idée: Diviser pour régner

Il faut structurer les systèmes en composants


pour faciliter la coopération des
programmeurs, favoriser les tests, la
réutilisation des codes, …

6
Programmation orientée traitement
 Principe : « diviser pour régner » :
 on conçoit un ensemble de procédures pour résoudre le
problème
 on décide d’abord de la manière dont on va manipuler les
données puis on conçoit les structures de données pour
faciliter cette manipulation.
 une procédure est un regroupement d’instructions dans un bloc
que l'on pourra appeler par son nom

void affichage(int i)
{
int j;
Ecrire ( "entrez une valeur pour j"); Lire (j);
Ecrire ("la variable passée en paramètre vaut : " ,i);
Ecrire ("la variable déclaré dans la procédure vaut: ", j);
}

7
Programmation orientée traitement
 Limitation de cette approche (exemple) :
 Un changement dans la structure des données peut
entraîner de profondes modifications dans l'organisation
des procédures.
 il y a la difficulté de :
 Chercher les fonctions concernées par ce changement
 Pour les fonctions concernées :
 Ajout ou suppression d’arguments et de variables locales
 Ajout ou modification ou suppression d’instructions

8
Développement de logiciels
 Problème
 Développer des logiciels de qualité à un coût acceptable
 Solution
 Méthode de construction de logiciel modulaire

 Conception et programmation par objets:


• méthodologie de conception de logiciel qui répond bien aux
exigences de qualité

9
Les langages Objets
 Langages objets : 1969
 Simula
 Smalltalk
 C → Objective C, C++
 Pascal : Pascal Objet, Delphi (Borland)
 Basic : VBA (Microsoft)
 Java
 C# (Microsoft)
 Python (script)

10
I.1.
Paradigmes de la
programmation par objets
SmallTalk, Eiffel, C++, Java, C#, …
Développement…
 Approche procédurale :
"Que doit faire mon programme ?"

Exemple: Gestion d'une bibliothèque

Germinal
E. Zola
Le Monde Alice Dupont Anne Durand
Directrice
Lectrice

Le seigneur des anneaux Arsène Deschamps


Michel Martin Lecteur
[Link] Bibliothécaire

12
Développement…
 Approche procédurale :
Gérer les emprunts
"Que doit faire mon programme ?" de livres

Exemple: Gestion d'une bibliothèque

Germinal
E. Zola
Le Monde Alice Dupont Anne Durand
Directrice
Lectrice

Le seigneur des anneaux Arsène Deschamps


Michel Martin Lecteur
[Link] Bibliothécaire

13
Objet
 Approche procédurale :
"Que doit faire mon programme ?"
 Approche orientée-objet :
"De quoi doit être composé mon programme ?"
 Cette composition est conséquence d'un choix de modélisation fait
pendant la conception

Germinal
E. Zola
Le Monde Alice Dupont
Anne Durand
Directrice Lectrice

Arsène Deschamps
Le seigneur des anneaux Michel Martin Lecteur
[Link] Bibliothécaire

14
Classe
Des objets similaires peuvent être informatiquement décrits par une
même abstraction : une classe
 même structure de données et méthodes de traitement
 valeurs différentes pour chaque objet
Classe Livre Classe Lecteur
Classe Employé
Classe Journal

Germinal
E. Zola
Le Monde Alice Dupont Anne Durand
Directrice
Lectrice

Le seigneur des anneaux Arsène Deschamps


Michel Martin Lecteur
[Link] Bibliothécaire

15
Classe
Classe Lecteur
Classe Livre Classe Employé -nom, prénom
-titre, auteur Classe Journal -nom, prénom, statut
-nom, date

Germinal
E. Zola
Le Monde Alice Dupont Anne Durand
Directrice
Lectrice

Arsène Deschamps
Le seigneur des anneaux Michel Martin Lecteur
[Link] Bibliothécaire

16
Classe
Classe Lecteur
Classe Livre Classe Employé -nom, prénom
-titre, auteur Classe Journal -nom, prénom, statut
-titre

-Nom=Dupont
Titre = germinal - prénom = Alice
Auteur = zola
Germinal -Statut = directrice
E. Zola
Le Monde Alice Dupont
Anne Durand
Directrice Lectrice
Titre = Seigneur des anneaux
Arsène Deschamps
Auteur =des
Le seigneur Tolkien
anneaux Michel Martin Lecteur
[Link] Bibliothécaire

17
Classe
Classe Lecteur
Classe Livre -nom, prénom
-titre, auteur + ListeDeLivres livresEmpruntés()
+Date emprunter(Lecteur)
Classe Employé
Classe Journal -nom, prénom, statut
-titre

Germinal
E. Zola
Le Monde Alice Dupont
Anne Durand
Directrice Lectrice

Arsène Deschamps
Le seigneur des anneaux Michel Martin Lecteur
[Link]
Bibliothécaire

18
Classe
Classe Lecteur
Classe Livre -nom, prénom
-titre, auteur + ListeDeLivres livresEmpruntés()
+Date emprunter(Lecteur)
Classe Employé
Classe Journal -nom, prénom, statut
-titre Classe ListeDeLivres
Classe Date
+ getLivre(numéro)
-jour, mois, ...
+ nombres()
Germinal
E. Zola
Le Monde Alice Dupont
Anne Durand
Directrice Lectrice

Arsène Deschamps
Le seigneur des anneaux Michel Martin Lecteur
[Link]
Bibliothécaire

19
Contenu d'une classe
Une classe est composée de plusieurs membres dont chacun est soit :
 un attribut : variable typée
 une méthode (ou opération) : ensemble d'instructions de
traitement
class CompteBancaire {
String proprietaire;
Attributs double solde;

double getSolde() {
return solde;
}
Méthodes
void credite(double val) {
solde = solde + val;
}
}
20
Programmation orientée objet
 Orienté objet est une technique pour modéliser
des systèmes réels

 Comprendre un problème (ou un système) réel


 complexe, beaucoup d ’information, de détails

 Modèle = vue abstraite du problème


 passage du monde réel au monde informatique
 retenir les propriétés essentielles:
données + opérations
21
Programmation orientée objet
 Un programme est défini en terme d’objets

 Objet est une entité avec


un état et un comportement
 Plusieurs instances de la même
classe (objets) avec chacune son état propre
 Les objets communiquent
entre eux à l’aide de messages

22
Première application
 Créer un fichier texte : [Link]
 Règle de bonne pratique : 1 classe par fichier et 1 fichier par
classe (même nom)
 Nom de la classe commence par Majuscule, nom de la
fonction en minuscule

public class HelloWorld La première ligne du programme doit être


la déclaration de la classe
{
Tout programme doit contenir une
public static void main (String[]args)
méthode main qui porte la signature ci-
{ contre
[Link]("Hello the world"); Écrire à l’écran “Hello the World”
}
} Fermer les accolades

23
Première application
 Le mot class veut dire que nous allons définir une nouvelle
classe Java, suivi du nom de cette classe.
 En Java, les majuscules et les minuscules sont considérés
comme des caractères différents.
 Les caractères « { » et « } » marquent le début et la fin du bloc
d’instructions à réaliser par la classe.

 Le mot main indique que cette méthode est la méthode


principale de la classe.
 Un interpréteur Java à pour fonction d’exécuter les
instructions de la méthode principale main
main,, du programme
qu’on lui soumet.

24
Première application
 Une méthode peut prendre des paramètres de types précis
et renvoie éventuellement une valeur de type tout aussi
précis.
 le mot void signifie que la méthode main ne renvoie aucune
valeur.
 args[ ] est le paramètre d’entrée de type String de la méthode
main.
 les mots public et static décrivent chacun une caractéristique
de la méthode (public
(public : méthode visible, static : spécifique à
la classe et non aux objets)
 [Link] est une commande permettant d’afficher la
chaîne de caractère « Hello the World»
World» sur la sortie standard
de la machine qui est l’écran

25
Structure d’une application Java
 Parmi les classes
Fichier «[Link] »
définies dans le fichier
[Link] il ne peut y
Définition d’une classe AAA
avoir qu’une seule
classe publique et
ayant le même nom Définition d’une classe BBB
CCC que le fichier.
Définition d’une classe CCC
Méthode main ( )
 Elle contient
généralement la
méthode main()

26
Compilation et exécution
 Pour exécuter, dans une console DOS ou UNIX, si j’ai
un fichier [Link] pour la classe HelloWorld :

 javac [Link]
 Compilation du code java

 Indication des erreurs de syntaxe éventuelles

 Génération d’un fichier [Link] si pas d’erreurs

 java HelloWorld
 Java est la machine virtuelle

 Exécution du bytecode ([Link])

 Nécessité de la méthode main, qui est le point d’entrée dans


le programme

27
I.2.
Mécanisme de
programmation par objets
Instanciation
Envoi de message
Héritage
Instanciation
L'instanciation est l'opération qui consiste à créer un objet à partir
d'une classe.

En Java, le mot-clé new provoque une instanciation en faisant appel


à un constructeur de la classe instanciée.

 Un constructeur est une méthode qui a le même nom que la


classe
 Un constructeur n'a pas de valeur de retour
 Plusieurs constructeurs peuvent exister dans une même
classe (avec des arguments différents)
 Il faut au moins un constructeur dans une classe pour en
instancier des objets

29
Constructeur de la classe Livre
public class Livre {
private String titre;
private String auteur;
private Lecteur emprunteur;
public Livre(String t, String a) {
titre = t;
auteur = a;
Constructeur
emprunteur = null;
}
public void setTitre(String t) {
titre = t;}
public String getTitre() {
return titre;}

public Date emprunte(Lecteur lec) {



}
}
30
Instanciation de la classe Livre
public class Bibliotheque {

public void enregistreLivre(String titre, String ecrivain) {


Livre nouveauLivre;
nouveauLivre = new Livre(titre,ecrivain);
ajouteEnBibliotheque(nouveauLivre);
}

public void ajouteEnBibliotheque(Livre li) {



}
}

31
Invocation de méthodes
livresEmpruntés?
Anne Durand
Un point . sépare le nom de la méthode de l'objet Lectrice

sur lequel elle est invoquée.



Lecteur lecteur1 = new Lecteur("Anne","Durand");
Livre monLivre = new Livre("Germinal", "Zola"); Arsène Deschamps
Lecteur
String titreDuLivre = [Link]();

ListeLivres l1 = [Link]és();
for (int i =0; i < [Link](); i++)
[Link]([Link](i).getTitre());

32
Exemple
public class Livre { public class Lecteur {
private String titre; private Livre[ ] emprunts;
private Lecteur emprunteur; private int nbEmprunts;
public boolean estEmprunte() { …
if (emprunteur == null) return
false; public boolean empruntePossible() {
else return true; if (nbEmprunts < 5) return true;
} else return false;
public Date emprunte(Lecteur lec) { }
if ( [Link]() == true)
return null; void ajouteEmprunt(Livre liv) {
if ( [Link]() ) { emprunts[nbEmprunts] = liv;
emprunteur = lec; nbEmprunts ++;
[Link]( this );
}
return new Date();
}
} else return null;
}
}
33
I.3.

Java, plus précisément ?


Historique, objectifs,
caractéristiques…
Historique
 Développé par les laboratoires de recherche de
Sun Microsystems au début des années 1990.
 Développé comme une alternative au C/C++.
 Langage principalement attribué à James Gosling
 Devrait être petit et portable.
 Ciblé pour du logiciel embarqué dans des produits de
consommation (appareils électroniques intelligents).

35
Historique
 Le nom Oak étant déjà commercialisé
 Le nom de JAVA fut adopté lors d’un passage dans un
café aux alentours.
 James Gosling,Arthur Van Hoff, and Andy Bechtolsheim
 Just Another Vague Acronym
 Java dévoilé en 1995
 Netscape intègre l’exécution de Java dans son navigateur
 Sun annonce un environnement de développement gratuit
 Java fait l’objet d’un brevet ce qui permet à SUN de le
contrôler
 1995 – 1996
 Grand concours de rédaction d’applettes qui popularisent
JAVA

36
C’est quoi Java ?
 Java est un langage de programmation
 Un programme Java est compilé et interprété
 Java est une plateforme
 La « Java Platform » est constituée de :
 La « Java Virtual Machine » (JVM)
 Des interfaces de programmation d’application (Java API)

37
L’API Java
 L'environnement Java propose une API (Application
Programmer's Interface)
 L’API Java est structuré en libraires (packages).
 Package : regroupement de classes ayant un lien logique entre
elles
 pour les utiliser dans d'autres classes
 pour les « spécialiser »

 Pour programmer efficacement, une bonne connaissance de


ces packages est indispensable

 Ne pas refaire ce qui a déjà était fait (d'ailleur surement en


mieux)

38
API Java : quelques classes standards
 [Link] : classes essentielles objet, types de base,
processus
 [Link] : structures de données (collections) listes,
ensembles, hashtables, arbres, itérateurs
 [Link] : interface graphique (Abstract Window Toolkit)
fenêtres, boutons, événements...
 [Link] : entrées / sorties flot de données provenant de fichier
ou buffer
 [Link] : réseau URL, sockets
 [Link] : objets distribués (Remote Method Invocation)
 [Link] : JDBC (Java Data Base Connectivity) connexion à
une base de données relationnelle envoi de requêtes SQL,
récupération des résultats
39
La JVM Java
 Définit les spécifications hardware de la plateforme
 Lit le bytecode compilé (indépendant de la plateforme)
 Implémentée en software ou hardware
 La JVM définit :
 Les instructions de la CPU
 Les différents registres
 Le format des fichiers .class
 La pile des instructions
 L’espace mémoire
 Trois tâches principales :
 Charger le code (class loader)
 Vérifier le code (bytecode verifier)
 Exécuter le code (runtime interpreter)

40
La JVM Java
 Avantages
 Développement plus rapide
 courte étape de compilation pour obtenir le byte-code,
 pas d'édition de liens,
 déboguage plus aisé,
 Le byte-code est plus compact que les exécutables
pour voyager sur les réseaux.
 Inconvénients :
 L'interprétation du code ralentit l'exécution de l'ordre de
quelques dizaines de fois plus lent que C++
 Java est gourmand en mémoire
41
Portabilité
MyProgram.c [Link]
Exécuté une seule fois
Exécuté une seule fois
Mais différent pour
Traduit le programme en un code
chaque environnement Compiler
intermédiaire Appelé bytecode –
Compiler indépendant de la machine
[Link]

Chaque fois que le


MyProgram.o programme est exécuté
Interpreter
010110…
Lit le bytecode et exécute sur la machine
Génère du code natif
directement exécutable, 010110…
mais spécifique à chaque
environnement

42
Portabilité

43
Caractéristiques
 Totalement portable : génère des octets de code après la
compilation (Bytecode)
 C’est un langage interprété.
 Indépendant de l’architecture: JVM (Java Virtual Machine)
 Totalement orienté objet.
 Ramasse-miettes automatique pour la gestion de la mémoire
(pas besoin de delete pour détruire objets).
 Librairies complètes(+/-) et normalisées.
 Facilitées de communication réseau incluses.
 Gestion propre des exceptions.

44
Caractéristiques
 Le langage Java est interprété :
 Un programme Java n'est pas compilé en code machine ;
 Il sera compilé en code intermédiaire interprété nommé
ByteCode.
 Lors de l'exécution le ByteCode sera interprété à l’aide
d’une machine dite virtuelle JVM (Java Virtual Machine).

 Le langage Java est portable et indépendant des


plates--formes :
plates
 Le code intermédiaire produit « ByteCode » est
indépendant des plates-formes.
 Il pourra être exécuté sur tous types de machines et
systèmes à condition qu'ils possèdent l'interpréteur de code
Java « JVM ».

45
Caractéristiques
 Simple et familier
 Apprentissage facile (syntaxe du langage C)
 Développeurs opérationnels rapidement (syntaxe du langage C)
 Suppression des concepts sources de bugs
 pointeurs
 include (fichier en-tête)
 Orienté Objet
 Java ne permet d'utiliser que des objets (hors les types de base)
 Fiable et robuste (en mémoire et en exécution)
 Sources d'erreurs limitées
 typage fort (Ada),
 pas de manipulations de pointeurs, etc. (qui est le cas du C++),
 Vérifications faites par le compilateur facilitant une plus grande
rigueur du code

46
Caractéristiques
 Le langage Java est distribué :
 Supporte des applications réseaux (protocoles de
communication [Link])
 URL : permet l ’accès à des objets distants
 RMI : Remote Method Invocation
 Programmation d'applications Client/Serveur : classe Socket
 Manipulation de fichier local ou fichier distant identique :
indifférence à la localisation

 Le langage Java est multithread :


 JAVA permet l ’exécution simultanée de plusieurs processus
léger (thread)
 Classe [Link] avec les méthodes permettant de :
 Démarrer, Exécuter, Stopper ces processus.
 contrôler les synchronisations et l’état cohérent des données.

47
Versions de Java
Java 1.0.2 (1996) : le JDK : Java Development Kit , 212 classes, 8 paquetages
version minimale des browsers web.
Java 1.1.5 (1997) : 504 classes, 23 paquetages
amélioration interface utilisateur (AWT), gestion des erreurs, cohérence du langage
Java 1.2 (Java 2 en 1998) : 1520 classes, 59 paquetages
Swing, Drag and drop, amélioration audio
Java 1.3 (2001)
J2SDK (nouveau nom) pour J2EE (Entreprise, serveur), J2ME (PDA)
amélioration de la gestion mémoire, rapidité
Java 1.4 (2002) : 2757 classes, 135 paquetages
J2SDK → J2SE (nouveau nom),
XML, expressions régulières, nouvelles E/S, accès à la mémoire vidéo (VolatileImage)
pour l’accélération
etc…

48
D’un point de vue technique
 Les principaux outils de base de la JDK
 javac représente le compilateur de java: un programme
écrit en java est transformé en bytecode.
 java est l’interpréteur de java : c’est la commande à
utiliser pour exécuter un programme java
 jdb est le débogueur de java

 javap permet de déassembler un fichier compilé

 javadoc est un générateur de documentation. Il permet de


générer de la documentation sur les programmes écrits
en java.
 Documentation
 en ligne : [Link]

49
L’environnement de développement
 Le compilateur
 Le compilateur javac permet de compiler un programme java (i.e un code
source) en bytecodes java.
 La commande à utiliser pour compiler un programme est
javac [options] [Link]
 A l’issue de cette commande, le compilateur javac génère un fichier
[Link] afin qu’il soit ensuite interprété par la JVM (Java Virtual
Machine)
 L’interpréteur
 L’interpréteur java permet d’exécuter une application écrite en langage java
(autre qu’une applet), plus spécifiquement un fichier [Link] (i.e
le java bytecodes).
 Par le biais de l’interpréteur java, on peut faire passer des arguments à la
fonction main
 La commande à utiliser pour exécuter un programme est
java [options] Classname <args>

50
L’environnement de développement
 Le débogueur
 Le débogueur jdb permet de déboguer "en ligne » un
programme (une classe)
 Il n’est pas facile à utiliser
 Pour pouvoir déboguer un programme (i.e une classe) il faut
compiler la classe avec l’option -g
 La commande à exécuter pour l’utiliser est
jdb Classname
 Il existe une aide pour le débogueur. Pour accéder à cette aide,
il faut taper help ou ?
 Le générateur
 Le générateur de documentation javadoc permet de générer
des documents HTML équivalents aux documents Java de SUN
(i.e ayant la même structure)
 La commande à exécuter pour l’utiliser est javadoc Classname

51
IDE (Integrated Development Environment)
La JDK
 On peut télécharger la JDK à partir du site de Sun : [Link]
Autres outils de développement
Il existe plusieurs outils de développement dont la plupart sont payants.
Néanmoins voici quelques uns gratuits :
 Jedit [Link]
 NetBeans : [Link]
 Eclipse [Link]
 Emacs (avec JDEE)
 [Link]
 [Link]
 JBuilder : Windows, payant mais il existe des versions d’essai
 Java Workshop
Windows/Unix, gratuit

52
Avantages
 Ecrire une fois, exécuter partout !
 Sécurité.
 Exécution dans un navigateur Web (Applet).
 Gestion automatique de la mémoire (garbage collector)
 Programmation modulaire et dynamique.
 Lisibilité du code.
 Code compact (beaucoup est dans la JVM).
 L'API.
 Réseaux, interfaces, son, pont avec les bases de
données en natif

53
Inconvénients
 Interprété : lenteur
 Nécessite une JVM pour fonctionner.
 La gestion de la mémoire est inefficace dans
la plupart des cas.
 Difficulté face aux applications gourmandes en
mémoire.
 Moins de mécanismes objet que C++ pourtant
plus ancien (héritage multiple)

54

Vous aimerez peut-être aussi