Title: Cours Java 2004
1Pôle Informatique 2008/2009
École Nationale Supérieure des Mines de
Saint-Étienne
Langage et Concepts de Programmation
Orientée-Objet
Gauthier Picard gauthier.picard_at_emse.fr
2Déroulement du cours
7 janvier
COURS
TD
8 janvier
TP
TP
15 janvier
TP
TD
21 janvier
TD
TP
28 janvier
TD
TP
29 janvier
Projet
Projet
6 février
Projet
Projet
7 février
Projet
EXAMEN
- TP à envoyer à la fin des séances
- Évaluation sur un de ces TP, le projet et
l'examen écrit - note 0,4examen 0,3projet 0,2TP
3Modèle en cascade pour le développement logiciel
Analyse
SADT, SA-RT, MERISE, OMT, UML,
Conception
Fortran, Cobol, C, SmallTalk, Ada, C, Java,
Implémentation
Tests
Maintenance
4Langages procéduraux et fonctionnels
- Un programme est composé de plusieurs procédures
(ou fonctions) - qui effectuent un traitement sur des données
(procédure) - qui retournent une valeur après leur invocation
(fonction) - Certains langages ne distinguent pas procédures
et fonctions. - Exemples de langages procéduraux ou fonctionnels
Fortran, Lisp, C,
5Langages Orientés-Objet
- Un programme est composé de plusieurs objets qui
contiennent - des données "internes"
- des traitements manipulant ces données internes
ou d'autres données - Les données d'un objet sont appelés ses attributs
et ses traitements sont ses méthodes (ou
opérations). - Exemples de langages orientés-objet SmallTalk,
C, Java,
D
T
D
D
T
T
D
D
T
T
6UML Java
- Unified Modeling Language (UML)
- notation standard pour l'analyse et la conception
- construite par l'Object Management Group
- Première version standard en 1997
- Java
- pas un standard mais un langage très largement
utilisé - développé par SUN microsystems en 1995
- dernière version stable JDK 1.5.0
Analyse
Conception
Implémentation
Tests
Maintenance
7Objet
8Classe
- 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
9Contenu 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 doub
le solde double getSolde() return
solde void credite(double val) solde
solde val
10Encapsulation
L'encapsulation est la pratique consistant Ã
regrouper des attributs au sein d'une même
classe. Exemple la classe Livre encapsule les
attributs titre et emprunteur
- Pour améliorer la lisibilité des programmes, les
attributs encapsulés sont souvent privés
(inaccessibles aux autres classes). - Les données et méthodes accessibles sont dites
publiques.
11Syntaxe Java
- Le code source d'un programme Java est contenu
dans plusieurs fichiers d'extension .java - Une seule classe publique par fichier
- Le nom du fichier doit être le même que celui de
la classe - Par convention, le nom d'une classe commence
toujours par une majuscule.
Le code source d'une classe commence par le
mot-clé class suivi de son contenu
class ltnom de la classegt ltcontenu de la
classegt
12Types primitifs de données
- Plus deux nouveaux types
- boolean
- byte
- Plus la classe
- String
- Déclaration
- int monEntier
- String chaine
- boolean test
- Même types qu'en C
- int
- float
- double
- short
- long
- char
- void
13Écriture des méthodes
Une méthode est composée de sa signature et d'un
traitement associé.
- La signature d'une méthode contient notamment
- un nom de méthode
- un type de données de retour
- des types de données pour ses arguments
-
- Par convention le nom des méthodes et attributs
commencent toujours par une minuscule.
lttype de retourgt ltnom de méthodegt ( ltargumentsgt
) lttraitement associégt
14Exemple classe Livre
class Livre String titre Lecteur
emprunteur void setTitre(String t) titre
t String getTitre() return
titre Date emprunte(Lecteur lec) if
(emprunteur null) emprunteur
lec return new Date() else return
null
Attributs
Méthodes
15Portée d'une variable
public class Portee int a public void
test(int b) if (a gt b) int c b
b a a b afficher(b)
l'entier a est visible dans toute la classe
16Portée d'une variable
public class Portee int a public void
test(int b) if (a gt b) int c b
b a a b afficher(b)
l'entier b est visible à l'intérieur de la
méthode test
17Portée d'une variable
public class Portee int a public void
test(int b) if (a gt b) int c b
b a a b afficher(b)
l'entier c est visible dans le bloc du if
18Instanciation
- 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
19Constructeur de la classe Livre
class Livre String titre Lecteur
emprunteur Livre(String t) titre
t emprunteur null void setTitre(String
t) titre t String getTitre() return
titre Date emprunte(Lecteur lec)
Constructeur
20Instanciation de la classe Livre
class InterfaceBibliothecaire void
enregistreLivre(String nom) Livre
nouveauLivre nouveauLivre new
Livre(nom) ajouteEnBibliotheque(nouveauLivre)
void ajouteEnBibliotheque(Livre li)
21Invocation de méthodes
En Java, une méthode ne peut pas être invoquée
seule, elle est toujours appelée sur un objet.
Un point . sépare le nom de la méthode de l'objet
sur lequel elle est invoquée. Livre monLivre
new Livre("Germinal") String titreDuLivre
monLivre.getTitre() Le mot-clé this désigne,
en cours d'exécution d'une méthode, l'objet sur
lequel elle est appelée. La syntaxe pour accéder
aux attributs d'un objet est la même.
22Exemple
class Livre String titre Lecteur
emprunteur boolean estEmprunte() if
(emprunteur null) return false else
return true Date emprunte(Lecteur lec)
if ( this.estEmprunte() true) 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 lt 5) return true else return
false void ajouteEmprunt(Livre liv)
empruntsnbEmprunts liv nbEmprunts
23Visibilité des membres
- La visibilité d'une classe et de ses membres
définit quelles autres classes y ont accès. Ces
contraintes portent sur - la référence fait à une classe
- l'invocation d'une méthode sur un objet
- l'accès en lecture et écriture à un attribut d'un
objet
- 4 niveaux de visibilité en Java
- public visible tous les objets
- private uniquement visible par les instances de
la classe - protected expliqué ultérieurement
- par défaut expliqué ultérieurement
24Exemple de visibilité
public class Lecteur private Livre
emprunts private int nbEmprunts public
boolean empruntePossible() if (nbEmprunts lt
5) return true else return false
public void ajouteEmprunt(Livre liv)
empruntsnbEmprunts liv nbEmprunts
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() true) return null
if ( lec.empruntPossible() ) emprunteur
lec lec.ajouteEmprunt( this )
return new Date() else return null
25Exceptions
- En Java, les erreurs se produisent lors d'une
exécution sous la forme d'exceptions. - Une exception
- est un objet, instance d'une classe
d'exceptions. - peut provoquer la sortie d'une méthode
- correspond à un type d'erreur
- contient des informations sur cette erreur
26Déclaration des exceptions possibles
Une méthode déclare, par le mot-clé throws, dans
sa signature les classes d'exception qu'elle peut
envoyer.
Exemple de la méthode substring de la classe
String
public class String public String
substring(int beginIndex, int endIndex) throws
IndexOutOfBoundsException
27Traitement des exceptions
Il y a deux manières de traiter une exception
reçue
L'exception est renvoyée à la méthode ayant
invoquée initialesAuteur
28Émission création d'exceptions
- Vous devez prévoir tous les cas d'erreurs des
méthodes que vous écrivez en émettant les
exceptions appropriées - Créer un objet d'une classe d'exception
- Émettre l'exception
public Date emprunte(Lecteur lec) throws
Exception if ( this.estEmprunte() true)
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 d'emprunts")
29Compléments de syntaxe
Instruction conditionnelle
if ltconditiongt bloc_si_vrai else bloc_si_faux
Exemple
if (emprunteur.getStatut() "employe")
unLivre.setDateRetour(30) else
unLivre.setDateRetour(15)
30Compléments de syntaxe
Instruction itérative
while ltconditiongt bloc
Exemple
while (i lt biblio.nbLivres() ) Livre l
biblio.getLivre(i) l.setDisponible(true)
i
31Compléments de syntaxe
Instruction itérative
for (ltinitgt ltconditiongt ltincrementgt) bloc
Exemple
for (int i 0 i lt biblio.nbLivres() i )
Livre l biblio.getLivre(i)
l.setDisponible(true)
32Compléments de syntaxe
Instruction de choix multiple
switch (ltvariablegt) case ltval1gt ltbloc1gt
case ltval2gt ltbloc2gt default ltblocgt
Exemple
switch (l.getCategorie()) case 1
l.setDuree(15) break case 2
l.setDuree(20) break default
l.setDuree(30)
33Autres particularités de syntaxe
- On peut utiliser l'opérateur sur les objets de
classe String - String s1 "hello ", s2 "world"
- String s3 s1 s2
- ? s3 vaut "hello world"
- La variable length donne la taille d'un tableau
- char tab new char25
- int a tab.length
- ? a vaut 25