Malgré le fait que par exemple l'implémentation de la structure "FILE" ne soit pas connue de l'utilisateur sans lire le code de la libc, ce qui impose d'utiliser les fonctions standards pour la manipuler ce qui est donc une encapsulation, tu peux contourner ce problème si tu as réellement envie en tapant directement dedans pour peu que tu saches comment c'est implémentée. Mais pour moi faire ça c'est un cas pathologique, tu peux le faire (mais pareil en C++ et probablement d'autres langages hein) mais ce n'est pas très intéressant de s'en soucier spécialement car personne ne fera ça réellement.
Là tu me parles de jardiner dans la mémoire pour exploiter des failles de sécurité ou pour contourner le programme. Cela n'a pas grand chose à voir selon moi. Par exemple le C++ qui implémente tout ce qu'il faut pour la POO et dont le fait de rendre des attributs internes non accessibles de l'extérieur souffre du même problème. Mais surtout ce n'est pas lié à une encapsulation forte ou pas. L'encapsulation c'est de ne pas exposer à un code appelant ses détails internes pour éviter un couplage fort dans le code, pas empêcher aux attaquants malveillant d'y accéder quand même avec tous les outils qu'ils ont à disposition.
[^] # Re: Oh vous savez, moi, l'objet...
Posté par Renault (site web personnel) . En réponse au lien Un point sur la programmation objet (POO) – La POO, ses problèmes, et qu’en faire . Évalué à 4.
Tu n'as pas compris mon propos.
Malgré le fait que par exemple l'implémentation de la structure "FILE" ne soit pas connue de l'utilisateur sans lire le code de la libc, ce qui impose d'utiliser les fonctions standards pour la manipuler ce qui est donc une encapsulation, tu peux contourner ce problème si tu as réellement envie en tapant directement dedans pour peu que tu saches comment c'est implémentée. Mais pour moi faire ça c'est un cas pathologique, tu peux le faire (mais pareil en C++ et probablement d'autres langages hein) mais ce n'est pas très intéressant de s'en soucier spécialement car personne ne fera ça réellement.
Là tu me parles de jardiner dans la mémoire pour exploiter des failles de sécurité ou pour contourner le programme. Cela n'a pas grand chose à voir selon moi. Par exemple le C++ qui implémente tout ce qu'il faut pour la POO et dont le fait de rendre des attributs internes non accessibles de l'extérieur souffre du même problème. Mais surtout ce n'est pas lié à une encapsulation forte ou pas. L'encapsulation c'est de ne pas exposer à un code appelant ses détails internes pour éviter un couplage fort dans le code, pas empêcher aux attaquants malveillant d'y accéder quand même avec tous les outils qu'ils ont à disposition.