Académique Documents
Professionnel Documents
Culture Documents
BASE DE DONNÉES PYTHON ALGORITHME (COURS) ALGORITHME (EXERCICES) LES FONCTIONS EN ALGORITHME C (EXERCICES) C (COURS) JAVA
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.
Exemple :
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
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).
Exemple :
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
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
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
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 :
À 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
Tags Abstraction concept de POO encapsulation JAVA les classes et les objets les instances
polymorphisme POO en Java programmation orienté objet
Facebook Twitter
ABSTRACTION
ENREGISTRER UN COMMENTAIRE
9 Commentaires
Tatou
26 septembre 2021 à 14:35
Tatou
26 septembre 2021 à 14:36
Unknown
19 octobre 2021 à 01:13
Répondre Supprimer
Jacques MUDUMBI
24 octobre 2021 à 02:09
Répondre Supprimer
Unknown
21 décembre 2021 à 07:49
Répondre Supprimer
Prof
7 avril 2022 à 09:48
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
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.