Vous êtes sur la page 1sur 19

 TICKER ALGORITHME POO en Python ALGORITHME POO en JAVA Programmation  

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 SOCIAL PLUGIN

by Le chemin vers la programmation - mai 26, 2021


   

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

Saisir un commentaire

Copyright © 2023 Coode Maroc Home Privacy Policy Contact Us

Vous aimerez peut-être aussi