Vous êtes sur la page 1sur 17

06/11/15

Programmation Java

Elment de base de Java

EL Moukhtar Zemmouri
ENSAM Mekns
V-2015/2016

Plan
Les classes en Java
Les constructeurs
Les mthodes
Les variables
Les idenEcateurs

1
06/11/15

Les classes

Des types pour les objets


Les objets qui collaborent dans une applicaEon OO sont
souvent trs nombreux

Mais on peut dgager des types d'objets : des objets ayant


une structure et un comportement idenEques

Par exemple : Les points, les complexes, les employs, les boutons, les
formes gomtriques

La noEon de classe correspond ceUe noEon de types


d'objets

2
06/11/15

Les classes en Java


Une classe est un modle pour crer des objets, que
l'on nomme les instances de la classe
Une classe est compose de membres :
Des variables, ou champs, ou aUributs :
Donnent ltat des instances

Des mthodes, ou opraEons :


Indiquent les types de messages qui pourront tre envoys aux
instances

Des constructeurs
Des mthodes pour crer les instances

Exemple : classe Employ


public class Employe {
private String nom, prenom; Variables dinstance
private double salaire, prime;

Constructeurs
public Employe(String n, String p) { //Constructeur
nom = n;
prenom = p;
}

public double getSalaire() { //Mthode : un accesseur


return salaire;
}
public void setSalaire(double s) { //Mthode : un modificateur
salaire = s;
}
public double calculerSalaireAnnuel() { //Mthode
return (12*salaire + prime); Mthodes
}
}

3
06/11/15

Rles dune classe


Une classe est un schma dcrivant les futures
objets :
Elle en dcrit la parEe prive :
structure de donnes internes (aUributs)
corps des mthodes
et la parEe publique :
noms et paramtres des mthodes

Une classe est un gnrateur d'objets :


Par instanciaEon, on fabrique des objets obissant tous au
mme schma

Instanciation
LinstanciaEon est la craEon d'un objet parEr d'une classe.

L'objet est une instance de la classe

3 phases :
1. CraEon et iniEalisaEon des aUributs en mmoire ( l'image d'une
structure en C)

2. Appel de mthodes parEculires (les constructeurs) dnis dans la


classe

3. Renvoi d'une rfrence sur l'objet cre (son idenEt)

4
06/11/15

Classe et Instances
Une instance dune classe est cre par un
des constructeurs de la classe

Une fois quelle est cre, linstance

a son propre tat interne (les valeurs des


variables)

partage le code qui dtermine son comportement


(les mthodes) avec les autres instances de la
classe

lments dune classe


Les constructeurs (il peut y en avoir plusieurs)
servent crer de nouvelles instances de la classe

Quand une instance est cre, son tat est conserv


dans les variables dinstance

Les mthodes dterminent le comportement des


instances de la classe quand elles reoivent un
message

5
06/11/15

Les constructeurs

Constructeurs dune classe


Chaque classe a un ou plusieurs constructeurs qui
servent
crer les instances

iniEaliser l'tat de ces instances

Un constructeur
a le mme nom que la classe

n'a pas de type retour (mme pas void)

6
06/11/15

Exemple : un seule constructeur


public class Employe {
private String nom, prenom;
private double salaire;

public Employe(String n, String p) { //Un constructeur
nom = n;
prenom = p;
}
. . .

public sta:c void main(String[] args) {
Employe emp;
emp = new Employe("Ali", "Baba"); // Instancia>on
emp.setSalaire(8000);
. . .
}
}

Exemple : deux constructeur


public class Employe {
private String nom, prenom;
private double salaire;
public Employe(String n, String p) { //Constructeur 1
nom = n;
prenom = p;
}
public Employe(String n, String p, double s) { //Constructeur 2
nom = n;
prenom = p;
salaire = s
}
. . .
public sta:c void main(String[] args) {
Employe emp1, emp2;
emp1 = new Employe("Ali", "Baba"); // Instancia>on
emp2 = new Employe("Ali", "Baba", 10000); //Instancia>on . . .
}
}

7
06/11/15

Constructeur par dfaut


Lorsque le code dune classe ne comporte pas de
constructeur, Java rajoute automatiquement un
constructeur vide et sans paramtres :

[public] class Classe{


[public] Classe() { }
...
}

Mme accessibilit que la classe

Dsigner un constructeur par this()


public class Employe {
private String nom, prenom;
private double salaire;
public Employe(String n, String p) { //Constructeur 1
nom = n;
prenom = p;
}
public Employe(String n, String p, double s) { //Constructeur 2
this(n, p);
salaire = s
}
. . .
public sta:c void main(String[] args) {
Employe emp1, emp2;
emp1 = new Employe("Dupond", "Pierre"); // Instancia>on
emp2 = new Employe("Durand", "Jacques", 10000); //Instancia>on . . .
}
}

8
06/11/15

Les mthodes

Types de mthodes
Plusieurs types de mthodes dans une classe :
Mthodes pour donner accs aux variables depuis lextrieur de la
classe :

Accesseurs (geters) pour lire les valeurs des variables

Modicateurs (seters) pour modier leurs valeurs

Mthodes comme sous programmes:

