Objet, classe, et encapsulation...

Sommaire du document

Les objets

Beaucoup de mystères sont faits autours de la programmation orientée objet, mais en réalité la notion d'objet est une notion naturelle que nous utilisons quotidiennement sans même le savoir. Il s'agit de modéliser en entités informatique des éléments du monde réel. Ces éléments sont appelés des objets.

Nous pouvons observer 3 caractéristiques des objets :

  • L'état de l'objet : quels sont les attributs qui qualifient notre objet ?
  • Le comportement de l'objet : que pouvons nous faire avec cet objet, quelles méthodes pouvons nous lui appliquer ? Les méthodes sont les actions que l'objet est capable de réaliser, et sont liées aux attributs car elles permettent par exemple d'interagir avec ces derniers. L'objet peut réagir aux stimuli extérieurs gràce aux méthodes.
  • L'identité de l'objet : comment pouvons-nous le différencier des autres objets qui ont le même comportement et le même état ? Nous devrons donc utiliser un identifiant pour désigner l'objet.

Un logiciel orienté objet peut donc se comprendre comme une collection d'objets distincts, qui comportent chacun des structures de données (attributs) et une série de comportements (méthodes) dans une entité (encapsulation).

Comme dans la vie réelle, chaque objet possède sa propre identité : deux livres parfaitement identiques sont deux objets distincts. Ils possèdent la même couverture, les mêmes pages, les mêmes phrases, mais je peux exercer une action sur un des deux, par exemple en donner un des deux et garder l'autre.

Comme ils appartiennent tous deux au même groupe, nous préfèrerons en orienté objet le terme classe d'objets  au terme groupe.

De même, nous parlerons d'instance pour désigner un objet en particulier.

 

Les classes

Considérons l'exemple des voitures...

Une voiture possède une série d'attributs (elle possède généralement 4 roues et une roue de secours, un volant, un moteur, etc.) et une série de méthodes (démarrer, rouler, freiner, etc.).

Nous pouvons créer une multitude d'instances de l'objet voiture, mais il serait peu rentable de redéfinir par exemple la méthodes démarrer, vu que la manière de démarrer est identique.

Nous pouvons donc déclarer une seule fois les attributs et les méthodes pour toutes les voitures au sein d'une classe Voiture.

Nous pouvons rapprocher la relation qui existe entre la classe et les objets avec celle qui existe entre un type de données et des variables de ce type. Nous pouvons dire que l'objet est une instance (variable) de sa classe (type).

Nous pouvons aussi considérer la classe comme un moule qui sert à fabriquer des objets (un moule à gaufres par exemple), et les instances comme étant les objets créés (chaque gaufre).

Comme notre classe sert à définir des objets, elle sera composée d'attributs et de méthodes.

 

L'encapsulation

Si nous décidons d'implémenter des objets "Voiture" avec certaines méthodes comme freiner ou accélérer, celui qui utilisera la voiture devra seulement savoir que freiner entraîne une diminution de sa vitesse. Peu lui importe de savoir par quels mécanismes la voiture freine, ce qui lui importe c'est le résultat : la diminution de la vitesse.

Le fait de ne pas lui montrer quels procédés la voiture utilise pour freiner nous permet de modifier en toute liberté le mécanisme de freinage, par exemple pour l'optimiser, du moment que le résultat final soit identique.

Nous allons donc rassembler les attributs et les méthodes d'une classe en une structure qui nous permet de garder un contrôle sur la visibilité des différentes parties de la classe. C'est le principe d'encapsulation.

L'encapsulation permet donc de protéger l'objet de toute malveillance externe. Nous prendrons alors la bonne habitude d'interdire l'accès direct aux attributs, pour privilégier l'accès par les méthodes qui modifient indirectement les attributs.
Par exemple : si nous souhaitons modifier l'attribut couleur d'une voiture, nous devrons passer par tout un processus (décaper, poncer, passer plusieurs couches, etc...), et dans ce cas de figure l'attribut couleur ne doit pas être accessible directement, mais bien au travers de méthodes appropriées.

