Vous êtes sur la page 1sur 32

Introduction au paradigme objet

Concepts importants
•surcharge (overload)
•redéfinition (override)

•Définition d’une classe


•Définition des attributs (caratéristiques)
•encapsulation (avec private)
•this
•constructeur
•classes immuables (get)
•classes mutables (set)
•destructeur (finalize)
•Autres méthodes (opérateurs, comportements, …)
•Mot clé static
•Construction d’une classe
Concepts

• Surcharge
– Il est possible que plusieurs fonctions aient le
même nom.
– Il faut que le type des paramètres formels ou
que le type de la valeur de retour soient
différents.
Exemple : int pow(int,int)
double pow(double, int)
– C’est à partir des paramètres effectifs que
l’appel est déterminé.
Concepts

• Redéfinition
– Il est possible que plusieurs fonctions aient le
même nom, les mêmes types pour les
paramètres formels et le même type de valeur
de retour.
– C’est la fonction la plus proche qui sera
appelée au point de vue visibilité.
– On ne peut pas redéfinir une méthode dans
un même bloc.
Définition de classe

• Un langage orienté-objet
– Encapsulation
– Héritage
– Polymorphisme dynamique

• Encapsulation
• C’est rendre indépendant l’utilisation d’un classe de son
implémentation.

• Réalisation de l’encapsulation en java


– L’encapsulation se fait grâce à l’aide d’attributs ayant le modificateur
d’accès private.
– Seules les membres de la classe (exclus les objets) peuvent utiliser ces
attributs.
Définition de classe

Rappel :
public class Personne{
private String nom;
}

Personne unePersonne; //définit un objet de la classe Personne


unePersonne.nom //illegal car l’attribut nom est private

– Une classe offrira l’accès à ses attributs via des


méthodes.
Définition de classe

– Les attributs d’une classe sont toujours initialisés par


défaut à l’opposé des variables locales d’un sous
programme.
Exemple :
public class Personne{
private String nom; //nom est égal à null
private int age; //age est égal à 0;
public void uneFonction() {
int age; //age n’est pas initialisé ici
}
}
Identificateur this

this
– C’est une référence gérée par Java et n’est utilisable qu’à
l’intérieur d’une classe. On parle de l’objet actuel.
– Cette référence pointe sur l’objet qui a appelé la méthode. C’est
ni plus ni moins que l’objet en avant du point au moment de
l’appel de la méthode.
– Utilisable seulement dans les méthodes non static d’une classe.
Soit :
Public class Personne {
String nom;
public void setNom(String nom) {
this.nom = nom;
}
}
Identificateur this
Soit :
public class UneClasse
int x;
public void methode1(){ objet 1 objet2
this.x = 5;
...
}
x
5 X 5

UneClasse objet1 = new UneClasse();


UneClasse objet2 = new UneClasse();

objet1.methode1(); //this == objet1 dans methode1()


objet2.methode1(); //this == objet2 dans methode1()
Définition de classe

Rappel :
• Une classe est constituée d’attributs et de méthodes.
• Une méthode est un sous programme que l’on peut démarrer
à partir d’une autre méthode d’une classe, d’une classe ou
d’un objet selon le modificateur d’accès et si elle est static ou
non.
• Les méthodes contenues dans une classes se divisent
en plusieurs catégories
• Constructeurs
• Accesseurs
• Mutateurs
• Destructeur
• Les autres méthodes (opérateurs, comportements,
…)
Définition de classe

• Constructeurs
• Méthodes qui permettent de créer une instance(objet) et
d’initialiser les attributs de cet instance au moment de son
instanciation (new).
• Il y a réservation d’espace mémoire à ce moment seulement

– Porte le même nom que la classe.

– N’a aucun type de retour dans sa définition mais retourne une


instance de la classe.
• Définition : public String(String original){…}
• Appel : String s = new String(« allo »); //appel le constructeur

– Si aucun constructeur n’est écrit, il en existe un par défaut qui ne


fait rien et les attributs sont initialisés avec leur valeur par défaut
(selon le type).
Définition de classe

– Peut être surchargé

Exemple : public class String{


public String(String original) {…}
public String(char[] value) {…}
public String(StringBuffer buffer) {…}

}

– Aussitôt qu’il y a un constructeur écrit, celui par défaut n’existe


plus, il faut l’écrire explicitement pour en avoir un.
• Exemple : public String(){}
Définition de classe

• Accesseurs
• Méthodes qui permettent d’obtenir le contenu des attributs
privés d’une classe.

– Souvent commence par « get »

– Si une classe n’a que des accesseurs, on dit qu’elle est immuable (non
modifiable).
– N’a habituellement pas de paramètres et sert à retourner le contenu d’un
attribut privé.

Exemple : public String getNom() {


return nom;
}
Définition de classe

• Mutateurs
• Méthodes qui permettent de modifier le contenu des attributs
privés d’une classe.

– Souvent commence par « set » (setNom, setAge, setPrenom,…).

– Si une classe a des mutateurs, on dit qu’elle est mutable (modifiable).


– Ne retourne habituellement rien et a un paramètre qui remplacera le
contenu d’un attribut

Exemple : public void setNom(String nom) {


this.nom = nom;
}
Définition de classe

• Les comportements
• Celles qui définissent le comportement des instances de la
classe ou de la classe elle-même, qui ne sont pas des autres
catégories citées avant.

Exemple : copie() //retourne une copie d’un objet


toString() //retourne une chaîne de caractères
//représentant l’objet
equals() //opérateur relationnel de comparaison
Etc.
Définition de classe

• Destructeur
• Méthode qui permet, lors de la fin de la portée d’un objet, de
remettre au système les ressources utilisées par un objet.

– Cette méthode est appelée automatiquement lorsque la dernière référence


à une instance n’y fait plus référence. Par exemple x = null; S’il n’y a
aucune autre référence sur l’instance sur laquelle x pointait, la méthode
Finalize() est appelée.

– Les ressources utilisées peuvent être une imprimante, de la mémoire, etc.


Cela pourrait être aussi de terminer une autre application, …

Exemple : public void Finalize() {


//le code à exécuté
}

****Nous n’en utiliserons pas dans ce cours


Mot clé static

• static
• La valeur d’un membre public définie comme étant static
existe pour tous les objets d’une même classe.

• Un attribut static n’est pas initialisé lors de l’instanciation d’un


objet mais une seule fois au début d’un programme.

• S’il y a une modification faite par un objet sur un attribut


static, tous les autres objets de cette classe en verront les
effets.

• On peut les voir comme des membres appartenant à toute la


classe et non à un objet en particulier.

• this ne peut pas être utilisé dans une méthode static


Mot clé static

Règles
– On ne peut utiliser directement que des variables
locales ou des membres static dans une méthode
static(pensez à main()).

– On se sert du nom de la classe (norme) pour utiliser


des membres static et non du nom d’un objet.
– Ex: Math.pow()

– La fonction main() n’a pas accès aux membres de la


classe dans laquelle elle est définie à moins qu’ils
soient static (Ça on le savait déjà.
Exemple

public class ExempleStatic {

private static int n;

//constructeur par défaut


public ExempleStatic (){
n = n + 1;
}

public static int getNombreObjet(){


return n;
}
}

ExempleStatic e1 = new ExempleStatic();


ExempleStatic e2 = new ExempleStatic();
ExempleStatic e3 = new ExempleStatic();
System.out.print(ExempleStatic.getNombreObjet()); //affichera 3
FIN DU COURS