Concepts Orient s Objets en
JAVA
Plan
" Notion de classe
" Attributs et m thodes
" Objets et Instanciation
" Membres statiques et mots cl s final, this et null
" Les classes internes
" Les packages
1- Notion de classe
D finition :
" En Java : tout appartient une classe
" Une classe comporte des attributs et des m thodes.
" Une classe se compose de deux parties : un en-t te et un corps. Le corps
peut tre divis en 2 sections : la d claration des donn es et des
constantes et la d finition des m thodes.
" Les m thodes et les donn es sont pourvues d'attributs de visibilit qui g re
leur accessibilit par les composants hors de la classe.
" On ne peut acc der une classe qu partir dune instance de cette classe
(un objet).
" Les acc s sont sp cifi s travers des modificateurs plac s par le
concepteur de la classe qui d finissent la possibilit de restreindre l'acc s
certaines donn es, ou plus g n ralement certains l ments (m thodes,
classes, ...). En effet, les classes sont pr vues pour tre r utilis es.
D claration dune classe :
Syntaxe g n rale :
<modificateurs de visibilit > class nom_de_classe {
//d claration des donn es membres de la classe
//d claration des m thodes de la classe et du corps des m thodes
}
Modificateurs de visibilit de classe
Les modificateurs de classe sont :
" public : La classe est accessible pour nimporte quelle autre classe.
Certaines classes (comme la classe principale contenant la fonction main)
doivent obligatoirement tre d clar es publiques.
" 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 d riv es.
" abstract : La classe est d finie en tant que classe abstraite. C'est- -dire,
contenant une ou des m thodes abstraites, qui n'ont pas de d finition
explicite. Une classe abstraite ne peut pas tre instanci e : elle ne peut tre
instanci e qu travers des classes d riv es.
Remarques:
" Par convention, les noms de classes commencent par une lettre
majuscule, si elle est compos de plusieurs mots, ces mots doivent
tre li s par _ .
" Les modificateurs : abstract et final ainsi que public et private sont
mutuellement exclusifs.
" 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.
Membres dune classe
1- Attributs
Les donn es d'une classe sont contenues dans des variables nomm es
attributs. Ce sont des variables qui peuvent tre des variables d'instances
(dobjet), des variables de classes ou des constantes.
Syntaxe g n rale :
<modificateurDeVisibilit > <type><nomAttribut>[=<expression>] ;
Modificateurs de visibilit des attributs :
" public : Lattribut est visible pour nimporte quelle autre classe. Il est
pr f rable de ne pas d clarer un attribut public car cest
contradictoire avec la philosophie objet qui prot ge les donn es des
objets.
" private : lattribut n'est accessible qu' lint rieur de la classe o il est
d fini. Cest le niveau de protection le plus fort.
" protected : Seules les m thodes pr sentes dans le m me package ou
dans les sous classes pourront acc der cet attribut.
" Sans modificateur (friendly) : Si aucun modificateur nest sp cifi ,
alors cet attribut est visibles pour toutes les classes se trouvant dans
le m me package. Le mot friendly n'est pas officiel : il est emprunt e
Publicité
au langage C++.
Exemple
public class MaClasse {
public int valeur1 ;
int valeur2 ;
protected int valeur3 ;
private int valeur4 ;
}
Exercice
D finir dans la classe Rectangle les attributs longueur et largeur de type
entier. Ces attributs ne doivent tre accessibles qu lint rieur de la
classe elle-m me.
Solution:
class Rectangle {
private int longueur ;
private int largeur ;
}
Variable dinstance (Attribut dobjet)
" Une variable dinstance pr cise l' tat d'un objet auquel elle se r f re.
" Deux objets diff rents, de la m me classe, peuvent avoir des valeurs
diff rentes dans leurs attributs respectifs.
Exemple
Les attributs longueur et largeur d clar s dans la classe Rectangle sont
des variables dinstances.
Variable de classe (Attribut de classe)
" Une variable de classe est une variable repr sentant des propri t s
dont la valeur est partag e par toutes les instances dune m me
classe.
" Elles ne sont d finies qu'une seule fois quel que soit le nombre
d'objets instanci s de la classe. Leur d claration est accompagn e du
mot cl static.
" Chaque instance de la classe partage la m me variable.
Exemple
public class MaClasse {
static int compteur ;
}
Exercice:
Ajouter la classe Rectangle pr c demment d finit, un attribut
permettant de compter le nombre de rectangle cr s.
Solution:
Public class Rectangle {
private int longueur ;
private int largeur ;
static int count ;
}
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
public class MaClasse {
final double pi=3.14 ;
}
2- Les M thodes:
" ce sont des fonctions qui impl mentent les traitements de la classe.
" Elles repr sentent l quivalent des proc dures ou fonctions.
" Les m thodes agissent sur les attributs d finis lint rieur de la classe.
Syntaxe g n rale
<Modificateur> type_de_retour nom_de_la_m thode(liste des
param tres>) {
//d clarations des variables locales
// code de la m thode
}
Exemple:
public int add(int a, int b) {
return a + b;
}
Remarque:
Si la m thode retourne un tableau alors les [] peuvent tre pr cis s
apr s le type de retour ou apr s la liste des param tres.
Exemple :
int[] getValeurs() { ... }
Publicité
int getValeurs()[] { ... }
Modificateurs de visibilit des m thodes:
" public : la m thode est accessible aux m thodes des autres classes
" 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 modificateur : la m thode peut tre appel e par toutes autres
m thodes des classes du package auquel appartient la classe.
" final : la m thode ne peut tre modifi e (red finition lors de l'h ritage
interdite)
" static : la m thode appartient simultan ment tous les objets de la classe
(comme une constante d clar e l'int rieur de la classe). Il est inutile
d'instancier la classe pour appeler la m thode mais la m thode ne peut pas
manipuler de variable d'instance. Elle ne peut utiliser que des variables de
classes.
Exemple
class MaClasse{
public int valeur ;
public void afficheValeur() {
System.out.println(" nombre entier = " + valeur);
}
public boolean estPositif (){
if (valeur>0) return true ;
else return false ;
}
}
Exercice
Compl tez la classe rectangle par les m thodes suivantes :
- La m thode Affiche() permettant dafficher les caract ristique dun
rectangle.
- La m thode calcul_surface() retournant la surface dun rectangle
Solution:
class Rectangle {
private int longueur ;
int largeur ;
public void affiche( ) {
System.out.println( " la longueur est : "+longueur+ "la
largeur est" : +largeur) ;
}
public int calcul_surface ( ) {
return (longueur*largeur) ;
}
}
La M thode main()
" La m thode main de la classe principale, est ex cut e la premi re lors
de l'ex cution d'un programme Java.
" Elle doit avoir obligatoirement la signature suivante :
public static void main(String args[])
Ou
public static void main(String[] args)
" Le nom de l'argument args peut tre quelconque. C'est un tableau de
cha nes de caract res repr sentant les arguments de la ligne de
commande.
Envoi de messages
Lorsqu'on demande un objet d'ex cuter l'une de ses m thodes, un
message est envoy .
Syntaxe :
nom_objet.nom_m thode(parametre, & ) ;
Remarque:
Si la m thode appel e ne contient aucun param tre, il faut laisser les
parenth ses vides.
Un Constructeur
" est une m thode particuli re permettant lors de la cr ation des
objets, dinitialiser les attributs.
" Elle est syst matiquement invoqu e lors de la cr ation d'un objet.
" Le nom dun constructeur, doit obligatoirement correspondre celui
de la classe.
" Le constructeur est la seule m thode qui na pas de type de retour,
pas m me void, donc il ne peut pas y avoir d'instruction return dans
un constructeur.
Publicité
Il existe plusieurs types de constructeurs :
" Le constructeur simple (par d faut) : ce type de constructeur ne
n cessite pas de d finition explicite: son existence d coule
automatiquement de la d finition de la classe. Il attribue des valeurs
par d faut.
Type de lattribut
Valeur par d faut
boolean
char
int, byte, short, int long
float, double
objet
false
Caract re de code null
0
0,0
null
Exemple :
public class MaClasse {
private int nombre ;
public MaClasse() {} // constructeur simple
}
Le constructeur avec initialisation fixe :
il permet dattribuer des valeurs pr d finies
Exemple :
public class MaClasse {
private int nombre ;
public MaClasse() { nombre = 5;} // constructeur avec initialisation fixe
}
Le constructeur avec initialisation des variables :
pour ne pas attribuer les m mes valeurs aux attributs des objets lors de
leur cr ation, on peut les passer en param tres au constructeur.
Exemple :
public class MaClasse {
private int nombre ; // constructeur avec initialisation des variables
public MaClasse (int valeur) {
nombre = valeur;
}
}
Remarque : On peut d finir plusieurs constructeurs dans une m me classe
Exemple :
public class MaClasse {
private int nombre ;
public MaClasse() { nombre = 5;}
public MaClasse(int valeur) {
nombre = valeur;
}
}
Exercice :
D finir 3 constructeurs pour la classe Rectangle :
- Un constructeur sans param tres permettant dinitialiser la longueur
10 et la largeur 5.
- Un constructeur deux param tres qui permettent dinitialiser
successivement la longueur et la largeur du rectangle.
- Un constructeur un param tre, qui fait en sorte que la largeur
re oive la valeur du param tre pass au constructeur et que la
longueur fasse deux fois la valeur de celui-ci.
Solution:
class Rectangle{
private int longueur ;
private int largeur ;
Rectangle () {longueur =10 ; largeur = 5 ;} // constructeur sans param tres
Rectangle (int x, int y) { //constructeur avec 2 param tres
longueur =x ;
largeur = y ;}
Rectangle (int x) { // constructeur avec 1 param tre
longueur =2*x ;
largeur = x ;}
public int calcul_surface ( ) {return (longueur*largeur) ;}
}
Linstanciation
Publicité
Syntaxe g n rale de cr ation dobjet
Nom_Classe nom_Objet ;
nom_Objet=new nomClasse(<liste darguments>) ;
Ou en une seule d claration
Nom_Classe nom_Objet = new nomClasse(<liste darguments>) ;
Exemple
MaClasse m;
m = new MaClasse();
ou en une seule d claration :
MaClasse m = new MaClasse();
Exercice
Cr ez deux rectangles, ayant comme longueur 10 et comme largeur 5,
lun en vous basant sur le constructeur sans param tres
pr c demment d finit et lautre en se basant sur le constructeur 2
param tres.
Solution:
Rectangle r 1; Rectangle r2 ;
r1 = new Rectangle (10,5);
r2 = new Rectangle ();
Ou bien, effectuer les deux tapes en m me temps :
Rectangle r1= new Rectangle (10, 5);
Rectangle r2= new Rectangle ();
Manipulation des objets
Manipuler signifie acc der aux donn es d'un objet ou appeler une
m thode de cet objet (lui envoyer un message). Dans les deux cas, on
utilise en Java l'op rateur "." s parant le nom de l'objet du nom du
membre auquel on veut acc der.
1. Lacc s aux attributs
- Pour acc der aux attributs de lint rieur de la classe, il suffit
dindiquer le nom de lattribut que lon veut y acc der.
- Pour acc der de lext rieur de la classe, on utilise la syntaxe suivante :
<nom_Objet>.<nom_attribut>
2. Lacc s aux m thodes
- A lint rieur dune classe, les m thodes de cette classe seront
appel es en indiquant le nom et la liste des param tres effectifs de la
m thode.
- A lext rieur de la classe, linvocation dune m thode se fait comme
suit :
<nom_Objet>.<nom_m thode> ( [<liste des arguments effectifs>] ) ;
Exemple
Dans la m thode main de la classe Test_Rect, on peut appeler les
m thodes ainsi :
Rectangle r = new Rectangle (10,5) ;
r.affiche() ; // Appel de la m thode affiche
int s = r.calcul_surface() ; //Appel de la m thode calcul_surface
r.setlong(20) ; //Appel de la m thode setlong pour modifier la longueur
Le mot cl this
Cette variable sert r f rencer, dans une m thode, l'instance de l'objet
en cours d'utilisation. this est un objet qui est gale l'instance de
l'objet dans lequel il est utilis .
La r f rence this peut tre utile :
- Lorsquune variable locale (ou un param tre) cache, en portant le
m me nom, un attribut de la classe.
- Pour appeler un constructeur depuis un autre constructeur.
Exemple
public maclasse{
private int nombre1;
private int nombre2;
public maclasse(int nombre1) {
this.nombre1 = nombre1; // variable de classe = variable en param tre du
constructeur
}
public maclasse(int nombre1, int nombre2) {
this(nombre1)
this.nombre2 = nombre2;
}
}