Legare

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Notă despre dezambiguizare.svg Dezambiguizare - Dacă căutați alte semnificații, consultați Legare .

În informatică , legarea este procesul prin care se realizează conexiunea între o entitate software și valoarea sa corespunzătoare. [1]

În ceea ce privește programarea orientată obiect , decizia cu privire la atributul sau metoda de invocat la un moment dat în execuția programului se ia prin legare.

Este posibil ca această decizie să fi fost stabilită în prealabil într-un mod fix și, în acest caz, vorbim de legare statică (sau legare timpurie ); sau poate fi luat în timp de execuție , dinamic, iar în acest caz vorbim de legare dinamică (sau legare tardivă ). [2]

Tipuri de legături

Comparativ cu definiția generală a legării, unul dintre cei mai importanți discriminanți este momentul în care legătura în sine este stabilită, adică timpul de legare . Din acest punct de vedere și, în special, în ceea ce privește limbile compilate , putem distinge între legarea făcută înainte, în timpul sau după compilare .

Legare implicită în definiția limbajului

Definiția limbajului de programare definește tipurile de variabile , precum și operațiile matematice la care pot fi supuse variabilele.

Legarea stabilită în timpul implementării limbajului

Deoarece o singură specificație de limbaj poate avea mai multe implementări, fiecare implementare diferită poate avea un omolog matematic diferit al tipurilor. Legarea stabilită în timpul implementării specifică setul de valori pe care un tip dat le poate reprezenta pe baza spațiului de memorie rezervat variabilelor de acel tip dat.

Legarea statică

Legarea statică sau legarea timpurie este legarea stabilită la momentul compilării .

În legarea statică, tipurile de variabile sunt determinate în mod unic și, prin urmare, operațiunile care pot fi efectuate asupra variabilelor sunt determinate în mod unic; compilatorul generează codul pentru a apela o metodă dată de fiecare dată când această metodă este aplicată unui obiect dat; această asociere nu mai poate fi modificată în timpul execuției.

În unele limbi, cum ar fi în C , există posibilitatea de a crea noi tipuri definite de utilizator; în acest caz, programatorul scrie în cod o declarație specifică de tip care, odată citită de compilator, îi permite acestuia din urmă să asocieze variabilele noului tip la valorile corespunzătoare, întotdeauna univoc.

În Pascal programatorul are nu numai posibilitatea de a defini noi tipuri, ci și de a redefini tipurile existente în limbă (de exemplu, tipul întreg ); în acest caz, legarea de tip efectuată în timpul implementării limbajului este modificată de legarea efectuată la compilarea programului (după care nu mai poate fi modificată, cu excepția cazului în care codul sursă este rescris).

În limbaje precum C ++, programatorul nu numai că are capacitatea de a defini noi tipuri, ci și de a redefini operatorii de limbă înșiși. [3]

Legare dinamică

Pictogramă lupă mgx2.svg Același subiect în detaliu: Programare orientată pe obiecte § Legare dinamică sau polimorfism orizontal .

Legarea dinamică sau legarea târzie este legarea stabilită în timpul rulării .

În acest caz, compilatorul nu generează o dată pentru totdeauna, în momentul compilării, codul pentru atribuirea valorilor variabilelor în funcție de apelurile metodei sau codul pentru a calcula ce metodă să apelați pe baza informațiilor care vin din obiect - ca în legarea statică - dar în schimb generează un cod care va fi folosit pentru a calcula ce metodă să apelăm de fiecare dată.

Prin urmare, în legarea dinamică, identitatea variabilelor este determinată în funcție de fluxul de execuție și nu poate fi stabilită a priori ( variabile polimorfe).

Legarea dinamică este foarte importantă pentru paradigma de programare orientată pe obiecte, deoarece vă permite să implementați obiecte polimorfe .

Notă

  1. ^ Lecția Vittorio Bilò despre legare ( PDF ), pe di.univaq.it . Adus la 16 septembrie 2009 (arhivat din original la 8 septembrie 2015) .
  2. ^ Cay S. Horstmann, Gary Cornell, Java2 - Fundamentele , Milano, McGraw-Hill, 1999.
  3. ^ Herbert Schildt, ediția a doua C ++ , Milano, McGraw-Hill Libri Italia, septembrie 1999 [1998] , p. 976, ISBN 88-386-4067-X .

Elemente conexe

linkuri externe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT