Vous êtes sur la page 1sur 21

 TICKER ALGORITHME ALGORITHME  

Home Privacy Policy Contact Us    

BASE DE DONNÉES PYTHON ALGORITHME (COURS) ALGORITHME (EXERCICES) LES FONCTIONS EN ALGORITHME C (EXERCICES) C (COURS) JAVA 

POO EN JAVA C++ POO EN C++ MINI-PROJETS LANGAGE C#

Accueil  programmation orienté objet  programmation orientée objet en JAVA

programmation orientée objet en JAVA


by Le chemin vers la programmation - mai 26, 2021

Read Carry Share


Portez l'Evangile numérique

SOCIAL PLUGIN
INSTALLER

   

CATEGORIES

La notion de POO

1) Introduction

POO c’est quoi ????
La programmation orientée objet (POO), ou programmation par objet, est un concept
de programmation plus puissant et pratique. En effet, avec ce type de programmation,
vous pourrez créer, utiliser, recréer divers objets à travers d’une classe.

Un objet représente un concept, une idée ou toute entité du monde physique, comme
une voiture, une personne ou encore une page d'un livre. Il possède une structure interne
et un comportement, et il sait interagir avec ses pairs. Il s'agit donc de représenter ces
objets et leurs relations. L’interaction entre les objets via leurs relations permet de
concevoir et réaliser les fonctionnalités (méthodes) attendues. Alors le POO est permet de
transcrire les éléments du réel sous forme virtuelle.

Exemple :
Qu'est-ce-qu' une classe ?
Une « classe » est un modèle de données définissant la structure commune à tous les
objets qui seront créés à partir d'elle. Autrement dit, nous pouvons percevoir une classe
comme un moule grâce auquel nous allons créer autant d'objets de même type et de
même structure qu'on le désire.

Par exemple, pour modéliser n'importe quelle voiture, nous pourrions écrire une classe
Voiture dans laquelle nous définissons les attributs (couleur, matricule, marque, ...) et
méthodes (démarrer, accélérer, freiner,...) communs à tout voitures.

Qu'est-ce qu'un objet ?


Un « objet » est une représentation d'une chose matérielle ou immatérielle du réel à
laquelle on associe des propriétés et des actions.
Par exemple : une voiture, une personne, un animal, ou bien un compte bancaire peuvent
être vus comme des objets.
==> Attributs
Les « attributs » (aussi appelés « données membres ») sont les caractéristiques
==> Méthodes
Les «méthodes» sont les actions applicables à un objet.
Un objet personne, par exemple, dispose des actions suivantes : manger, dormir, boire,
marcher, courir ....

Exemple :

Qu'est-ce-qu' une instance ?


Une instance est une représentation particulière d'une classe.
Lorsque l'on crée un objet, on réalise ce que l'on appelle une « instance de la classe ». C'est
à dire que du moule, on en extrait un nouvel objet qui dispose de ses attributs et de
ses méthodes. L'objet ainsi créé aura pour type le nom de la classe.

Exemple :
Notre première classe
Dans le premier cours sur la programmation en Java, nous avons déjà travaillé avec
quelque classe (comme String, Scanner).
Lorsque vous faisiez ceci : String chaine = new String ("Bonjour") ;

Ici chaine est un objet String. Vous avez utilisé un objet de la classe String : on dit que
vous avez créé une instance de la classe String.
Le moment est venu pour vous de créer vos propres classes
!!! Attention Si
👉 👈
vous avez bien suivi la première partie de ce cours,
( Voir la première partie ) nous avons déjà une classe mère s’appelle PremierClass
contenant la méthode main. Maintenant nous allons créer une nouvelle classe s’appelle
ClasseMain. Suiviez les étapes suivantes :


Pour l’instant tous est bien. nous allons créer une seconde classe s’appelle Personne


!!! Le nom de votre classe « Personne » (avec un « P» majuscule, convention de
nommage oblige). Cette fois, vous ne devez pas y créer la méthode main. 

Ici, notre classe Personne précédée par un mot clé public. Vous devez savoir que lors
que nous créons une classe comme ceci, Eclipse nous facilite la tâche en
ajoutant automatiquement ce mot clé, qui correspond à la portée de la classe.
Alors ces deux syntaxes public class Personne { } et class Personne { } sont
presque équivalents !

