Droulement du cours Introduction Concepts Java Remarques
Langage et Concepts
de Programmation Oriente-Objet
Gauthier Picard
cole Nationale Suprieure des Mines de Saint-tienne
gauthier.picard@emse.fr
Ple Informatique 2013-2014
Langage et Concepts de Programmation Oriente-Objet
1 / 40
Droulement du cours Introduction Concepts Java Remarques
Sommaire
Droulement du cours
Introduction
Concepts
Java
Remarques
Langage et Concepts de Programmation Oriente-Objet
2 / 40
Droulement du cours Introduction Concepts Java Remarques
Droulement du cours
Jeudi 20 mars 2014
Jeudi 27 mars 2014
Jeudi 3 avril 2014
Jeudi 10 avril 2014
Jeudi 17 avril 2014
Jeudi 15 mai 2014
Jeudi 22 mai 2014
Jeudi 5 juin 2014
Mercredi 18 juin 2014
Mercredi 25 juin 2014
Cours
TP
TD
TD
TD
TP
Projet
Projet
Projet
Projet
TD
TP
TP
TP
TP
Projet
Projet
Projet
Projet
Examen
TP envoyer la fin des sances
valuation sur un de ces TP, le projet et lexamen crit
note finale = 0, 5 examen + 0, 3 projet + 0, 2 TP
Langage et Concepts de Programmation Oriente-Objet
3 / 40
Droulement du cours Introduction Concepts Java Remarques
Introduction
Modle en cascade pour le dveloppement logiciel
Analyse
Conception
Implmentation
Test
Maintenance
Langage et Concepts de Programmation Oriente-Objet
4 / 40
Droulement du cours Introduction Concepts Java Remarques
Introduction
Modle en cascade pour le dveloppement logiciel
Analyse
SADT, SA-RT, MERISE, OMT, UML,
Conception
Implmentation
Fortran, Cobol, C, SmallTalk,
Ada, C++, Java,
Test
Maintenance
Langage et Concepts de Programmation Oriente-Objet
4 / 40
Droulement du cours Introduction Concepts Java Remarques
Introduction
Langages procduraux et fonctionnels
Un programme est compos de plusieurs
procdures (ou fonctions) :
qui effectuent un traitement sur des
donnes (procdure)
qui retournent une valeur aprs leur
invocation (fonction)
Donnes
Traitement 1
Certains langages ne distinguent pas
procdures et fonctions.
Traitement 2
Exemples de langages procduraux ou
fonctionnels : Fortran, Lisp, C,
Traitement 3
Langage et Concepts de Programmation Oriente-Objet
5 / 40
Droulement du cours Introduction Concepts Java Remarques
Introduction
Langages Orients-Objet
Un programme est compos de plusieurs
objets qui contiennent
des donnes internes
des traitements manipulant ces donnes
internes ou dautres donnes
Les donnes dun objet sont appels ses
attributs et ses traitements sont ses
mthodes (ou oprations).
Exemples de langages orients-objet :
Objective C, SmallTalk, C++, Python, Ruby,
Java,
Langage et Concepts de Programmation Oriente-Objet
6 / 40
Droulement du cours Introduction Concepts Java Remarques
Introduction
UML & Java
Analyse
Unified Modeling Language (UML)
Conception
Implmentation
notation standard pour lanalyse et la
conception construite par lObject
Management Group (OMG)
premire version standard en 1997
actuellement version 2.4.1
Java
Test
pas un standard mais un langage trs
largement utilis
dvelopp par SUN microsystems en 1995
dernire version stable : JDK 1.7 (ou Java 7)
Maintenance
Langage et Concepts de Programmation Oriente-Objet
7 / 40
Droulement du cours Introduction Concepts Java Remarques
Objet Classe Encapsulation Hritage
Objet
Approche procdurale : Que doit faire mon programme ?
Approche oriente-objet : De quoi doit tre compos mon programme ?
Cette composition est consquence dun choix de modlisation fait pendant la
conception (comme en CSI)
Le trne de fer, G.R.R. Martin
Alice, directrice
Carole, lectrice
Le Canard Enchan
Bilbo le Hobbit, J.R.R. Tolkien
Bob, bibliothcaire
David, lecteur
Langage et Concepts de Programmation Oriente-Objet
8 / 40
Droulement du cours Introduction Concepts Java Remarques
Objet Classe Encapsulation Hritage
Classe
Des objets similaires peuvent tre informatiquement dcrits par une mme
abstraction : une classe
mme structure de donnes et mthodes de traitement
valeurs diffrentes pour chaque objet
Classe Employ
Classe Livre
Classe Lecteur
Classe Journal
Alice Dupont, directrice
Germinal, E. Zola
Le Canard Enchan
Bilbo le Hobbit, J.R.R. Tolkien
Anne Misa, lectrice
Michel Martin, bibliothcaire
Robert Light, lecteur
Langage et Concepts de Programmation Oriente-Objet
9 / 40
Droulement du cours Introduction Concepts Java Remarques
Objet Classe Encapsulation Hritage
Contenu dune classe
Une classe est compose de plusieurs
membres dont chacun est soit
un attribut : variable type
une mthode (ou opration) :
ensemble dinstructions de
traitement
Exemple
class CompteBancaire {
String proprietaire;
double solde;
double getSolde() {
return solde;
}
void credite(double val) {
solde = solde + val;
}
}
Langage et Concepts de Programmation Oriente-Objet
10 / 40
Droulement du cours Introduction Concepts Java Remarques
Objet Classe Encapsulation Hritage
Encapsulation
Lencapsulation est la pratique consistant regrouper des attributs au sein dune
mme classe.
Exemple : la classe Livre encapsule les attributs titre et emprunteur
Pour amliorer la lisibilit des programmes, les attributs encapsuls sont
souvent privs (inaccessibles aux autres classes)
Les donnes et mthodes accessibles sont dites publiques
Langage et Concepts de Programmation Oriente-Objet
11 / 40
Droulement du cours Introduction Concepts Java Remarques
Objet Classe Encapsulation Hritage
Hritage
Lhritage consiste dfinir diffrent niveaux dabstraction permettant ainsi de
factoriser certains attributs et/ou mthodes communs plusieurs classes.
Une classe gnrale dfinit alors un ensemble dattributs et/ou mthodes qui sont
partags par dautres classes, dont on dira quelles hritent de (ou spcialisent)
cette classe gnrale.
Exemple
Forme
Rectangle
Cercle
Carr
Langage et Concepts de Programmation Oriente-Objet
12 / 40
Droulement du cours Introduction Concepts Java Remarques
Syntaxe Visibilit Exceptions Complments de syntaxe
Syntaxe Java
Le code source dun programme Java est contenu dans plusieurs fichiers
dextension .java
une seule classe publique par fichier
Le nom du fichier doit tre le mme que celui de la classe
Par convention, le nom dune classe commence toujours par une majuscule
Le code source dune classe commence par le mot-cl class suivi de son contenu
Syntaxe
class <nom de la classe> {
<contenu de la classe>
}
Langage et Concepts de Programmation Oriente-Objet
13 / 40
Droulement du cours Introduction Concepts Java Remarques
Syntaxe Visibilit Exceptions Complments de syntaxe
Types primitifs de donnes
Mme types quen C :
int
float
double
short
long
char
void
Plus deux nouveaux types :
boolean
byte
Plus la classe :
String
Exemple
int monEntier;
String chaine;
boolean test;
Langage et Concepts de Programmation Oriente-Objet
14 / 40
Droulement du cours Introduction Concepts Java Remarques
Syntaxe Visibilit Exceptions Complments de syntaxe
criture des mthodes
Une mthode est compose de sa signature et dun traitement associ
La signature dune mthode contient notamment
un nom de mthode
un type de donnes de retour
des types de donnes pour ses arguments
Par convention le nom des mthodes et attributs commencent toujours par
une minuscule
Syntaxe
<type de retour><nom de mthode> (<arguments> *) {
<traitement associ>
}
Langage et Concepts de Programmation Oriente-Objet
15 / 40
Droulement du cours Introduction Concepts Java Remarques
Syntaxe Visibilit Exceptions Complments de syntaxe
Exemple : classe Livre
Attributs
class Livre {
String titre;
Lecteur emprunteur;
void setTitre(String t) {
titre = t;
}
String getTitre() {
return titre;
}
Mthodes
Date emprunte(Lecteur lec) {
if (emprunteur = = null) {
emprunteur = lec;
return new Date() ;
} else return null ;
}
}
Langage et Concepts de Programmation Oriente-Objet
16 / 40
Droulement du cours Introduction Concepts Java Remarques
Syntaxe Visibilit Exceptions Complments de syntaxe
Porte dune variable
public class Portee {
int a;
public void test(int b) {
if (a > b) {
int c = b;
b = a;
a = c;
}
afficher(b);
}
Porte de classe
lentier a est visible dans toute la
classe Portee
Langage et Concepts de Programmation Oriente-Objet
17 / 40
Droulement du cours Introduction Concepts Java Remarques
Syntaxe Visibilit Exceptions Complments de syntaxe
Porte dune variable (cont.)
public class Portee {
int a;
public void test(int b) {
if (a > b) {
int c = b;
b = a;
a = c;
}
afficher(b);
}
Porte de mthode
lentier b est visible lintrieur
de la mthode test
Langage et Concepts de Programmation Oriente-Objet
18 / 40
Droulement du cours Introduction Concepts Java Remarques
Syntaxe Visibilit Exceptions Complments de syntaxe
Porte dune variable (cont.)
public class Portee {
int a;
public void test(int b) {
if (a > b) {
int c = b;
b = a;
a = c;
}
afficher(b);
}
Porte de bloc
lentier c est visible lintrieur
du bloc de la structure de
contrle if
Langage et Concepts de Programmation Oriente-Objet
19 / 40
Droulement du cours Introduction Concepts Java Remarques
Syntaxe Visibilit Exceptions Complments de syntaxe
Instanciation
On appelle instance dune classe, un objet avec un comportement et un tat, tous
deux dfinis par sa classe.
Linstanciation est lopration qui consiste crer un objet partir dune classe
En Java, le mot-cl new provoque une instanciation en faisant appel un
constructeur de la classe instancie
Un constructeur est une mthode qui a le mme nom que la classe
Un constructeur na pas de valeur de retour
Plusieurs constructeurs peuvent exister dans une mme classe (avec des
arguments diffrents)
Il faut au moins un constructeur dans une classe pour en instancier des
objets
Lappel au constructeur affecte une nouvelle adresse en mmoire pour le nouvel
objet cr
Langage et Concepts de Programmation Oriente-Objet
20 / 40
Droulement du cours Introduction Concepts Java Remarques
Syntaxe Visibilit Exceptions Complments de syntaxe
Constructeur de la classe Livre
class Livre {
String titre;
Lecteur emprunteur;
Livre(String t) {
titre = t;
emprunteur = null ;
}
Constructeur
void setTitre(String t) {
titre = t;}
String getTitre() {
return titre;}
Date emprunte(Lecteur lec) {
}
}
Langage et Concepts de Programmation Oriente-Objet
21 / 40
Droulement du cours Introduction Concepts Java Remarques
Syntaxe Visibilit Exceptions Complments de syntaxe
Instanciation de la classe Livre
class TerminalBibliothecaire {
void enregistreLivre(String nom) {
Livre nouveauLivre;
nouveauLivre = new Livre(nom);
ajouteEnBibliotheque(nouveauLivre) ;
}
void ajouteEnBibliotheque(Livre li) {
}
}
Langage et Concepts de Programmation Oriente-Objet
22 / 40
Droulement du cours Introduction Concepts Java Remarques
Syntaxe Visibilit Exceptions Complments de syntaxe
Invocation de mthodes
En Java, une mthode ne peut pas tre invoque seule, elle est toujours
appele sur un objet (ou une classe, pour les mthodes static)
Un point . spare le nom de la mthode de lobjet sur lequel elle est
invoque :
Livre monLivre = new Livre(Germinal) ;
String titreDuLivre = monLivre.getTitre() ;
Le mot-cl this dsigne, en cours dexcution dune mthode, lobjet (ou la
classe) sur lequel elle est appele
La syntaxe pour accder aux attributs dun objet est la mme
Langage et Concepts de Programmation Oriente-Objet
23 / 40
Droulement du cours Introduction Concepts Java Remarques
Syntaxe Visibilit Exceptions Complments de syntaxe
Exemple
class Livre {
String titre;
Lecteur emprunteur;
boolean estEmprunte() {
if (emprunteur == null)
return false ;
else return true ;
}
Date emprunte(Lecteur lec) {
if (this.estEmprunte())
return null ;
if (lec.empruntPossible()) {
emprunteur = lec;
lec.ajouteEmprunt(this) ;
return new Date() ;
} else return null ;
}
class Lecteur {
Livre[] emprunts;
int nbEmprunts;
boolean empruntePossible() {
if (nbEmprunts < 5)
return true ;
else return false ;
}
void ajouteEmprunt(Livre liv) {
emprunts[nbEmprunts] = liv;
nbEmprunts ++;
}
}
Langage et Concepts de Programmation Oriente-Objet
24 / 40
Droulement du cours Introduction Concepts Java Remarques
Syntaxe Visibilit Exceptions Complments de syntaxe
Visibilit des membres
La visibilit dune classe et de ses membres dfinit quelles autres classes y ont
accs
Les contraintes de visibilit portent sur :
la rfrence fait une classe
linvocation dune mthode sur un objet
laccs en lecture et criture un attribut dun objet
4 niveaux de visibilit en Java
public visible tous les objets
private uniquement visible par les instances de la classe
protected expliqu ultrieurement
par dfaut expliqu ultrieurement
Langage et Concepts de Programmation Oriente-Objet
25 / 40
Droulement du cours Introduction Concepts Java Remarques
Syntaxe Visibilit Exceptions Complments de syntaxe
Exemple de visibilit
public class Livre {
private String titre;
private Lecteur emprunteur;
private boolean estEmprunte() {
if (emprunteur == null)
return false ;
else return true ;
}
public Date emprunte(Lecteur lec) {
if (this.estEmprunte())
return null ;
if (lec.empruntPossible()) {
emprunteur = lec;
lec.ajouteEmprunt(this) ;
return new Date() ;
} else return null ;
}
public class Lecteur {
private Livre[] emprunts;
private int nbEmprunts;
public boolean empruntePossible() {
if (nbEmprunts < 5) return true ;
else return false ;
}
public void ajouteEmprunt(Livre liv) {
emprunts[nbEmprunts] = liv;
nbEmprunts ++;
}
}
Langage et Concepts de Programmation Oriente-Objet
26 / 40
Droulement du cours Introduction Concepts Java Remarques
Syntaxe Visibilit Exceptions Complments de syntaxe
Exceptions
En Java, les erreurs se produisent lors dune excution sous la forme
dexceptions
Une exception :
est un objet, instance dune classe dexceptions (java.lang.Exception)
peut provoquer la sortie dune mthode
correspond un type derreur
contient des informations sur cette erreur
Langage et Concepts de Programmation Oriente-Objet
27 / 40
Droulement du cours Introduction Concepts Java Remarques
Syntaxe Visibilit Exceptions Complments de syntaxe
Dclaration des exceptions possibles
Une mthode dclare, par le mot-cl throws, dans sa signature les classes
dexception quelle peut envoyer
Exemple de la mthode substring() de la classe String
public class String {
public String substring(int beginIndex, int endIndex)
throws IndexOutOfBoundsException {
Langage et Concepts de Programmation Oriente-Objet
28 / 40
Droulement du cours Introduction Concepts Java Remarques
Syntaxe Visibilit Exceptions Complments de syntaxe
Traitement des exceptions
Il y a deux manires de traiter une exception reue : propagation et interception
Propagation
Interception
Lexception est renvoye la mthode
ayant invoque la mthode dclarant
lexception (mots-cls throws et
throw)
Lexception est traite dans la mthode
appelant la mthode mettant
lexception (mots-cls try et catch)
Exemple
Exemple
public String initialesAuteur(Livre l)
throws IndexOutOfBoundsException {
String titre, initiales;
titre = l.getTitre() ;
initiales = titre.substring(0,2) ;
return initiales;
}
public String initialesAuteur(Livre l) {
String titre, initiales;
try {
titre = l.getTitre() ;
initiales = titre.substring(0,2) ;
return initiales;
} catch (IndexOutOfBoundsException ex) {
return new String( ???) ;
}
}
Langage et Concepts de Programmation Oriente-Objet
29 / 40
Droulement du cours Introduction Concepts Java Remarques
Syntaxe Visibilit Exceptions Complments de syntaxe
mission & cration dexceptions
Prvoir tous les cas derreurs des mthodes que vous crivez en mettant les
exceptions appropries :
Crer un objet dune classe dexception
mettre lexception
Exemple
public Date emprunte(Lecteur lec) throws Exception {
if (this.estEmprunte()) {
Exception excep = new Exception(Livre deja emprunte);
throw excep;
}
if (lec.empruntPossible()) {
emprunteur = lec;
lec.ajouteEmprunt(this) ;
return new Date() ;
} else {
throw new Exception(Le lecteur a trop demprunts);
}
}
Langage et Concepts de Programmation Oriente-Objet
30 / 40
Droulement du cours Introduction Concepts Java Remarques
Syntaxe Visibilit Exceptions Complments de syntaxe
Complments de syntaxe
Instruction conditionnelle if
Syntaxe
if <condition> <bloc si vrai>
[else <bloc si faux>]
Exemple
if (emprunteur.getStatut().equals(employe)) {
unLivre.setDateRetour(30) ;
} else {
unLivre.setDateRetour(15) ;
}
Langage et Concepts de Programmation Oriente-Objet
31 / 40
Droulement du cours Introduction Concepts Java Remarques
Syntaxe Visibilit Exceptions Complments de syntaxe
Complments de syntaxe
Instruction itrative while
Syntaxe
while <condition> <bloc>
Exemple
while (i < biblio.nbLivres() ) {
Livre l = biblio.getLivre(i) ;
l.setDisponible(true) ;
i++;
}
Langage et Concepts de Programmation Oriente-Objet
32 / 40
Droulement du cours Introduction Concepts Java Remarques
Syntaxe Visibilit Exceptions Complments de syntaxe
Complments de syntaxe
Instruction itrative for
Syntaxe
for (<init> ; <condition> ; <increment>) <bloc>
Exemple
for (int i = 0 ; i < biblio.nbLivres() ; i++ ) {
Livre l = biblio.getLivre(i) ;
l.setDisponible(true) ;
}
Langage et Concepts de Programmation Oriente-Objet
33 / 40
Droulement du cours Introduction Concepts Java Remarques
Syntaxe Visibilit Exceptions Complments de syntaxe
Complments de syntaxe
Instruction de choix multiple switch
Syntaxe
switch (<variable>) {
[case <val> : <bloc>]*
default : <bloc>
}
Exemple
switch (l.getCategorie()) {
case 1 : l.setDuree(15) ;
break ;
case 2 : l.setDuree(20) ;
break ;
default : l.setDuree(30) ;
}
Langage et Concepts de Programmation Oriente-Objet
34 / 40
Droulement du cours Introduction Concepts Java Remarques
Syntaxe Visibilit Exceptions Complments de syntaxe
Autres particularits
Aggrgation de chanes de caractres
On peut utiliser loprateur + sur les objets de classe String :
String s1 = hello , s2 = world ;
String s3 = s1 + s2;
s3 vaut hello world
Manipulation de tableaux
La variable length donne la taille dun tableau :
char[] tab = new char[25] ;
int a = tab.length;
a vaut 25
Langage et Concepts de Programmation Oriente-Objet
35 / 40
Droulement du cours Introduction Concepts Java Remarques
Syntaxe Visibilit Exceptions Complments de syntaxe
Autres particularits (cont.)
Comparaison dinstances
Loprateur == compare les adresses de deux instances
La mthode equals() que possde toute instance en Java permet de
comparer les valeurs de deux instances
Integer a1 = new Integer(2) ;
Integer a2 = new Integer(2) ;
System.out.println(a1 == a2) ;
// false
System.out.println(a1.equals(a2)) ; // true
Langage et Concepts de Programmation Oriente-Objet
36 / 40
Droulement du cours Introduction Concepts Java Remarques
Remarques en vrac
Comparaison avec C
Syntaxe similaire (instructions, types primitifs, etc.)
Java est interprt (machine virtuelle) et multi-plateformes
Java est plus haut niveau : pas de gestion explicite des pointeurs, E/S
formattes, etc.
Java est modulaire par essence (compilation spare par dfaut)
Comparaison avec SGBD
La technologie objet est fortement inspire des BDD
Java ne stocke pas de manire persistente les donnes
Java attache des traitements aux donnes (mthodes)
Java peut utiliser un SGBD pour sauvegarder des objets (JDBC)
Langage et Concepts de Programmation Oriente-Objet
37 / 40
Droulement du cours Introduction Concepts Java Remarques
Popularit des langages de programmation
http://www.tiobe.com/index.php/content/paperinfo/tpci/
Langage et Concepts de Programmation Oriente-Objet
38 / 40
Droulement du cours Introduction Concepts Java Remarques
Rfrences utiles
Livres :
Sites web :
Programmer en Java, 7e Edition, Claude Delannoy, Eyrolles, 2011
The Java Tutorial : A Short Course on the Basics, 4th Edition, Collectif, Prentice Hall,
2006
Effective Java, 2nd Edition, Joshua Bloch, Prentice Hall, 2008
Java in a nutshell, 5th edition, David Flanagan, OReilly, 2005
Le site officiel Java,
http://www.oracle.com/technetwork/java/index.html
Le tutorial Java, http://docs.oracle.com/javase/tutorial/
lAPI du JDK 1.7, http://docs.oracle.com/javase/7/docs/api/
Un site (franais) de dveloppeurs, http://www.javafr.com/
Le site JavaWorld, http://www.javaworld.com
Quelques autres liens :
des liens en rapport avec Java,
http://www.javamug.org/mainpages/Java.html
Tutoriaux jGuru, http://java.sun.com/developer/onlineTraining/
plein dautres cours, http://java.developpez.com/cours/
Langage et Concepts de Programmation Oriente-Objet
39 / 40
Droulement du cours Introduction Concepts Java Remarques
Projet
http://www.emse.fr/~picard/cours/1A/java/projet.html
Langage et Concepts de Programmation Oriente-Objet
40 / 40