L'encapsulation est l'un des trois principauxcaractéristiques de la programmation orientée objet (POO). Les deux autres sont le polymorphisme et l'héritage. Ensemble, ils constituent un cadre de POO qui définit une gamme de possibilités pour écrire des programmes dans différents langages en utilisant ces trois principes. Les langages orientés objet, quant à eux, sont tenus de les suivre clairement.
Principes de base de la POO
La programmation orientée objet repose sur trois piliers de son univers:
- Polymorphisme, qui répond à la question de savoir comment un certain langage de programmation traite les objets qui sont liés les uns aux autres de manière similaire.
- L'héritage, qui fournit une réponse à la façon dont la réutilisation du code est stimulée.
- L'encapsulation, qui est la réponse à la question de savoir comment l'implémentation est cachée, et donc l'intégrité des données est préservée.
Terminologie
L'encapsulation (programmation) estl'utilisation de modificateurs d'accès afin de cacher des parties du code du programme à l'utilisateur final. Cela signifie à son tour le développeur ou l'objet héritant.
L'essence du concept d '«encapsulation»
La définition définit ce qui est sous encapsulationmasquer tout ou partie du code du programme est implicite. L'essence du concept d '«encapsulation» est la manipulation des modificateurs d'accès. Cela signifie que le développeur décide lui-même quelles propriétés, méthodes et classes seront exposées à la classe client et lesquelles seront masquées.
Modificateurs d'accès
- public ("public" - public, open, access) - accès public à la fois pour les objets et classes actuels, et pour le monde extérieur;
- privé ("privé" - accès privé, privé, caché) - accès fermé, dont l'essence est complètement opposée à la précédente. Fournit un accès uniquement à partir de la classe actuelle;
- protégé ("protégé" - protégé, semi-caché, accès) - accès pour la classe actuelle et ses dérivés;
- default - un modificateur d'accès non spécifié implique que le champ / la méthode est visible par l'ensemble du package de classe actuel.
Dans le langage C # ("C Sharp"), en plus de ce qui précède (à l'exclusion du dernier), il existe également de tels modificateurs:
- interne («interne» - accès interne) - disponibilité générale dans la collection actuelle, accès fermé dans tous les autres cas;
- internal protected ("internal protected" - accès protégé interne) - la combinaison de deux modificateurs en un seul, dans laquelle les propriétés des deux se manifestent.
Le rôle de l'encapsulation
Le mécanisme d'encapsulation vous permet d'exclure toute influence externe sur le code du programme et l'utilisation incorrecte des données qu'il contient. Il le fait en combinant le code et les données en un seul tout.
Objet et encapsulation
Combinant l'implémentation du module logiciel etles données intégrées dans le code sont appelées un objet en programmation. L'essence de son lien avec l'encapsulation réside dans le fait que c'est cette technique qui permet de maintenir et d'assurer le fonctionnement intégral du mécanisme considéré.
L'avantage de l'encapsulation
L'encapsulation est un moyen de simplifier le processus de codage. De nombreuses lignes de code restent «dans les coulisses», et dans la classe principale, le travail est effectué avec des instances d'objet.
L'idée de la protection des données
L'encapsulation est également un mécanisme quimet en œuvre l'idée de protection des données. La logique de programmation de la programmation orientée objet est basée sur le fait que la plupart des données seront masquées par le modificateur d'accès private (private) ou protected (protected). Le monde extérieur, le client, accidentellement ou intentionnellement, ne peut pas endommager la mise en œuvre du module logiciel. Comme il est en fait très facile de le faire, même si ce n'est pas exprès, l'encapsulation est un très bon principe.
Unités d'encapsulation
Classe, comme unité principale d'encapsulation,décrit les données et contient un code qui peut fonctionner avec ces données. C'est aussi la base pour la construction de l'objet. Ce dernier, à son tour, est représenté comme une instance de la classe.
- les membres sont le code et les données qui entrent dans la classe;
- champs, ou variables d'instance - c'est le nom des données que la classe définit;
- fonctions membres - elles contiennent le code lui-même. Les fonctions membres sont un nom courant. Les méthodes sont un cas particulier.
Encapsulation avec un exemple spécifique
Exemple d'encapsulation (programmation):
* Noter:
description est une description d'une méthode / propriété / variable, c'est-à-dire commenter ce qui se passe réellement dans le programme. Démontré avec des balises ouvertes / fermées
en utilisant le système;
espace de noms OOPLibrary.Auto
{
///
/// Cette classe est destinée à décrire les propriétés et les actions de la voiture
///
classe publique Auto
{
///
/// Une variable créée pour y enregistrer l'âge de la voiture, car le développeur considère que les interférences externes dans cette propriété sont superflues
/// il est marqué avec le modificateur privé, c'est-à-dire fermé, accès privé (voir la description ci-dessus).
///
int _age privé;
///
/// Variable booléenne (seulement deux valeurs possibles - oui ou non) qui décrit si la voiture se déplace actuellement
/// Il ne devrait pas non plus être ouvert à l'utilisateur final, quel qu'il soit. C'est pourquoi le modificateur d'accès privé "private" est affecté à cette variable.
///
private bool _isMoving;
///
/// Cette variable de chaîne doit contenir des informations sur la couleur de la voiture. Il peut être soumis à des changements dus à des influences externes
/// donc le modificateur d'accès ouvert "public" est sélectionné pour la Couleur.
///
public string Couleur;
///
/// Dans ce cas particulier, nous supposons que le nom de la voiture peut également être changé
/// le modificateur public est attribué (accès ouvert à tout le monde, quelle que soit la classe ou l'assembly).
///
public string Name;
///
/// Le constructeur de la classe est ouvert et toutes les propriétés exprimées par des variables et définies un peu plus tôt récupèrent leurs valeurs
///
public Auto ()
{
_age = 5;
_isMoving = false;
Couleur = "Violet";
Nom = "Skoda Octavia";
}
///
/// La méthode implémente le retour de la valeur d'âge de la voiture. Pourquoi est-ce nécessaire?
/// un modificateur d'accès privé l'empêche d'être modifié par le client.
///
/// Renvoie l'âge de la voiture.
chaîne publique GetAge ()
{
return "La machine actuellement sélectionnée" + _age + "a des années.";
}
///
/// Si la voiture ne bouge pas, cette méthodemet en œuvre le début du mouvement. Un contrôle est effectué sur une variable qui indique l'état de la voiture (qu'elle soit au volant ou non), et, en fonction des résultats, une action appropriée est effectuée / un message correspondant est affiché.
///
public void Start ()
{
if (_isMoving)
{
Console.WriteLine ("Le mouvement a déjà commencé");
}
autre
{
_isMoving = true;
Console.WriteLine ("Prêt, attention .. Allons-y! Allons-y!");
}
}
///
/// Si le mouvement a été lancé, cette méthode l'arrête. La même logique de programme que dans le cas précédent considéré.
///
public void Stop ()
{
if (_isMoving)
{
_isMoving = false;
Console.WriteLine ("Arrêt, voiture");
}
autre
{
Console.WriteLine ("Erreur. La voiture est déjà immobile, ne bouge pas");
}
}
///
/// Tourne à gauche si le véhicule est en mouvement
///
public void MoveLeft ()
{
if (_isMoving)
{
Console.WriteLine ("A fait un virage à gauche");
}
autre
{
Console.WriteLine ("Erreur. La voiture est à l'arrêt. La fonction de rotation est actuellement indisponible");
}
}
///
/// Une méthode similaire en tournant vers la droite
///
public void MoveRight ()
{
if (_isMoving)
{
Console.WriteLine ("Le virage à droite a été effectué avec succès");
}
autre
{
Console.WriteLine ("Erreur. La voiture n'a pas encore bougé. Tourner vers la droite est actuellement une action qui ne peut pas être effectuée.");
}
}
}
}