En programmation, la portée détermine qui peut faire appel à une classe, une méthode
ou une variable. Vous avez déjà rencontré la portée public : cela signifie que tout le
monde peut faire appel à l'élément. Ici dans le cas qui nous intéresse il s'agit d'une
méthode. Une méthode marquée comme public peut donc être appelée depuis
n'importe quel endroit du programme.

Nous allons ici utiliser une autre portée : private. Elle signifie que notre méthode ne
pourra être appelée que depuis l'intérieur de la classe dans laquelle elle se trouve ! Les
méthodes déclarées private correspondent souvent à des mécanismes internes à une
classe que les développeurs souhaitent « cacher » ou simplement ne pas rendre
accessibles de l'extérieur de la classe…

2) Les constructeurs
L’objectif de ce chapitre est de construire un objet Personne, il va falloir définir les
données qu’on va lui attribuer.
Alors un objet Personne est possède :
* un nom de type String
* un prénom de type String
* un CNI de type int

maintenant, on a une nouvelle variable ( Classe ) (comme int, float, String …)


s’appelle Personne, et on peut déclarer une variable ( objet ) de type Personne comme
ceci :

P : est un objet d’une classe Personne


Personne : est une variable spéciale s’appelle classe

Pour initialiser l’objet P nous allons devoir utiliser ce qu'on appelle des constructeurs
Un constructeur est une méthode d'instance qui va se charger de créer un objet.
Il existe deux types des constructeurs (constructeur par défaut et Constructeur
avec paramètres).

==> constructeur par défaut


un constructeur par défaut, c’est une méthode qui ne prendra aucun paramètre
mais permettra tout de même d'instancier un objet, c’est-à-dire initialiser les
variables d'instance. Voici votre premier constructeur:
Remarque:
* le constructeur est une méthode qui n'a aucun type de retour
* le (les) constructeur(s) d'une classe doit (doivent) porter le même nom que la
classe !

Exemple :

==> constructeur par paramètres


un constructeur par paramètres, c’est une méthode a des paramètres pour initialiser les
variables d'instance.

Exemple :


Remarque :
* Pour accéder aux variables d'instance (les données membres) en utilisant le « . »
Nom_objet.variable ; ou Nom_objet.méthode () ;
* il vous faudra respecter l'ordre des paramètres passés lors de l'initialisation de
votre objet : si non, votre programme ne compilera pas !

Exemple :
On affiche les données de chacune personne P1 et P2

Apres l’exécution de ce programme ci-dessus on obtient le résultat suivant :

Vous constatez que nous pouvons accéder, modifier les variables d’instance
directement à travers le nom d’objet suivi par le nom de variable tout simplement. mais
C'est très risqué tant que les variables d’instance déclarées public. (en cas d’absence la
portée signifie que la variable est déclaré public)

Exemple :
!!! pour résoudre ce problème, où les variables d’un objet seront visibles que dans la
classe qui le définit, on ajoute le mot clé private avant chaque variable

Exemple :

Mais dans ce cas-là on ne peut pas faire les instructions suivantes !!!
Remarques
* La différence entre public et private c'est quand tu as d'autres classes. Un attribut
public sera visible dans n'importe quelle classe, alors qu'un attribut private ne se sera
visible que dans la classe qui le définit.
* En pratique, il vaut mieux mettre private tout le temps, parce que sinon, n'importe
qui pourrait faire n'importe quoi avec tes données, ce qui peut entraîner pas mal d'erreurs
* si tu veux vraiment donner la visibilité public à un attribut, alors il faut lui rajouter le mot
clé final (constante), comme ça tu es sûr qu'il ne changera jamais de valeur. Mais tout privé
c'est quand même le mieux.
* mais la question qui se pose, comment accéder aux ces variables en cas de mode
private, oui bravooo , c’est une bonne question.
* On utilise les méthodes get et set pour accéder aux valeurs des attributs.

3) Accesseurs et mutateurs