A chaque fois que nous définirons un membre d'une classe (attribut ou méthode), nous devrons indiquer les droits d'accès pour l'utilisation de ce membre.

 

Restreindre l'accès

Java propose quatre niveaux de protection : public , private , protected et package.

Les trois premiers correspondent à des mots clés utilisés au début de la déclaration d'un attribut ou d'une méthode.
Le niveau de protection package est associé à un attribut ou une méthode quand aucun des trois mots clés (public, private ou protected) n'a été indiqué.

public

Tous les membres (attributs ou méthodes) d'une classe définis avec le mot clé public sont utilisables par tous les objets. Ce type de protection est employé pour indiquer que nous pouvons utiliser sans contrainte les attributs et méthodes d'une classe. Il s'agit du niveau de protection le plus bas.
Nous éviterons de déclarer les donnée publiques : nous utiliserons des méthodes pour y accéder en lecture ou en modification.

package

Les packages (ou paquets) permettent de regrouper des classes Java. Cela signifie dans ce cas que tous les membres d'une classe définis avec ce niveau de protection peuvent être utilisés par les autres classes du même package.
Lorsque nous ne spécifions pas d'accès particulier, c'est ce type de niveau d'accès qui sera utilisé par défaut. Nous retrouvons parfois la notion de "package" sous le nom friendly.

protected

Tous les membres d'une classe définis avec le mot clé protected sont utilisables uniquement par les méthodes de la classe, par les méthodes des classes dérivées et par les méthodes des classes appartenant au même package. Cette technique de protection est fortement associée à la notion d'héritage.
On ne peut pas qualifier une classe avec le mot clé protected.

private

Niveau de protection le plus élevé. La visibilité ne porte qu'à l'intérieur de la classe. Tous les membres d'une classe définis avec le mot clé private sont utilisables uniquement par les méthodes de la classe. C'est pour cette raison que nous utiliserons des méthodes définies dans la classe pour contrôler l'accès à ces données.
Les variables appartenant à une classe sont généralement déclarées comme privées.

 

Réseaux sociaux

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher les interactions avec les réseaux sociaux sur ces pages.

 

Nuage de mots clés

18 mots clés dont 0 définis manuellement (plus d'information...).

Avertissement

Cette page ne possède pas encore de mots clés manuels, ceci est donc un exemple automatique (les niveaux de pertinence sont fictifs, mais les liens sont valables). Pour tester le nuage avec une page qui contient des mots définis manuellement, vous pouvez cliquer ici.

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher le nuage de mots clés.

 

Astuce pour imprimer les couleurs des cellules de tableaux : http://www.gaudry.be/ast-rf-450.html
Aucun commentaire pour cette page

© Ce document issu de l′infobrol est enregistré sous le certificat Cyber PrInterDeposit Digital Numbertection. Enregistrement IDDN n° 5329-199
Document créé le 13/04/05 01:04, dernière modification le Mercredi 28 Juin 2017, 15:26
Source du document imprimé : http:///www.gaudry.be/oriente-objet.html
St.Gaudry©07.01.02
Outils (masquer)
||
Recherche (afficher)
Recherche :

Utilisateur (masquer)
Apparence (afficher)
Stats (afficher)
15838 documents
455 astuces.
550 niouzes.
3107 definitions.
447 membres.
8121 messages.

Document genere en :
0,08 seconde

Mises à jour :
Mises à jour du site
Citation (masquer)
Une partie de l'art de vivre dépend de notre capacité à combattre notre impuissance [face à nos désirs, à nos envies ou à nos impulsions]. C'est difficile, parce que l'impuissance engendre souvent la peur.

Marc Levy [Extrait de Et si c'était vrai...]
 
l'infobrol
Nous sommes le Dimanche 20 Août 2017, 17:20, toutes les heures sont au format GMT+1.00 Heure, heure d'été (+1)