Vous êtes sur la page 1sur 41

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