Un accesseur est une méthode qui va nous permettre d'accéder aux variables de nos
objets en lecture, et un mutateur nous permettra d'en faire de même en écriture ! Grâce
aux accesseurs, vous pourrez afficher les variables de vos objets, et grâce aux
mutateurs , vous pourrez les modifier.

Exemple :

Problème 1 !!!
Imaginez que le nom d’une variable passée comme un paramètre dans la méthode
setNom() est semblable avec le nom d’une variable d’objet. Prenons cet exemple:
Le problème c’est que, le programme considère le mot nom comme la variable
d’objet courant et n’est pas une variable locale passée par paramètre, et par conséquence
la variable nom ne changera pas (reste elle-même).

Pour résoudre ce problème on utilise le mot clé this qui fait référence à l'objet courant
! Bien que la traduction anglaise exacte soit « ceci », il faut comprendre « moi ». À
l'intérieur d'un objet, ce mot clé permet de désigner une de ses variables ou une de ses
méthodes.
Exemple :
Maintenant on répète le même exemple précédant en ajoutant seulement le mot clé this.
Problème 2 !!!
On va prendre une autre classe qui s’appelle Ville.
Alors un objet Ville est possède :
* un nom de type String
* un nbreHabitants de type int
* un categorie de type char

chaque ville a une catégorie par rapport à son nombre d'habitants.


si : nbreHabitants <= 10000 c’est-à-dire catégorie A
si : 10000 < nbreHabitants <= 100000 c’est-à-dire catégorie B
si : nbreHabitants > 100000 c’est-à-dire catégorie C

Nous voulons que la classe Ville gère la façon de déterminer la catégorie elle-même, et
non que cette action puisse être opérée de l'extérieur. La méthode qui fera ceci sera donc
déclarée private.


Exercice d’application
Ajouter dans la classe Ville une méthode pour comparer deux objets par rapport à
leur nombre d'habitants.


4) Les variables de classe
il y a trois grands types de variables dans une classe :
1. Les variables d'instance : ce sont elles qui définiront les caractéristiques de notre
objet.
2. Les variables de classe : celles-ci sont communes à toutes les instances de votre
classe.
3. Les variables locales : ce sont des variables que nous utiliserons pour travailler
dans notre objet.

Exemple :
nous allons compter le nombre d'instances de notre classe Ville, Il s'agira d'une variable
de type int que nous appellerons nbreInstance, Afin qu'une variable soit une variable de
classe, elle doit être précédée du mot clé static.


Remarque :
Remarquer que l'accesseur de notre variable de classe déclarée privée est aussi déclaré
static:
ceci est une règle « Toutes les méthodes de classe n'utilisant que des variables de
classe doivent être déclarées static. On les appelle des méthodes de classe»

5) Le principe d’encapsulation

L'encapsulation est un mécanisme consistant à protéger les données et les méthodes


d'un objet à l'extérieur, c'est-à-dire en empêchant l'accès aux données par un autre moyen
que via les accesseurs et mutateurs que nous avons défini. C'est le principe
d'encapsulation !

L'encapsulation permet de définir des niveaux de visibilité des éléments de la classe.
Ces niveaux de visibilité définissent les droits d'accès aux données selon que l'on y accède
par une méthode de la classe elle-même, d'une classe héritière, ou bien d'une classe
quelconque. Il existe trois niveaux de visibilité:

publique: les fonctions de toutes les classes peuvent accéder aux données ou aux
méthodes d'une classe définie avec le niveau de visibilité public. Il s'agit du plus bas
niveau de protection des données
protégée: l'accès aux données est réservé aux fonctions des classes héritières, c'est-à-dire
par les fonctions membres de la classe ainsi que des classes dérivées (classes fils).
privée: l'accès aux données est limité aux méthodes de la classe elle-même. Il s'agit du
niveau de protection des données le plus élevé.

6) L’héritage
L’héritage est la définition d’une classe par extension des caractéristiques d’une autre
classe.
L'héritage, est l'un des mécanismes les plus puissants de la programmation orientée
objet, permet de reprendre des membres d'une classe (appelée superclasse ou classe
mère) dans une autre classe (appelée sous-classe, classe fille ou encore classe dérivée),
qui en hérite.
Syntaxe :
Reprenons l'exemple de la classe Ville. Nous allons créer une nouvelle classe,
nommée Capitale, héritée de Ville. C’est à dire les objets Capitale auront tous les
attributs et toutes les méthodes associés aux objets Ville !

