CoursPOOJava_part2

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 21

Rédaction des méthodes

 Déclaration des méthodes:


En Java, les textes des méthodes sont rédigés à l’intérieur de la
définition d’une classe.
Une déclaration de méthode a la forme suivante :

 T est le type du résultat (void si la méthode ne rend pas de résultat).


 PPP est le nom de la méthode.
 T1 p1, T2 p2, ... est la liste des paramètres avec leur type. Si une méthode
n’a pas de paramètre, il faut tout de même conserver les parenthèses : T
PPP().
 Corps est composé de déclarations de variables et d’instructions. Les
déclarations peuvent être mêlées aux instructions.
 Le rendu de résultat se note return expression :

On peut donner le même nom à plusieurs méthodes, à condition qu’elles diffèrent


par le nombre ou le type des paramètres.
Rédaction des méthodes (2)

 Instance courante: This


Dans le cas où un appel de méthode porte sur un objet, cet objet
est appelé communément l’instance courante.
Au sein des méthodes, les composants de l’instance courante
sont directement désignables par leur identificateur.
Par exemple, lors de l’exécution de vigor.avancer(), X et Y
désignent les composants X et Y de vigor.
 Citation explicite de l’instance courante : this
Dans certains cas, on peut avoir besoin de citer explicitement
l’instance courante dans le texte d’une méthode, par exemple
pour passer cette instance en paramètre de procédure.
On dispose pour cela du mot clé this (littéralement “lui”).
 Citation explicite de l’instance courante : this
Prenons un exemple classique, le placement de boutons dans
une fenêtre de dialogue. La procédure de placement peut
être définie dans une classe à part, Placement.

La classe Fenetre ci-dessous place un bouton au sein d’elle-


même en se passant en paramètre à la méthode placer() :
Composants non liés à des objets : static
 besoin de procédures non associées à un objet (parfois)
 Pas de procédures isolées: cette procédure doit être
rédigée dans la classe
Classe=>regroupant les procédures autour d’un même
thème
 Exemple: une procédure qui compare deux objets de
type Robot et rend le meilleur des deux, mais sans
vouloir associer la méthode leMeilleur à l’un plutôt qu’à
l’autre => attribut static
Composants non liés à des objets : static
 Appel de la procédure:


 définir des données qui ne sont pas des composants
d’objets. => l’attribut static,
 pas de procédures isolées en Java, il n’y a que des
méthodes de classe => inventer artificiellement une classe
La solution est par convention: donner un nom significatif à la
classe, et un nom muet à la méthode
Le mot clé final
 Le mot clé final s'applique aux variables, aux méthodes et
aux classes.
 Une variable qualifiée de final signifie que la variable est
constante.
 Une variable déclarée final ne peut plus voir sa valeur
modifiée.
 On ne peut déclarer de variables final locales à une
méthode.
 Les constantes sont qualifiées de final et static.
 Exemple :
public static final float PI = 3.1416f;
Abstraction de la représentation : private et public

 On utilise généralement une classe pour réaliser un type de


données ou bien un comportement d’objet dont on souhaite
cacher la mise en œuvre à l’utilisateur.

 Exemple de type de données: « Pile d’entiers »


Etat d’un objet: une suite finie, éventuellement vide, de valeurs
entières qui ont été empilées une à une.
Le sommet est la plus récente des valeurs empilées, non encore
retirées.
On peut empiler ou dépiler
Abstraction de la représentation : private et public

 La classe PileEnt

 La classe laisse voir trop de chose à voir!!


Abstraction de la représentation : private et public

 Le tableau P et l’index s ne font pas partie des


propriétés d’une pile, ce ne sont que des éléments d’une
mécanique interne particulière.
PileEnt doivent être indépendants de ces choix arbitraires
de mise en œuvre.
Abstraction de la représentation : private et public

 Rendre inaccessible un membre par son identificateur


 on le déclare à la suite du mot clé private.

 P et s ne sont accessible que de l’intérieur de la classe


 Encapsulation
Organisation interne des classes
Classes internes
 Définir une classe à l’intérieur d’une autre
 Une telle classe est dite interne (inner class en anglais)
 le nom de la classe interne est purement local
 Par exemple, pour programmer une pile au moyen de maillons chaînés, on peut définir une
classe Maillon interne à la classe Pile.
Classes internes

 A l’extérieur de la classe englobante:


classe englobante.classe interne
 la classe interne ne fait référence à aucun membre de la
classe englobante : on pourrait dans ce cas la déclarer avec
l’attribut static.
 une nouvelle classe interne par objet de la classe englobante,
chacune étant liée à un objet
 On veut parcourir la pile: plusieurs parcours en même temps
sur une même pile
 Définir une classe Parcours et créer un objet à chaque parcours
 une nouvelle classe interne par objet de la classe
englobante, chacune étant liée à un objet
Classes internes
 Le constructeur Parcours() initialise le parcours à partir du sommet
 suivant() passe au suivant dans la pile,
 element() rend l’élément courant du parcours
 estEnFin() teste si le parcours est fini.
Classes internes

 Exemple d’utilisation:

 Noter la forme (surprenante) de la création d’un objet


instance d’une classe interne :
objet.new constructeur
La durée de vie d’un objet
 Les objets ne sont pas des éléments statiques et leur durée de vie
ne correspond pas forcément à la duréed'exécution du
programme.La durée de vie d'un objet passe par trois étapes :

la déclaration de l'objet et l'instanciation grâce à l'opérateur new


Exemple :
nom_classe nom_objet = new nom_classe( ... );
l'utilisation de l'objet en appelant ces méthodes
la suppression de l'objet (destruction) : elle est automatique en java
grâce à la machine virtuelle. La restitution de la mémoire inutilisée est
prise en charge par le récupérateur de mémoire (garbage collector). Il
n'existe pas d'instruction delete comme en C++.
Paquetages: Organisation des classes en packages

 Les package introduisent la notion d’espace de nom


 Les espaces de noms servent à résoudre les conflits de
chemins d’accès entre plusieurs classes portant le même
nom.
 Toute classe doit toujours appartenir à un espace de
nom (i.e.,à un package)
 Lespackages aident à bien organiser les applications. Ils
définissent une hiérarchie.
 Exemple:
Déclaration de package (ex. de banque.detail
et banque.affaire)
Arborescence découlant de l’organisation en packages
Importation d’une classe appartenant `a un autre package

 Très souvent, on a besoin d’accéder à des classes


appartenant à d’autres package que celui dans lequel on
développe
 Utilisation du mot-clé import avec le nom complet de la
classe (fully qualified name, notation pointée) à importer
Arborescence découlant des packages point et sphere

Vous aimerez peut-être aussi