Obiect (computer)

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Cu termenul de obiect , în informatică și în special în contextul programării , ne referim în cel mai generic mod la o regiune de memorie alocată.

Zone

În special în programarea orientată pe obiecte (OOP), obiectul este un exemplu (în engleză : instanță , de obicei chiar dacă este tradus necorespunzător ca instanță) al unei clase , unic și separat de alte obiecte (conform conceptului de încapsulare ) cu care poate totuși „comunica”.

În general, toate entitățile cu propria identitate sunt considerate obiecte. Cu toate acestea, nu toate entitățile unei probleme trebuie să fie neapărat obiecte, depinde de natura problemei, care poate permite sau necesita neglijarea sau nu a anumitor entități, deoarece acestea nu sunt semnificative pentru problema însăși. Mai mult, obiectele pot fi, de asemenea, compuse din alte obiecte, caz în care este necesar să aprofundăm analiza și să identificăm componentele individuale până când nivelul cel mai de jos conține doar obiecte atomice.

Prin urmare, pentru a defini un obiect este necesar să identificați:

  • caracteristicile ( atributele ) acestuia, prin așa-numita abstractizare a datelor;
  • acțiunile pe care le poate efectua și / sau suferi ( metode ), cu așa-numita abstractizare funcțională.

O instanță este un obiect particular al unei clase date. Fiecare instanță este separată de celelalte, dar împărtășește caracteristicile sale generale cu celelalte obiecte din aceeași clasă, prin descrierea comună a câmpurilor și metodelor.

De exemplu, câinele meu, „Bobbi”, poate fi reprezentat de un obiect numit bobbi creat ca o instanță a clasei „Dog”, cu un atribut de nume care conține șirul „Bobbi”.

În unele cazuri, unele obiecte pot fi considerate subrutine care pot comunica între ele prin primirea sau trimiterea de mesaje prin metodele lor.

O clasă poate fi văzută ca un tip complex (comparativ cu tipurile simple predefinite numite primitive) de variabile și un obiect ( instanță ) poate fi văzut ca una dintre variabilele acelui tip. De fapt, prin crearea unei clase, se definește un nou tip de date (noi, comparativ cu cele predefinite și furnizate împreună cu bibliotecile limbajului utilizat).

Într-un limbaj orientat pe obiecte (cum ar fi Java) fiecare element al limbajului este un obiect și este înțeles ca o abstractizare a unui obiect corespunzător din lumea reală.

Un obiect din lumea reală are caracteristici și comportamente. În timp ce, un obiect OOP este reprezentarea computerizată a unui obiect din lumea reală. În POO caracteristicile obiectelor reale sunt reprezentate folosind ( variabile de instanță ) în timp ce comportamentele lor sunt reprezentate cu blocuri de instrucțiuni numite metode .

Revenind la exemplul câinelui Bobbi, obiectul OOP corespunzător ar putea avea variabile care descriu numărul de picioare, tipul de păr, numele, culoarea și metodele cu nume semnificative, cum ar fi alergare , mâncare , scoarță , coadă .

Din punct de vedere logic, un obiect nu este niciodată un element în sine, ci derivă întotdeauna (adică extinde și moștenește funcționalitatea) dintr-un alt obiect.

De obicei, obiectul principal se numește obiect tocmai pentru a-l identifica cu un obiect din lumea reală cât mai generic posibil.

De exemplu, în Java, toate obiectele sunt o extensie a super clasei Object din care moștenesc toate atributele (variabile și metode).

Obiectul Object definește metode și variabile de instanță generice, deoarece toate celelalte obiecte vor coborî apoi din acest obiect, după cum urmează:

  • Obiect
    • Animal
      • Reptile
      • Mamifer
        • Canid
          • Câine
        • Felin
          • Pisică

Într-o ramură strict matematică a informaticii, termenul obiect este folosit în sens pur matematic pentru a se referi la orice „lucru”. În timp ce această interpretare este utilă în discuția teoriei abstracte, nu este suficient de concretă pentru a fi utilizată ca primitivă în discuția unor subiecte mai concrete (cum ar fi programarea) care sunt mai aproape de procesarea informațiilor . În acest caz, obiectele sunt încă entități conceptuale, dar corespund în general blocurilor adiacente de memorie (computer) de o anumită dimensiune într-un anumit loc. Acest lucru se datorează faptului că calculul și procesarea informațiilor necesită în cele din urmă o schemă de memorie. Obiectele, în acest sens, sunt primitive necesare pentru a defini cu acuratețe concepte precum referințe , variabile și legături de nume . Acesta este motivul pentru care este obișnuit să ne concentrăm pe interpretarea concretă a unui obiect, mai degrabă decât pe cea abstractă.

