Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Ensuite, tout ce qui est contenu entre les accolades fait partie de la classe.
L'ordre des méthodes dans une classe n'a pas d'importance. Si dans une classe, on rencontre
d'abord la méthode A puis la méthode B, B peut être appelée sans problème dans A.
Les modificateurs de classe (Class Modifiers) sont :
Modificateur Rôle
Private la classe n'est accessible qu'à partir du fichier où elle est définie
Final La classe ne peut pas être modifiée, sa redéfinition grâce à l'héritage est
interdite. Les classes déclarées final ne peuvent donc pas avoir de classes
filles.
Abstract la classe contient une ou des méthodes abstraites, qui n'ont pas de définition
explicite. Une classe déclarée abstract ne peut pas être instanciée : il faut
définir une classe qui hérite de cette classe et qui implémente les méthodes
nécessaires pour ne plus être abstraite.
Les modificateurs abstract et final ainsi que public et private sont mutuellement exclusifs.
Remarque : Conventions de nommage en Java
Par convention, en Java les noms de classes commencent par une lettre majuscule,
si elle est composée de plusieurs mots, ces mots doivent être liés par « _ » et commencent par
une lettre majuscule.
Déclaration
2
PROGRAMMATION ORIENTE OBJET
int position ;
protected float salaire = 1000 ;
a. Les modificateurs
Modificateur Rôle
public Un attribut déclaré public est visible par toutes les autres classes.
Dans la philosophie orientée objet aucune donnée d'une classe ne devrait être
déclarée publique : il est préférable d'écrire des méthodes pour la consulter
et la modifier
par défaut : Il n'existe pas de mot clé pour définir ce niveau, qui est le niveau par défaut
lorsqu'aucun modificateur n'est précisé. Cette déclaration permet à un
friendly
attribut d'être visible par toutes les classes se trouvant dans le même
package
protected Si un attribut est déclaré protected, seules les méthodes présentes dans le
même package que cette classe ou ses sous classes pourront y accéder.
private C'est le niveau de protection le plus fort. Les composants ne sont visibles
qu'à l'intérieur de la classe :ils ne peuvent être modifiés que par des
méthodes définies dans la classe prévue à cet effet.
Une variable d'instance nécessite simplement une déclaration de la variable dans le corps de la
classe. Chaque instance de la classe a accès à sa propre occurrence de la variable.
Exemple : class Compteur {
int position ;
}
Pour chaque instance de la classe Compteur l’attribut position sa valeur propre à l’instance
3
PROGRAMMATION ORIENTE OBJET
class Compteur {
Dans cet exemple l’attribut pas = 2 est fixé pour toutes les instances de Compteur.
L’attribut position est propre à chaque instance.
Les propriétés et des méthodes statiques sont directement associées à la classe et non aux
instances de la classe :
d. Les constantes
Les constantes sont définies avec le mot clé final : leur valeur ne peut pas être modifiée
une fois qu'elles sont initialisées.
Exemple
class Compteur {
2. Méthodes
Chaque classe possède un ensemble de méthodes qui représentent ce que l'objet sera capable
de faire (son comportement). Les méthodes sont en fait, des blocs de code, réalisant un certain
nombre d'opérations sur les différentes ressources d'une classe. Une méthode peut prendre des
arguments mais aussi renvoyer des données à l'objet appelant.
4
PROGRAMMATION ORIENTE OBJET
Déclaration
Une déclaration de méthode est de la forme suivante :
/* corps de la méthode*/
}
Exemple
l’objet. */
a. Les modificateurs
Modificateur Rôle
private L’usage de la méthode est réservé aux autres méthodes de la même classe.
protected La méthode ne peut être invoquée que par des méthodes de la classe ou de
ses sous classes.
Sans La méthode peut être appelée par toutes autres méthodes des classes du
modificateur package auquel appartient la classe.
class Compteur {
Compteur(int position) {
this.position = position ; }
static void setPas(int pas) {
Compteur.pas = pas ; }
6
PROGRAMMATION ORIENTE OBJET
Lors des appels aux méthodes, tous les paramètres sont passés par valeur. Le
concept de passage par adresse n'existe pas. Rappelons que les seuls types possibles de
paramètres sont les types primitifs et les références. Autrement dit :
les types primitifs (les entiers, les booléens et les flottants) sont passées toujours par
valeur. C'est la valeur du paramètre (la copie d'une constante ou du contenu d'une
variable) qui est passée en paramètre à la méthode invoquée. Une méthode ne peut
donc jamais modifier la valeur d'une variable de type primitif du code appelant.
les références également sont passées par valeur. Ce qui est passé ici en paramètre,
c'est la valeur de la référence et jamais l'objet lui-même. Une méthode peut donc
modifier cette copie de la valeur de la référence sans que cela modifie la valeur de la
référence du code appelant. Par contre, si la méthode modifie un champ de l'objet
référencé par cette valeur, c'est l'objet (qui lui n'est peut-être passé par valeur) qui est
modifié pour tout référence vers cet objet. Le code appelant se voit donc l'objet référencé
modifié.
c. Méthode constructeur
Chaque classe doit définir une ou plusieurs méthodes particulières appelées des
constructeurs. Un constructeur est une méthode invoquée lors de la création d’un objet.
Cette méthode, qui peut être vide, effectue les opérations nécessaires à l’initialisation d’un
objet. Chaque constructeur doit avoir le même nom que la classe où il est défini et n’a aucune
valeur de retour (c’est l’objet créé qui est renvoyé).
La définition d'un constructeur est facultative. Si elle n'est pas définie, la machine
virtuelle appelle un constructeur par défaut vide créé automatiquement. Dès qu'un constructeur
est explicitement défini, Java considère que le programmeur prenne en charge la création des
constructeurs et que le mécanisme par défaut, qui correspond à un constructeur sans paramètres,
est supprimé. Si on souhaite maintenir ce mécanisme, il faut définir explicitement un
constructeur sans paramètres.
7
PROGRAMMATION ORIENTE OBJET
Exemple :
position = 10 ; pas = 1 ;
}
● Le constructeur avec initialisation des variables : pour spécifier les valeurs de données
à initialiser on peut les passer en paramètres au constructeur
Exemple :
position = p ;
this.pas = pas ;
}
d. La méthode main()
Lorsqu’on invoque la machine virtuelle pour l’exécution d’un programme, celle ci part à
la recherche d'un sous-programme particulier appelé main de la classe principale pour
l’exécuter en premiers.
e. Les destructeurs
En JAVA, lorsqu’un objet ne sert plus à rien, il n’est pas nécessaire de l’effacer de la
mémoire. En effet, un outil très efficace nommé le garbage collector s’occupe de vérifier
l’utilité de garder en vie les objets et les supprime le cas échéant. La conséquence directe est
que le développeur ne se soucie plus de cet aspect tant redouté par les programmeurs C++ qu’est
la destruction des objets.
9
PROGRAMMATION ORIENTE OBJET
Exemple
A l’exécution, la machine virtuelle va donc stocker cet objet quelque part dans la
mémoire puis créer a une référence pointant sur cet objet :
L’opération suivante aura pour effet de créer une nouvelle référence mais pas un nouvel
objet :
Compteur cmp2 = cmp1;
L'opérateur new est un opérateur de haute priorité qui permet d'instancier des objets et
d'appeler une méthode particulière de cet objet : le constructeur. Il fait appel à la machine
virtuelle pour obtenir l'espace mémoire nécessaire à la représentation de l'objet puis appelle le
constructeur pour initialiser l'objet dans l'emplacement obtenu. Il renvoie une valeur qui
10
PROGRAMMATION ORIENTE OBJET
référence l'objet instancié. Si l'opérateur new n'obtient pas l'allocation mémoire nécessaire, il
lève l'exception OutOfMemoryError.
Exemples
Remarque : un objet String est automatiquement créé lors de l'utilisation d'une constante
chaîne de caractères sauf si celle-ci est déjà utilisée dans la classe. Ceci permet une
simplification lors de la compilation de la classe.
Exemple
2. L'objet null
L'objet null est utilisable partout. Il n'appartient pas à une classe mais il peut être utilisé
à la place d'un objet de n'importe quelle classe ou comme paramètre.
null ne peut pas être utilisé comme un objet normal : il n'y a pas d'appel de méthodes et
aucune classe ne peut en hériter. Le fait d'initialiser une variable référant un objet à null permet
au Garbage collector de libérer la mémoire allouée à l'objet.
11
PROGRAMMATION ORIENTE OBJET
Exemple
Compteur1.position = 10 ;
Compteur2.position=20;
if (Compteur1.position !=Compteur2.position)
System.out.println("différent");
La même syntaxe est utilisée pour appeler une méthode d’un objet.
Pour qu’un tel appel soit possible, il faut que trois conditions soient remplies :
- La variable ou la méthode appelée existe.
- Une variable désignant l’objet visé existe et soit instanciée.
- L’objet, au sein duquel est fait cet appel, ait le droit d’accéder à la méthode
ou à la variable.
Pour référencer l’objet “courant” (celui dans lequel se situe la ligne de code), le langage
Java fournit le mot-clé this. Celui-ci n’a pas besoin d’être instancié et s’utilise comme une
variabledésignant l’objet courant. Le mot-clé this est également utilisé pour faire appel à un
constructeurde l’objet courant. Ces deux utilisations possibles de this sont illustrées dans
l’exemple suivant :
12
PROGRAMMATION ORIENTE OBJET
class Compteur { class Compteur {
Si on souhaite sauvegarder le nombre des objets crées et attribuer à chaque objet son
numéro d’ordre. Pour satisfaire à cet objectif, on a certainement besoin d’un attribut de type
statique qui est commun à tous les objets et qui sauvegarde le nombre d’objets déjà crées.
Exemple
class Compteur {
this.position = position ;
}
static void setPas(int pas) {
Compteur.pas= pas ;
}
void compter() {
13
position += pas ; }
}
PROGRAMMATION ORIENTE OBJET
Les méthodes de classe, désignent les méthodes dont les actions concernent la classe
entière et non pas un objet particulier. De même, l’accès à ces méthodes ne nécessite pas la
création d’un objet de la classe, car on peut appeler directement la méthode à travers le nom
de la classe. On peut utiliser aussi ces méthodes statiques pour manipuler des données statiques.
L’accès à cette méthode peut se faire de deux façons :
Nom_classe.nom_méthode(paramètres).
Nom_objet.nom_méthode(paramètres).
Comme les propriétés et méthodes statiques sont associées à la classe, il n’est pas nécessaire de
posséder une instance pour les utiliser :
Compteur2.compter();
System.out.println(Compteur1.position);
System.out.println(Compteur2.position);
}
Exemple :
Class Animal {
boolean vivant ;
int âge ;
Coordonnées position ;
// classe imbriquée
Class Coordonnées {
int x = 0;
int y = 0;
...}
Animal() {
...}
- Les classes internes sont visibles uniquement par les méthodes de la classe dans laquelle
sont définies.
15
PROGRAMMATION ORIENTE OBJET
- Elles ont accès à tous les éléments de la classe qui les englobe (même privé).
- On ne peut pas accéder directement aux attributs et aux méthodes de la classe interne.
Toutefois, on peut les appeler indirectement à travers la classe externe qui l’englobe.
- Une classe interne statique ne peut accéder qu’aux membres statiques de la classe
externe.
V. Les Packages
1. Création :
En java, il existe un moyen de regrouper des classe voisines ou qui couvrent un même
domaine : ce sont les packages. Un package peut être considéré comme une bibliothèque des
classes : il permet de regrouper un certain nombre des classes relativement liées. Les packages
peuvent être organisés d’une manière hiérarchique en sous-packages et ainsi de suite. Les
classes d’un même paquetage sont dispersées dans plusieurs fichiers sources dont la première
ligne est :
Package nom-de-paquetage
Exemple
Ainsi par cette opération nous venons d'assigner toutes les classes du fichier Exemple.java
au paquetage gestion_examen. Si l'instruction package était absente du fichier, alors c'est
le paquetage par défaut qui est pris en considération. Ainsi toutes les classes du fichier vont
appartenir au paquetage par défaut.
Après la création du package il faut enregistrer le fichier dans un répertoire portant le même
nom que le package ensuite il faut ajouter le chemin du package dans la variables
d’environnement classpath.
16
PROGRAMMATION ORIENTE OBJET
Un paquet (package) :
▶ est une collection de classes
▶ peut contenir des sous-paquets
2. Utilisation:
Si on instancie un objet d'une classe donnée, le compilateur va chercher cette classe dans le
fichier où elle a été appelée, nous dirons que cette recherche a eu lieu dans le paquetage par
défaut même si ce dernier porte un nom. Si notre appel fait référence à une classe appartenant
à un autre paquetage, on doit aider le compilateur à retrouver le chemin d'accès vers cette classe
en procédant comme suit:
A. En mentionnant le chemin complet d'accès à la classe : En citant les noms complets des
paquetages nécessaires:
Exemple
Ou
import nom-de-paquetage.*
Exemple
import gestion_examen.Etudiant;
// code qq ...
// code qq .... 17
----------------Fin Fichier-----------------
PROGRAMMATION ORIENTE OBJET
Remarques
- Le paquetage java.lang est importé automatiquement par le compilateur.
- Import gestion_examen.*; Cette instruction ne va pas importer de manière récursive
les classes se trouvant dans gestion_examen et dans ses sous paquetages. Elle va
uniquement se contenter de faire un balayage d'un seul niveau. Elle va importer donc
que les classes du paquetage gestion_examen.
Exemple
Import java.awt.*;
Import java.awt.event.*;
(ou)
java.sql.Date
Exemple
import java.util.Date;
public class DateMain {
public static void main(String[] args) {
Date today = new Date();
System.out.println(”Nous␣sommes␣le␣” + today.toString());
}
}
19
PROGRAMMATION ORIENTE OBJET
3. Avantages
- Facilite le développement des bibliothèques et des modules autonomes.
- Les classes d’un même package travaillent conjointement sur un même domaine.
- Facilite la réutilisabilité.
20