/ / Incapsulare - ce este? Incapsularea în programare

Ce este încapsularea? Încapsulare în programare

Incapsularea este una dintre cele trei principalecaracteristici ale programării orientate pe obiecte (OOP). Celelalte două sunt polimorfism și moștenire. Împreună, acestea constituie un cadru OOP care definește o serie de posibilități pentru scrierea de programe în diferite limbi folosind aceste trei principii. Limbile orientate obiect, la rândul lor, sunt obligate să le urmeze în mod clar.

încapsularea este

OOP de bază

Programarea orientată pe obiecte se bazează pe trei piloni ai universului său:

  • Polimorfism, care răspunde la întrebarea cum un anumit limbaj de programare tratează obiectele care sunt legate între ele într-un mod similar.
  • Moștenirea, care oferă un răspuns la modul în care este stimulată refolosirea codului.
  • Incapsularea, care este răspunsul la întrebarea cum este ascunsă implementarea și, prin urmare, integritatea datelor este păstrată.

terminologie

Incapsularea (programarea) esteutilizarea modificatorilor de acces pentru a ascunde părți ale codului programului de la utilizatorul final. La rândul său, înseamnă dezvoltator sau obiectul moștenitor.

concepte de încapsulare

Esența conceptului de „încapsulare”

Definiția definește ceea ce se află sub încapsulareascunderea totală sau parțială a codului programului este implicită. Esența conceptului de „încapsulare” este manipularea modificatorilor de acces. Aceasta înseamnă că dezvoltatorul însuși decide ce proprietăți, metode și clase vor fi expuse clasei client și care vor fi ascunse.

Modificatori de acces

programarea încapsulării
Există modificatori de acces pe care încapsularea (programarea Java) le poate manipula, printre altele:

  • public („public” - public, deschis, acces) - acces public atât pentru obiectele și clasele actuale, cât și pentru lumea exterioară;
  • privat („privat” - acces privat, privat, ascuns) - acces închis, a cărui esență este complet opusă celei anterioare. Oferă acces numai din clasa curentă;
  • protejat („protejat” - protejat, semi-ascuns, acces) - acces pentru clasa curentă și derivatele sale;
  • implicit - modificator de acces nespecificat implică faptul că câmpul / metoda este vizibil pentru întregul pachet de clase curent.

În limbajul C # („C Sharp”), pe lângă cele indicate (cu excepția ultimei), există și astfel de modificatori:

  • intern („intern” - acces intern) - disponibilitate generală în colecția curentă, acces închis în toate celelalte cazuri;
  • intern protejat („intern protejat” - acces intern protejat) - combinația a doi modificatori într-unul singur, în care se manifestă proprietățile ambelor.

Rolul încapsulării

Mecanismul de încapsulare vă permite să excludeți influența externă asupra codului programului și utilizarea incorectă a datelor conținute în acesta. Face acest lucru combinând codul și datele într-un singur întreg.

exemplu de programare a încapsulării

Obiect și încapsulare

Combinând implementarea modulului software șidatele încorporate în cod se numesc obiect în programare. Esența conexiunii sale cu încapsularea constă în faptul că tocmai o astfel de tehnică permite menținerea și asigurarea funcționării integrale a mecanismului luat în considerare.

Avantajul încapsulării

Incapsularea este o modalitate de a simplifica procesul de codificare. Numeroase linii de cod rămân „în culise”, iar în clasa principală se lucrează cu instanțe de obiect.

Ideea de protecție a datelor

Incapsularea este, de asemenea, un mecanism careimplementează ideea protecției datelor. Logica de programare a programării orientate pe obiecte se bazează pe faptul că majoritatea datelor vor fi ascunse de modificatorul de acces privat (privat) sau protejat (protejat). Lumea exterioară, clientul, accidental sau intenționat, nu poate deteriora implementarea modulului software. Deoarece este de fapt foarte ușor să faceți acest lucru, chiar dacă nu intenționat, încapsularea este un principiu foarte bun.

Unități de încapsulare

Clasa, ca unitate principală de încapsulare,descrie date și conține un cod care poate funcționa cu aceste date. Este, de asemenea, baza pentru construirea obiectului. Acesta din urmă, la rândul său, este reprezentat ca o instanță a clasei.