Deși un bloc de memorie poate părea contiguu la un nivel de abstractizare și nu contiguu la altul, important este că acesta pare contiguu programului care îl tratează ca un obiect. Adică programul are grijă ca obiectul să fie liber de referințe interne, pentru că altfel nu ar mai fi un primitiv. Cu alte cuvinte, detaliile de stocare privată ale obiectului nu trebuie afișate clienților obiectului și aceștia trebuie să poată schimba fără a modifica codul clientului.

Obiectele există numai în contexte care le recunosc ca atare; o parte din memorie conține un obiect numai dacă un program îl tratează ca atare (de exemplu, rezervându-l pentru utilizarea exclusivă a procedurilor specifice și / sau asocierea acestuia cu un tip de date ). Prin urmare, viața unui obiect corespunde intervalului de timp în care este tratat ca obiect. Acesta este motivul pentru care sunt încă entități conceptuale, în ciuda prezenței lor fizice în memorie. Cu alte cuvinte, conceptele abstracte care nu ocupă spațiu de memorie în timpul execuției nu sunt, prin definiție, obiecte; de exemplu, comportamentul prezentat de un set de clase sau tipuri de date în programe. Pentru a sublinia că un obiect conține informații utile, termenul obiect de date este uneori folosit pentru a se referi la acel obiect.

Obiecte în programarea orientată pe obiecte

În programarea orientată pe obiecte (OOP), o instanță a unui program este reprezentarea RAM a clasei căreia îi corespunde obiectul.

O clasă (clasă) este o colecție de date, sau mai bine zis a descrierii lor și a variabilelor care le conțin și a metodelor care operează pe acele date. Combinate împreună, datele și metodele descriu starea și comportamentul unui obiect.

Obiectele din POO extind noțiunea mai generală de obiect descrisă mai sus, inclusiv un tip specific, care, printre altele, ia în considerare:

  1. atributele sau câmpurile sau datele membrilor care reprezintă și conțin datele asociate obiectului;
  2. a metodelor sale care accesează datele asociate cu acel obiect, în mod implicit.

În cazul limbajelor OOP mai riguroase, datele unui obiect pot fi accesate numai prin metodele sale, facilitând asigurarea faptului că datele sunt întotdeauna consistente. În Java, această exclusivitate se realizează prin prefixarea tipului variabilei de câmp cu cuvântul rezervat „privat”. De exemplu, în Java, dorind să reprezentăm un obiect real caracterizat prin numele său, am putea scrie în clasa sa:

 numele șirului privat ;

Unele limbi nu diferențiază între membrii de date și metode.

Într-un limbaj OOP (cum ar fi Java) fiecare obiect este creat de o clasă și obiectul este definit ca o instanță a clasei sale. Prin urmare, dacă fiecare clasă reprezintă un tip de date, două obiecte din aceeași clasă vor reprezenta același tip de date . Crearea unei instanțe a unei clase se mai numește instanțierea clasei.

Practic, un obiect este creat pe baza unui model abstract numit clasă. O clasă constă dintr-un bloc de instrucțiuni caracterizat prin propriul nume, care conține descrierea datelor și variabilele care le conțin (câmpurile), împreună cu descrierea instrucțiunilor (metodelor) pentru a le gestiona (citi și modifica) .

Rețineți că clasa conține doar descrierea datelor și comportamentul obiectelor create pe baza acelei clase. Prin urmare, înainte de a defini un obiect va trebui să descriem clasa sa în abstract și va trebui să definim variabilele necesare pentru a conține datele sale și metodele de gestionare a acestora.

În termeni concreți, obiectul este creat ca o instanță a clasei sale și prinde viață primind date constând din valorile care trebuie atribuite variabilelor sale de la alte obiecte. Trebuie amintit că în POO fiecare program este alcătuit din obiecte care interacționează între ele (primind date de la alte obiecte și transmitând date către alte obiecte).