! ! ! Problème :

!!! Pourquoi ce problème ?????


==> Le problème c’est que les attributs de la classe mère (Ville) sont déclarés privates,
alors ne se seront visibles que dans la classe Ville. Et pour résoudre ce problème, il faut
Remplacer le mot private par le mot protected dans la déclaration de variables ou de
méthodes de la
classe Ville. Donc, une fois les variables et méthodes privées de la classe mère
déclarées en protected, notre objet Capitale aura accès à celles-ci !.
Remarque :
Notons un point important avant de continuer. Contrairement au C++, Java ne gère pas
les héritages multiples : une classe dérivée (aussi appelée classe fille) ne peut hériter que
d'une seule classe mère ! Vous n'aurez donc jamais ce genre de classe :

À présent, continuons la construction de notre objet hérité Capitale qui a tous les
attributs et toutes les méthodes associés aux objets Ville !, ce qui différenciera nos
objets Capitale de nos objets Ville sera la présence d'un nouveau champ : le nom d'un
monument . Cela
implique que nous devons créer un constructeur par défaut et un constructeur
d'initialisation pour notre objet Capitale.

Remarque !!!! :
Pour éviter d’écrire les mêmes instructions deux fois (la redondance), on peut faire appel
aux variables de la classe mère dans nos constructeurs grâce au mot clé super. Cela
aura pour effet de récupérer les éléments de l'objet de base, et de les envoyer à notre
objet hérité.
==> On ajoute une nouvelle méthode dans la classe Ville s’appelle decrisToi() qui permet
décrire la ville, afin d’utiliser le mot clé super.

Alors maintenant dans la classe Capitale, on peut récupérer la description de la ville via le
mot clé super(), ce qui nous donne une méthode decrisToi() un peu différente, car nous
allons lui ajouter le champ monument pour notre description:


7) Le polymorphisme

Je suis en train d'écrire la suite !!!

Tags Abstraction concept de POO encapsulation JAVA les classes et les objets les instances
polymorphisme POO en Java programmation orienté objet

 Facebook  Twitter    

CES POSTS POURRAIENT VOUS INTÉRESSER

ABSTRACTION

programmation orientée objet en


JAVA
May 26, 2021

ENREGISTRER UN COMMENTAIRE

9 Commentaires
Tatou
26 septembre 2021 à 14:35

C'est intéressant.vraiment merci a vous 🙏


Répondre Supprimer


Tatou
26 septembre 2021 à 14:36

Wouah intéressant ces cours.vraiment merci pour vos différents efforts 🙏


Répondre Supprimer


Unknown
19 octobre 2021 à 01:13

Bonjour ce cours est intéressant .J'ai hâte de voir la suite

Répondre Supprimer


Jacques MUDUMBI
24 octobre 2021 à 02:09

Merveilleux ce cours... Plein d'inspiration...très bonne saisie.

Répondre Supprimer


Unknown
21 décembre 2021 à 07:49

Vous êtes génial. Courage à vous

Répondre Supprimer


Prof
7 avril 2022 à 09:48

Merci bcp pour vos efforts

Répondre Supprimer


Dines bj
9 avril 2022 à 13:50

Très intéressant.

Répondre Supprimer


Cédric Mboutou
19 juillet 2023 à 11:11

Ce commentaire a été supprimé par l'auteur.



Répondre Supprimer


Cédric Mboutou
21 juillet 2023 à 09:45

Cours très explicatif,et bien élaboré ,je dirais bien que grâce à ce cours j'ai vraiment bien compris ce que c'est la
programmation orientée objet

Répondre Supprimer

Pour laisser un commentaire, cliquez sur le bouton ci-dessous afin de vous connecter avec Google.

SE CONNECTER AVEC GOOGLE

Copyright © 2023 Coode Maroc Home Privacy Policy Contact Us

Vous aimerez peut-être aussi