Saturday, February 16, 2019 15:53

Alte Structuri De Date

În mod surprinzător, veți observa că deja am folosit două tipuri de structuri de date, fără să știm că acestea erau de fapt structuri de date: clasa și structura. Ori de câte ori instanțiem una dintre acestea, o folosim de fapt ca structură de date (mai mult sau mai puțin). Este posibil să nu știți, dar o structură este foarte asemănătoare cu o clasă, în sensul de declarare și utilizare. Ambele pot avea variabile de câmp, ambele pot conține metode, ambele pot fi instanțiate, etc. Singura diferență dintre o clasă și o struct este modul în care funcționează intern. Nu am învățat despre stack (nu, nu structura de date de tip stack) și heap, dar în esență, acestea sunt două tipuri diferite de memorie în memoria RAM a computerului, cu comportamente diferite. Deci, o clasă, fiind un tip de referință, este stocată ca un pointer, ca o referință la o altă locație în heap, unde este stocată în mod real valoarea. Pe de altă parte, o structură, fiind un tip de valoare, este stocată pe stivă, iar variabila conține toate datele în sine însăși, cu toate câmpurile, metodele etc. O altă diferență este faptul că tipurile de referință pot fi nule, indicând către nici un loc din memorie), în timp ce tipurile de valori conțin întotdeauna o valoare.

Potrivit MSDN: „structurile sunt folosite de obicei pentru a încapsula un grup mic de variabile conexe, cum ar fi coordonatele dreptunghiului. Structurile pot conține, de asemenea, constructori, constante, câmpuri, metode, proprietăți, indexatori, operatori, evenimente și tipuri imbricate, deși dacă aveți nevoie de câteva astfel de elemente, ar trebui să vă gândiți să faceți tipul dvs. o clasă în schimb. „

Acest lucru înseamnă că ori de câte ori trebuie doar să stocați date simple, un struct este perfect pentru această sarcină. Dar dacă vă gășiți adăugând funcționalitate și logică structurii dvs., ar fi mai bine să faceți o clasă.

Acum, putem vedea cum putem folosi ambele concepte ca structuri de date:

După cum puteți observa, în acest moment stocăm date în interiorul variabilelor punctNou și marimeNoua. Am putea stoca nume, adrese, orice am dori.

Singurul „dezavantaj” în comparație cu alte structuri de date este faptul că, dacă vrem să stocăm un alt câmp, trebuie să modificăm clasa sau structura în sine. Aceasta înseamnă că odată ce codul nostru este compilat și executat, nu putem modifica structura clasei sau structurii noastre. Nu putem adăuga o altă variabilă numită „adancime” în clasa noastră de dimensiuni. Pe de altă parte, pentru alte structuri de date (cum ar fi dicționarul, lista etc.), adăugarea unei noi valori clasei la momentul execuției este doar o chestiune de utilizare a metodei Add(). „Avantajul” este faptul că putem să stocăm mai multe tipuri de date într-o singură structură de date, spre deosebire de array-uri, liste etc., și avem posibilitatea de a acționa intern asupra acestor date (metode, funcții etc.).

Comments

comments

Tags: , ,

Leave a Reply