Application de la Programmation
Orientée Objet au
langage JAVA
Mr Hamadou MBALLO
Licence 2 Informatique CEFAS.
1
Que donne ce cours ?
Ce cours donne les bases fondamentales de la programmation orientée objet
appliquée au langage JAVA.
Quelles compétences acquérir après le cours ?
Après ce cours, l’apprenant aura des bases solides en POO…
Vers où aller après le cours ?
Après le cours, le lecteur pourra attaquer les notions très avancées en Java telles
que : Les SWING, JAVA Fx, JDBC ce qui lui permettra de réaliser des
applications autonomes fonctionnant sur un seul ordinateur. Par la suite attaquer
la programmation d’applications entreprises avec la technologie JEE (J2E). Il
pourra aussi s’attaquer à la programmation avec le Framework Spring Boot.
2
Apprendre à optimiser !!!
Compiler et ça marche ne veut pas
dire que le programme est BON !
Il faut OPTIMISER ...
3
PROGRAMME JAVA POO :
◼ Module 4 : Les tableaux
◼ Module 5 : Les concepts de base de la POO
◼ Module 6 : L’héritage
◼ Module 7 : Le Polymorphisme
4
Module 5 Concepts de base de la POO
Ce cours enseigne les aspects suivants:
- notion d’objet, de classe;
- construction des objets : notion de constructeur;
- champs d’instance, méthodes d’instance;
- autoréférence: this
- champs et méthodes de classe;
- affectation d’objets;
- transfert d’informations avec les méthodes;
- notion d’objet membre;
- comparaison d’objets;
- surdéfinition (surcharge) de fonctions;
- surdéfinition de constructeurs;
- appel de constructeur dans un autre constructeur de la même classe: this (…)
5
Le concept d’ objet
Un objet peut être défini comme étant une entité concrète ou abstraite du
monde réel. Les objets contiennent des attributs et des méthodes.
Chaque objet sera caractérisé par son jeu de données( on parlera d’
attributs ou aussi de champs). Les fonctions qui agissent sur les
données de l’objet sont aussi appelées méthodes.
données
CHAMPS propriétés
caractéristiques
attributs
OBJET (Identification, caractérisation)
METHODES
(Opérations, mouvements, manipulations, fonctions)
6
Le concept d’ objet: exemples
CHAMPS - abscisse
- ordonnée
Point
METHODES - affiche
Objet point du plan cartésien
- coincide
CHAMPS prenom
nom
numero
Compte solde
METHODES - deposer
- retirer
Objet compte en banque 7
Objet = identité + état + comportement (1/2)
Chaque objet possède :
- une identité qui lui est propre :
Même si deux personnes ont des noms identiques, elles désignent deux
individus distincts. Elles ont une identité distincte .
- un état : les informations qui lui sont propres
Il est défini par les valeurs associées à chacun des champs de la classe.
Pour une personne : nom ,prénom, age, sexe, race ……
- un comportement : les méthodes applicables à l’objet
Pour une personne : respirer, marcher, mourir ……
8
En considérant des objets points du plan cartésien:
Point a = new Point (2,3);
Point b=new Point (4,5);
Objet = identité + état + comportement (2/2)
2 [Link] ( );
3
Identité =Référence
(adresse mémoire)
a 4
Identité =Référence [Link] ( );
(adresse mémoire) 5
b 9
Le concept de classe
Une classe est la description d’un ensemble de données et de fonctions
regroupées au sein d’une même entité (appelée objet).
On peut définir une classe comme étant aussi une description abstraite
d’un objet du monde réel.
Classe des points
Point p2
Point p4
Point p1
Point p5
Point p3
10
« Une classe est une usine de création d’objets de même nature. »
Définition d’une classe
private: Les champs x et y ne sont
visibles qu’à l’intérieur de la classe et
non à l’extérieur : principe de
l’encapsulation des données. Les
package [Link]; données ne seront accessibles que par
public class Point l’intermédiaire de méthodes prévues à
{ cet effet (accesseurs).
private int x ; // champ x d’un objet Point
private int y ; // champ y d’un objet Point
public Point ( int abs, int ord )
{ x = abs ; Permet d’attribuer des valeurs initiales
y = ord ; aux champs de l’objet.
} Cette méthode est ce qu’on appelle un
} // fin de la classe constructeur.
11
Remarques
Une méthode peut être déclarée private : dans ce cas elle n’est visible qu’à
l’intérieur de la classe où elle est définie. Pour pouvoir l’utiliser dans un
autre programme, il faut nécessairement passer par une méthode publique
de sa classe ayant l’appelée.
Il est fortement déconseillé de déclarer des champs avec l’attribut public,
cela nuit à l’encapsulation des données.
12
Créer un objet = instancier une classe
int a = 10 ; // réservation de l’emplacement mémoire pour une variable de type int
float x ; // réservation de l’emplacement mémoire pour une variable de type float
Point a ; // cette déclaration ne réserve pas d’emplacement pour un objet de type Point
// mais simplement une référence à un objet de type Point.
La création d’un objet (on parle d’instanciation ) se fait avec l’opérateur new :
on pourra écrire :
a= new Point (1, 2) ; // crée un emplacement mémoire pour un objet de
//type Point et on met sa référence dans la variable a
1 x
référence
2 y objet
a
Point
13
Utilisation d’une classe
Lorsqu’une classe est définie, il ne reste qu’à l’utiliser, en instanciant des objets
et en appelant les méthodes décrivant les fonctionnalités. Mais attention, l’accès
DIRECT aux champs encapsulés est impossible en dehors de leur classe.
package [Link];
public class TestPoint
{ public static void main( String args [ ] )
{ Point a = new Point (1,2) ;
int abs=a.x; // tentative d’acces au CHAMP x déjà bien encapsulé dans sa classe
int ord=a.y; // tentative d’acces au CHAMP y déjà bien encapsulé dans sa classe
}
} // fin de la classe TestPoint
Lorsque vous définissez une classe, vous devez aussi y définir toutes les méthodes utiles.
En particulier, songez à définir les ACCESSEURS ou MUTATEURS. Il s’agit de méthodes
(que l’on nomme aussi getter et setter) servant à accéder et à modifier individuellement
chaque champ de l’objet surtout lorsque ceux-ci sont encapsulés.
14
ACCESSEURS: getter et setter
Voici les accesseurs à insérer dans notre classe Point précédente.
public class Point
{
//code manquant
Remarque importante: Java a introduit une convention importante
public int getX ( ) sur le nommage des getter et setter qui stipule que leur
{ return x; nom doit commencer par get (pour un getter) et set
} (pour un setter) suivi du nom du champ et que l’initiale
public int getY ( ) du nom du champ doit commencer par une lettre MAJUSCULE.
{ return y;
}
public void setX (int abs )
{ x=abs;
}
public void setY (int ord )
{ y=ord;
}
} // fin de la classe Point 15
Autres fonctionnalités
A part les accesseurs, les autres fonctionnalités de la classe doivent y être
insérées sous forme de méthodes d’instances ou méthodes de classe.
Voici par exemple, une méthode pour déplacer un point et une méthode pour afficher
à la fois les coordonnées d’un point.
Pour utiliser ces méthodes, il suffit de disposer d’une instance de la classe:
Point z = new Point (23,-12)
Et de faire: [Link] (-3,-4); // on dit que l’instance z accède à SA méthode deplace
[Link] ( );
class Point
{
// code manquant
public void deplace (int dx, int dy )
{ x += dx ; y += dy ;
public void affiche( )
{ [Link]("Point de coordonnées" + x + " et " +y);
} //fin de la classe Point
16
Exercice d’application
A l’image de l’exemple de la classe Point, concevoir et créer une classe minimale,
Calculatrice, permettant de faire des opérations addition et soustraction de 2 entiers.
Créer une classe d’exploitation TestCalculatrice où vous instanciez la classe Calculatrice.
17