Académique Documents
Professionnel Documents
Culture Documents
Héritage
Principe de l'héritage
L'héritage et les classes abstraites
L'héritage et les méthodes abstraites
2
L'héritage et les interfaces
Sommaire
Classe
Concept de base
Les objets
Les attributs
Les méthodes
Le constructeur
Le Destructeur
Les Accesseurs
Exemple complet
Classe String
Classe Math
Héritage
3
Classe(1)
I En java, tout appartient à une classe (sauf les objets de type
primitifs)
I Une classe est un support de l'encapsulation
I C'est un ensemble de données et de fonctions regroupées dans
une même entité
I La classe est un modèle qui s'apparente à la déclaration d'un
nouveau type de données
I On peut déclarer une variable (on parle d'objet ou d'instance
de la classe en POO) du type de cette classe
I C'est une description abstraite d'un objet
I Une classe comporte sa déclaration, des variables et la
dénition de ses méthodes 4
Classe(2)
I On déclare une classe par le mot clé class précédé d'un
modicateur.
5
Classe(3)
6
Les modicateurs de classe
I public : la classe est accessible partout
I private : la classe n'est accessible qu'à partir du chier où elle
dénie
I nal : la classe ne peut pas être modiée. Sa redénition par
l'héritage est interdite.
I abstract : la classe contient au moins une méthode abstraite.
I Une classe déclarée abstract ne peut pas être instanciée
I Dénir une classe qui hérite de cette classe et qui implémente
les méthodes nécessaires pour ne plus être abstraite. (à voir)
7
Objets-Classe
I Un objet est une instance d'une classe
I La classe est une description d'un objet
I Un objet est créé à partir de l'opérateur new et est associé à
une variable.
I En java, tous les objets sont instanciés par allocation
dynamique.
Personne p;
p = new Personne();
OU
Les attributs
I Des variables qui denissent l'etat d'un objet d'une classe (le
nom d'une personne,. . . ).
I Ce variables sont des attributs qui peuvent etre des types
primitifs (int,. . . ) ou des objets.
9
Les attributs(1)
Les variables d'instance
I Une variable d'instance est une simple variable déclarée dans le
corps de la classe.
I Chaque instance de la classe a accès à sa propre occurrence de
la variable.
11
Les attributs(3)
Les constantes
I Les constantes sont dénies avec le mot clé nal.
I Leur valeur ne peut pas être modiée une fois qu'elles sont
initialisées.
12
Les méthodes(1)
Méthodes
I Permettent d'interagir à l'extérieur d'une classe.
I Elles peuvent aussi modier les attributs de la classe.
17
Constructeur(2)
Constructeur sans paramètres Constructeur avec paramètres
18
Destructeur
Destructeur
I Comme son nom l'indique, il détruit un objet après son usage.
I Il permet d'exécuter du code pour la libération de l'espace
mémoire occupé par un objet.
I En java, il est évoqué automatiquement par la machine
virtuelle.
I Il ne libérera pas la mémoire des objets en cours d'utilisation.
I Connu sous les noms de : GB (Garbage Collector), RM
(Rammasse-Miette).
19
Les accesseurs
Accesseur
I Les données déclarées private à l'intérieur d'une classe ne
peuvent être accédées et modiées que par des méthodes
dénies dans la même classe.
I Un accesseur est une méthode publique qui donne l'accès à
une variable d'instance privée.
I Par convention, les accesseurs en lecture commencent par get
et les accesseurs en écriture commencent par set.
23
Classe String (1)
I Il s'agit d'une classe dénie dans l'API Java (package
java.lang) ;
String s = "aaa" ;
String s = new String("aaa") ;
I La concaténation
String str1 = "Bonjour !" ;
String str2 = null ;
str2 = "Comment vas-tu ?" ;
String str3 = str1 + str2 ; /* Concaténation de chaînes : str3
contient " Bonjour ! Comment vas-tu ?" */
24
Classe String (2)
I Longueur d'une chaine : méthode int length() ;
String s = "bonjour" ;
int l = s.length() ; // l vaut 7.
I Sous-chaîne : méthode String substring(int debut, int n) ;
extraction de la sous-chaine depuis la position debut jusqu'à
la position n non-comprise.
String str2 = s.substring(0,3) ; // str2 contient la valeur
"bon"
I Récupération d'un caractère dans une chaîne méthode char
charAt(int pos) ;
char unJ = s.charAt(3) ; // unJ contient le caractère 'j'
25
Classe String (3)
I pour tester si 2 chaînes sont égales : méthode boolean
equals(String str) ;
I pour tester si 2 chaînes sont égales à la casse près il faut
utiliser la méthode : boolean equalsIgnoreCase(String str)
I pour tester si une chaine de caractère commence par la chaine
de caractère str : boolean startsWith(String str)
I pour tester si une chaine de caractère se termine par la chaine
de caractère str : boolean endsWith(String str)
I Plus d'informations dans les documentations de l'API dans le
package java.lang
26
Classe Math
I Les fonctions mathématiques les plus connues sont regroupées
dans la classe Math qui appartient au package java.lang
I les fonctions trigonométriques
I les fonctions d'arrondi, de valeur absolue, ...
I la racine carrée, la puissance, l'exponentiel, le logarithme, etc.
27
Sommaire
Classe
Héritage
Principe de l'héritage
L'héritage et les classes abstraites
L'héritage et les méthodes abstraites
L'héritage et les interfaces
28
Héritage(1)
Dénition
I L'héritage est un mécanisme qui facilite la réutilisation du
code et la gestion de son évolution. C'est la relation entre :
I une classe mère ou super classe
I une classe lle ou sous classe qui hérite de sa classe mère
I Un fonctionnaire est une personne et étudiant est aussi une
personne.
Intêret
I Le code commun entre diérentes classes est factorisé dans la
classe mère
29
Héritage(2)
Principe
I les objets d'une classe lle ont accès aux données et aux
méthodes de la classe mère.
I Les sous classes peuvent redénir les variables et les méthodes
héritées
I Les instances de la classe lle (objets) sont aussi des instances
de la classe mère,l'operateur instanceof renvoie true
I Une classe peut avoir plusieurs sous classes. Une classe ne
peut avoir qu'une seule classe mère : il n'y a pas d'héritage
multiple en Java.
I Un attribut déclaré protected est accessible dans son
paquetage et dans ses classes dérivées.
I Si un attribut de la super-classe est privé (private), la 30
32
Héritage(4)
...
Mere a= new Mere () ;
La mere affiche Bonjour de A
Fille b = new Fille () ;
La mere affiche Bonjour de B
a.afficheTexte (" Bonjour de A" );
La fille affiche Bonjour de B 33
b.afficheTexte (" Bonjour de B" );
...
Les Classes abstraites
Classes abstraites
I Une classe abstraite ne peut pas être instanciée ; seules ses
classes lles peuvent l'être.
I Le but est de decrire un comportement general puis de le
raner dans les classes lles.
I Une classe qui contient une (ou plusieurs) methode(s)
abstraite(s) doit etre declarée abstraite.
I En Java, c'est le mot clé abstract qui permet de declarer un
element abstrait.
...
abstract void ecrirePersonne() ;
...
35
Exemple
36
Exemple
37
Exemple
38
Les interfaces
Interfaces
I Une interface = une classe qui contient uniquement des
méthodes abstraites.
40
Exemple
41
Exemple
42
Exercices
43
Questions
44