Mthodes publiques : orir des services plus complexes

Mthodes prives : servant duElitaires pour les autres mthodes de la


classe

9
06/11/15

Paramtres dune mthode


On doit indiquer le type et le nom des paramtres dans la dclaraEon de la
mthode.

[acces] type nomMethode(type1 param1, type2 param2, )

setSalaire(double s)

somme(int a, int b)

Si la mthode na pas de paramtres :

type nomMethode()

getSalaire()

Type de retour dune mthode


Quand la mthode renvoie une valeur, on doit indiquer le
type de la valeur renvoye dans la dclaraEon :
double getSalaire()

int somme(int a, int b)

Le pseudo-type void indique quaucune valeur nest


renvoye :
void setSalaire(double s)

Un constructeur na pas de type (mme pas void)

10
06/11/15

Exemple de mthodes
public class Employe {
private String nom, prenom;
private double salaire, prime;

public Employe(String n, String p) { //Constructeur
nom = n;
prenom = p;
} Mthodes

public double getSalaire() { //Mthode : un accesseur
return salaire;
}
public void setSalaire(double s) { //Mthode : un modicateur
salaire = s;
}
public double calculerSalaire(int grade, double prime) { //Mthode
return 12*salaire + prime;
}
}

Polymorphisme : surcharge dune mthode

En Java, on peut surcharger une mthode, cest dire,


ajouter une mthode qui a le mme nom mais pas les mmes
paramtres quune mthode existante

Par exemple, ajouter :

calculerSalaire(int grade)

Alors quil existe dj une mthode de signature :

calculerSalaire(int grade, double prime)

11
06/11/15

Polymorphisme : surcharge dune mthode

Par contre, il est interdit de surcharger une mthode en


changeant le type de retour

2 mthodes ne peuvent avoir la mme signature sans avoir le


mme type retour

Par exemple, il est interdit dajouter la mthode :

int calculerSalaire(int, double)

Alors quil existe dj une mthode sous la forme

double calculerSalaire(int, double)

Les variables

12
06/11/15

Porte des variables


Les variables dinstances
conservent ltat dun objet, instance de la classe

sont accessibles et partages par toutes les mthodes

Les variables locales sont des variables dclares lintrieur


dune mthode
elles conservent les donnes qui sont manipules par la mthode

elles ne sont accessibles que dans le bloc dans lequel elles ont t
dclares, et leur valeur est perdue lorsque la mthode termine son
excuEon

Choix entre var locale ou dinstance


Il arrive parfois dhsiter entre meUre une variable

comme variable locale dune mthode

ou comme variable dinstance de la classe

Si la variable est uElise par plusieurs mthodes de la


classe, la variable devra tre une variable dinstance

13
06/11/15

Dclaration
Toute variable doit tre dclare avant dtre
uElise

DclaraEon dune variable :


indique au compilateur le nom et le type de la variable
double salaire;

String nom;

Employe emp;

Point centre;

Affectation
LaectaEon dune valeur une variable est
eectue par linstrucEon
variable = expression;

Lexpression est calcule et ensuite la valeur


calcule est aecte la variable

Exemple :
x = 3;

x = x + 1;

14
06/11/15

Initialisation dune variable


Obligatoire avant dtre uElise dans une expression

Si elles ne sont pas iniEalises par le programmeur,


les variables dinstance reoivent les valeurs par
dfaut de leur type
0 pour les types numriques, ...

LuElisaEon dune variable locale non iniEalise


provoque une erreur de compilaEon (pas
diniEalisaEon par dfaut)

Dclaration / cration
public staEc void main(String[] args) {
Employe emp;
emp.setSalaire(5000); Provoque une erreur de
type
} NullPointerException
n Il ne faut pas confondre :
dclaration dune variable et
cration dun objet rfrenc par cette variable

n Linstruction Employe emp;


dclare que lon va utiliser une variable emp qui rfrencera un
objet de la classe Employe
mais aucun objet nest cr

n Analogie avec les pointeur en C

15
06/11/15

Dclaration / cration
Il faut crire :

public staEc void main(String[] args) {


//Dclara:on dune rfrence
Employe emp;
//Cra:on dun objet
emp = new Employe("Dupond", "Pierre");
emp.setSalaire(5000);

}

Accs aux variables dune instance


public class UneClasse {
public uneVariable;

}
UneClasse unObjet = new UneClasse();
Laccs la variable uneVariable de linstance unObjet se fait selon la
syntaxe:
unObjet.uneVariable

Exemple,
Livre java = new Livre("prog en java", 100);
System.out.println(java.prix) ; // ache 100

AUenEon : le plus souvent les variables sont private et on ne peut y


accder directement en dehors de leur classe

16
06/11/15

Les identificateurs

Conventions pour les identificateurs


Les noms de classes commencent par une majuscule :
Cercle, Object

Les mots contenus dans un idenEcateur commencent par une


majuscule :
UneClasse, uneMethode, uneAutreVariable

Les constantes sont en majuscules et les mots sont spars par le


caractre soulign _ :
UNE_CONSTANTE

Si possible, des noms pour les classes et des verbes pour les mthodes

17

Vous aimerez peut-être aussi