De exemplu, având în vedere să reprezentăm un câine numit „Bobbi” îl putem reprezenta ca o instanță de tip ( clasă ) „Câine”, care la rândul său va fi o subclasă din clasa (computer) „Animal”.

În cazul unui obiect polimorf , unele detalii de tipul acestuia pot fi ignorate selectiv, de exemplu un obiect din clasa „Câine” ar putea fi utilizat de o funcție care caută un obiect de tip „Animal”. Același lucru este valabil și pentru un obiect de tip „Pisică”, deoarece și el derivă din clasa „Animal”. În timp ce accesați un obiect de tip „Animal”, unele atribute de tip „Câine” și „Pisică” pot fi inaccesibile, cum ar fi atributul „coadă”, deoarece nu toate animalele au coadă.

În acest moment facem un alt pas înainte în înțelegerea conceptului de obiect al POO. toate obiectele au trei caracteristici:

  1. Identitate - este proprietatea unui obiect de a se distinge de ceilalți și este reprezentată de numele său;
  2. statul - care este alcătuit din datele asociate unui obiect și este reprezentat prin variabile asociate cu acel obiect;
  3. Comportament - este descris prin metode care evocă acțiunile pe care le poate efectua obiectul.
  4. În special, există diferite tipuri de obiecte:
  5. Unele nume sunt folosite pentru a indica unele obiecte speciale:
  • Obiect Singleton - un obiect care reprezintă singura instanță a unei clase în executarea unui program.
  • Functor ( obiect funcțional ) - un obiect cu o singură metodă (în C ++, această metodă ar putea fi operatorul funcției, „operator ()”) acționând ca o funcție (similar cu un pointer C / C ++ cu o funcție) .
  • Obiect constant - un obiect cu o stare care este fixată la creație și care nu se schimbă după aceea.
  • Obiect de primă clasă - un obiect care poate fi utilizat fără restricții.
  • Obiect container - un obiect care conține alte obiecte.
  • Obiect de fabrică - un obiect responsabil de crearea altor obiecte.
  • Metaobject - un obiect din care pot fi create alte obiecte (comparați cu clasa , care nu este neapărat un obiect)
  • Obiect prototip - un metaobiect specializat din care pot fi create alte obiecte prin copiere.

Exemple

Pentru a înțelege mai bine ce este un obiect, să vedem un exemplu simplu de cod care în limbajul Java este necesar pentru a crea un obiect care reprezintă un câine numit „Bobbi”.

Mai întâi vom defini clasa de câine:

 clasă Câine {

  numele șirului privat ;

  // metoda constructorului
  Câine ( numele șirului ) { 
       aceasta . nume = nume ;
  }

  public getName () {
       returnează numele ;
  }
}

După definirea clasei „Dog” putem crea obiectul „bobbi” ca instanță cu instrucțiunea:

 nou

Cea mai simplă modalitate de a seta datele obiectului bobbi este să apelați metoda constructorului (omonimul clasei Cane), trecându-i șirul „Bobbi” prin instrucțiuni (pentru a fi introdus în metoda principală):

 Cane bobbi = Cane nou ( „Bobbi” );

Pentru a afișa conținutul numelui variabilei de instanță asociat obiectului de tip nume Dog și bobbi, trebuie doar să scrieți:

 Sistem . afară . print (Bobbi getName ().);

Alte exemple Java:

 clasă ObjectRecall {
     public static void main (String args []) {
          Obiect O1 = Obiect nou (); // Construiți obiectul „O1” în clasa „Obiect”
          Obiect O2 = Obiect nou (); // Construiți obiectul „O2” în clasa „Obiect”


          Șir printFirstObject = O1 . printMessage (); / * Apelați metoda „printMessage” prezentă în clasa „Object” prin obiectul „O1” și atribuiți-o variabilei „printFirstObject” * /
          Șir printSecondObject = O2 . printMessage (); / * Apelează prin obiectul "O2" metoda "printMessage" prezentă în clasa "Object" și o atribuie variabilei "printSecondObject" * /

          Sistem . afară . println ( printFirstObject ); 
          Sistem . afară . println ( printSecondObject ); / * Tipărește conținutul „printSecondObject” pe ecran, care (dacă metoda „printMessage” tipărește aleatoriu șiruri aleatorii) poate fi diferit de tipărirea anterioară, așa cum se numește cu un alt obiect: „O2” * /
       }
}

Elemente conexe

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