Concepts Orientés Objets en JAVA

Page 1 sur 39Lecteur de document UniversityLib

Concepts Orientés Objets en JAVA

Object-Oriented Programming, Java · notes

Voir tous les documents en programmation

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;

}

}