programare java de încapsulare
Se utilizează și următoarea terminologie:

  • membrii sunt codul și datele care intră în clasă;
  • câmpuri sau variabile de instanță - acesta este numele datelor pe care clasa le definește;
  • funcții membre - conțin codul în sine. Funcțiile membrilor sunt un nume comun. Metodele sunt un caz special.

Incapsulare cu un exemplu specific

programarea încapsulării este

Exemplu de încapsulare (programare):

* Notă:

description este o descriere a unei metode / proprietăți / variabile, adică comentarea a ceea ce se întâmplă de fapt în program. Dovedit cu etichete deschise / închise

utilizarea sistemului;

spațiu de nume OOPLibrary.Auto

{

///

/// Această clasă este destinată să descrie proprietățile și acțiunile mașinii

///

public class Auto

{

///

/// O variabilă creată pentru a scrie în ea cât de veche este mașina, deoarece dezvoltatorul consideră inutilă interferența externă în această proprietate

/// este marcat cu modificatorul privat, adică închis, acces privat (vezi descrierea de mai sus).

///

private int _age;

///

/// Variabilă booleană (doar două valori posibile - fie da, fie nu) care descrie dacă mașina se deplasează în prezent

/// De asemenea, nu ar trebui să fie deschis utilizatorului final, oricine ar fi el. De aceea modificatorul de acces privat „privat” este atribuit acestei variabile.

///

private bool _isMoving;

///

/// Această variabilă șir trebuie să conțină informații despre culoarea mașinii. Poate fi supus modificărilor din influențele externe

/// prin urmare, modificatorul de acces deschis „public” este selectat pentru Culoare.

///

șir public Culoare;

///

/// În acest caz particular, presupunem că și numele mașinii poate fi schimbat

/// este atribuit modificatorul public (acces deschis tuturor, indiferent de clasă sau asamblare).

///

șirul public Nume;

///

/// Constructorul clasei este deschis și toate proprietățile exprimate de variabile și setate puțin mai devreme își obțin valorile

///

public Auto ()

{

_vârsta = 5;

_isMoving = false;

Culoare = "Violet";

Nume = "Skoda Octavia";

}

///

/// Metoda implementează returnarea valorii de vârstă a mașinii. De ce este necesar acest lucru?

/// un modificator de acces privat împiedică modificarea acestuia de către client.

///

/// Returnează vârsta mașinii.

șir public GetAge ()

{

return "Mașina selectată în prezent" + _age + "are ani.";

}

///

/// Dacă mașina nu se mișcă, această metodăimplementează începutul mișcării. Se efectuează o verificare a unei variabile care indică starea mașinii (indiferent dacă conduce sau nu) și, în funcție de rezultate, se efectuează o acțiune adecvată / este afișat un mesaj corespunzător.

///

public void Start ()

{

if (_isMoving)

{

Console.WriteLine („Mișcarea a început deja”);

}

altfel

{

_isMoving = adevărat;

Console.WriteLine („Gata, atenție .. Să mergem! Să mergem!”);

}

}

///

/// Dacă mișcarea a fost pornită, atunci această metodă o oprește. Aceeași logică de program ca în cazul anterior considerat.

///

vid public Stop ()

{

if (_isMoving)

{

_isMoving = false;

Console.WriteLine ("Stop, mașină");

}

altfel

{

Console.WriteLine ("Eroare. Mașina stă deja nemișcată, nu se mișcă");

}

}

///

/// Virați spre stânga dacă vehiculul se deplasează

///

public void MoveLeft ()

{

if (_isMoving)

{

Console.WriteLine („A făcut o virare la stânga”);

}

altfel

{

Console.WriteLine ("Eroare. Mașina stă pe loc. Funcția de virare nu este disponibilă momentan");

}

}

///

/// O metodă similară cu virarea la dreapta

///

public void MoveRight ()

{

if (_isMoving)

{

Console.WriteLine („Întoarcerea la dreapta s-a făcut cu succes”);

}

altfel

{

Console.WriteLine ("Eroare. Mașina nu s-a mișcat încă. Întoarcerea spre dreapta este în prezent o acțiune care nu poate fi efectuată.");

}

}

}

}