IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages de programmation Discussion :

L'encapsulation en poo


Sujet :

Langages de programmation

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2018
    Messages : 28
    Points : 25
    Points
    25
    Par défaut L'encapsulation en poo
    Bonjour,

    Je comprends le principe de l'encapsulation, nous protégeons nos données en les mettant en privée. Puis par la suite, nous choisissons de donner accès ou non, via les getters et les setters.

    Mais ma question est la suivante :

    Comment l'utilisateur aurait pu avoir accès à mes propriétés de classes, sachant qu'elles se trouvent dans mon code source ?

    S'agit-il plutôt de se protéger des hackers qui arriveront à accéder au code source ?

    Voilà, une question qui me semble intéressante car j'ai l'impression que beaucoup de développeurs utilisent des concepts comme l'encapsulation, mais ne comprennent pas bien pourquoi.

    Alors, quel est selon vous l'avantage d'encapsuler ses propriétés ?

    Merci pour vos réponses

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 243
    Points : 12 874
    Points
    12 874
    Par défaut
    Bonjour,
    A mon sens l'encapsulation n'a rien à voir avec de quelconques "hacker", mais participe à qualité du code et sa réutilisabilité.

    Pour moi une classe ne connait de "l'extérieure" que ce qui passe par les propriétés (getter/setter), et le code "extérieur" ne connais que les propriétés.
    Ainsi ma classe est réutilisable, un changement à l'intérieur ne doit pas d'incidence sur son utilisation, et un changement dans le code extérieur n'a aucune incidence sur le fonctionnement de la classe.

    Et passer par des getters/setters permet à la classe d'une part de contrôler ses interactions avec le reste du code, mais aussi d'appliquer des actions "en interne".
    Par exemple en cas d'affectation d'une valeur via un setter, on peut ajouter une comparaison ancienne valeur/nouvelle valeur, et affecter un booléen de suivit de modification, booléen interne à la classe (privé).
    Ce traçage n'est pas du ressort du code utilisateur, et quelque soit la façon dont la classe est utilisée on est sûr qu'il sera exécuté.
    Autre exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    public class Contact
    {
    	public int ContactID { get; set; }
    
    	[Required]
    	[Display(Name ="Last Name")]
    	public string LastName { get; set; }
    	
    	[Display(Name ="Mid Name")]
    	public string MidName { get; set; }
    	
    	[Display(Name ="First Name")]
    	public string FirstName { get; set; }
    	
    	[Display(Name = "Full Name")]
    	public string FullName
    	{
    		get
    		{
    			return string.Format("{0}{1} {2}", LastName, string.IsNullOrWhiteSpace(MidName) ? "" : $" {MidName}", FirstName);
    		}
    	}
    }
    Je donne accès à une valeur calculée. Je l'utilise partout où j'ai besoin d'afficher le nom complet, et si je veux modifier sa construction je n'ai qu'à modifier cette propriété.

    Tatayo.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2018
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    D'accord, donc il faut plutôt penser à la maîtrise de son code, sa maintenabilité, sa portée que penser sécurité.

Discussions similaires

  1. [POO] Conseil encapsulation : A.B.C.D.E.F.para1, c'est pas trop moche ?
    Par Djobird dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 03/04/2007, 11h27
  2. Réponses: 31
    Dernier message: 30/03/2006, 16h57
  3. [POO] Encapsulation de $_GET & cie
    Par Mr N. dans le forum Langage
    Réponses: 15
    Dernier message: 29/10/2005, 10h28
  4. lier un cube à un objet (POO)
    Par Hypnos dans le forum OpenGL
    Réponses: 12
    Dernier message: 26/08/2003, 21h46
  5. [MFC](encapsulation ADO) ou placer le code
    Par philippe V dans le forum MFC
    Réponses: 2
    Dernier message: 13/06/2002, 14h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo