Python 3
Machine Learning

PENTRU ELEVII DE LICEU

LECȚIA 17
PAG. 2 / 4
OOP - Încapsularea
Acasă >>> Lecții online

Exemplu de încapsulare

Ca să înțelegi mai bine încapsularea în acțiune, hai să construim împreună un exemplu concret, cât se poate de apropiat de viața reală: un cont bancar. În mod evident, acesta are un titular și un sold. Dar acel sold nu trebuie să fie accesibil oricui, oricând. Niciun client nu ar trebui să poată modifica direct suma de bani din contul său, fără niciun control. În viața reală, interacționezi cu banca printr-o interfață: depui bani, retragi, verifici soldul – dar nu umbli tu manual în baza de date.

Exact acest comportament vrem să-l modelăm în cod (vezi programul de mai jos):

  • titular este un atribut public – poate fi accesat și modificat direct.
  • __sold este un atribut privat – nu poate fi accesat direct din exterior (spre exemplu, cont.__sold va genera eroare).
  • Operațiile asupra soldului se fac doar prin metodele depune, retrage și afiseaza_sold.
Folosirea prefixului __ la __sold nu face atributul complet inaccesibil, dar îl „ascunde” într-un mod elegant, prin tehnica name mangling. Asta înseamnă că Python îl redenumește automat intern (de exemplu, _ContBancar__sold), descurajând astfel accesul accidental sau intenționat din exterior.
Editor - exemplu_oop.py
       
Rezultatul în consolă done
După ce am scris codul pentru clasă, avem o secvență de comenzi Python care creează un obiect numit cont pentru un cont bancar pe numele "Ion Popescu" cu un sold inițial de 1000, adaugă 500 la sold, retrage 200, și apoi afișează soldul final rămas.

Dacă cineva ar încerca să modifice soldul astfel:

cont.__sold = 999999

...nu va modifica de fapt soldul real, ci va crea un atribut nou, complet separat, care nu are legătură cu logica internă a clasei:
Acesta este un exemplu clar despre de ce e important să nu „ocolim” încapsularea. Cu această abordare, putem garanta că obiectul nostru nu ajunge într-o stare invalidă (de exemplu, cu sold negativ), pentru că toată logica este encapsulată și verificată într-un singur loc, clar definit.

Încapsularea este mai mult decât un moft de sintaxă – este un mecanism care îți oferă siguranță, control și o interfață curată pentru fiecare clasă pe care o creezi. În lumea reală, un cod scris fără încapsulare e ca o casă fără uși – oricine intră, face modificări, și lasă haos în urmă.
Avansează la pagina următoare.
 home   list  LECȚII   perm_identity   arrow_upward