Beruflich Dokumente
Kultur Dokumente
Langage et Concepts
de Programmation Oriente-Objet
Gauthier Picard
cole Nationale Suprieure des Mines de Saint-tienne
gauthier.picard@emse.fr
1 / 40
Sommaire
Droulement du cours
Introduction
Concepts
Java
Remarques
2 / 40
Droulement du cours
Cours
TP
TD
TD
TD
TP
Projet
Projet
Projet
Projet
TD
TP
TP
TP
TP
Projet
Projet
Projet
Projet
Examen
3 / 40
Introduction
Modle en cascade pour le dveloppement logiciel
Analyse
Conception
Implmentation
Test
Maintenance
4 / 40
Introduction
Modle en cascade pour le dveloppement logiciel
Analyse
SADT, SA-RT, MERISE, OMT, UML,
Conception
Implmentation
Test
Maintenance
4 / 40
Introduction
Langages procduraux et fonctionnels
Donnes
Traitement 1
Traitement 2
Traitement 3
5 / 40
Introduction
Langages Orients-Objet
6 / 40
Introduction
UML & Java
Analyse
Conception
Implmentation
Java
Test
Maintenance
7 / 40
Objet
Alice, directrice
Carole, lectrice
Le Canard Enchan
Bob, bibliothcaire
David, lecteur
8 / 40
Classe
Des objets similaires peuvent tre informatiquement dcrits par une mme
abstraction : une classe
Classe Employ
Classe Livre
Classe Lecteur
Classe Journal
Germinal, E. Zola
Le Canard Enchan
9 / 40
Exemple
class CompteBancaire {
String proprietaire;
double solde;
double getSolde() {
return solde;
}
void credite(double val) {
solde = solde + val;
}
}
10 / 40
Encapsulation
11 / 40
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
Syntaxe Java
Le code source dun programme Java est contenu dans plusieurs fichiers
dextension .java
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>
}
13 / 40
int
float
double
short
long
char
void
boolean
byte
Plus la classe :
String
Exemple
int monEntier;
String chaine;
boolean test;
14 / 40
un nom de mthode
un type de donnes de retour
des types de donnes pour ses arguments
Syntaxe
<type de retour><nom de mthode> (<arguments> *) {
<traitement associ>
}
15 / 40
Attributs
class Livre {
String titre;
Lecteur emprunteur;
void setTitre(String t) {
titre = t;
}
String getTitre() {
return titre;
}
Mthodes
16 / 40
Porte de classe
lentier a est visible dans toute la
classe Portee
17 / 40
Porte de mthode
lentier b est visible lintrieur
de la mthode test
18 / 40
Porte de bloc
lentier c est visible lintrieur
du bloc de la structure de
contrle if
19 / 40
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
Plusieurs constructeurs peuvent exister dans une mme classe (avec des
arguments diffrents)
20 / 40
Constructeur
void setTitre(String t) {
titre = t;}
String getTitre() {
return titre;}
Date emprunte(Lecteur lec) {
}
}
Langage et Concepts de Programmation Oriente-Objet
21 / 40
class TerminalBibliothecaire {
void enregistreLivre(String nom) {
Livre nouveauLivre;
nouveauLivre = new Livre(nom);
ajouteEnBibliotheque(nouveauLivre) ;
}
void ajouteEnBibliotheque(Livre li) {
}
}
22 / 40
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)
23 / 40
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 ++;
}
}
24 / 40
La visibilit dune classe et de ses membres dfinit quelles autres classes y ont
accs
25 / 40
Exemple de visibilit
public class Livre {
private String titre;
private Lecteur emprunteur;
26 / 40
Exceptions
Une exception :
27 / 40
Une mthode dclare, par le mot-cl throws, dans sa signature les classes
dexception quelle peut envoyer
28 / 40
Interception
Exemple
Exemple
29 / 40
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
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) ;
}
31 / 40
Complments de syntaxe
Instruction itrative while
Syntaxe
while <condition> <bloc>
Exemple
while (i < biblio.nbLivres() ) {
Livre l = biblio.getLivre(i) ;
l.setDisponible(true) ;
i++;
}
32 / 40
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) ;
}
33 / 40
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) ;
}
34 / 40
Autres particularits
a vaut 25
35 / 40
Comparaison dinstances
36 / 40
Remarques en vrac
Comparaison avec C
Java est plus haut niveau : pas de gestion explicite des pointeurs, E/S
formattes, etc.
37 / 40
http://www.tiobe.com/index.php/content/paperinfo/tpci/
38 / 40
Rfrences utiles
Livres :
Sites web :
39 / 40
Projet
http://www.emse.fr/~picard/cours/1A/java/projet.html
40 / 40