Rozdiel medzi triedou a štruktúrou

Skôr ako pochopíme rozdiel medzi triedou a štruktúrou, mali by sme poznať niekoľko základných pojmov, ktoré sú s nimi spojené. Bez pochopenia pojmov je ťažké pochopiť rozdiely medzi nimi.

Čo je trieda a objekt:

Toto sú dva dôležité pojmy týkajúce sa objektovo orientovaného programovania a tvoria základ pre vytváranie funkcií a odovzdávanie údajov iným funkciám. Pre lepšie pochopenie ho môžeme uviesť do súladu s príkladom skutočného života. Trieda môže byť považovaná za obchod a objekt môže byť ktorýkoľvek z individuálnych, konkrétnych obchodov, ako sú potraviny, papiernictvo, ovocie atď. Všetky objekty zdieľajú spoločné vlastnosti hlavnej triedy - obchod - a naopak, objekty môžu mať svoje vlastné exkluzívne vlastnosti, ako napríklad špecifický dizajn, osvetlenie atď. Prostredníctvom týchto objektov môžeme túto triedu skutočne používať; tvoria príklady triedy.

Syntax triedy

Obchod v triede

veci z verejných reťazcov;

dizajn verejných reťazcov;

Syntax objektu

Obchod s potravinami = nový obchod ();

Kancelárske potreby = nový obchod ();

Čo je to štruktúra?

Štruktúra obsahuje iba údaje, a preto je užitočné pri vytváraní individuálnych požiadaviek na údaje prostredníctvom objektov Štruktúry. Na rozdiel od triedy nemá funkcie. Toto je jeho syntax:

struct grocery_entrance

char entry_name [50];

int vchod_size;

grocery_entrance;

Všetky obchody môžu používať vchod „Struct“ so samostatnými menami a veľkosťami.

Čo je dedičstvo?

Je to podobné tomu, ako syn zdedí majetok svojho otca a potom môže syn pridať aj ďalšie vlastné majetky. Trieda môže byť buď základná trieda alebo odvodená trieda, v ktorej prvá trieda môže byť považovaná za základňu na vytvorenie druhej triedy. Odvodená trieda pridáva niekoľko ďalších vlastností pre seba, okrem toho, čo získava zo základnej triedy. Keď vezmeme do úvahy vyššie uvedený príklad, obchod s potravinami môže byť stále odvodený od konkrétneho obchodu s potravinami, ako je obchod s potravinami XYZ.

Teraz, keď poznáme základné pojmy, môžeme ísť do skutočného rozdielu medzi triedou a štruktúrou.

Ako sa líšia?

  • Re-použiteľnosť: Keďže triedy tvoria základný rámec, môžu sa opätovne použiť; Štruktúry sú však jednotlivé prvky so špecifickými vlastnosťami, takže ich nemožno opätovne použiť. Napríklad triedu obchodu s potravinami je možné použiť pre akýkoľvek typ obchodu s potravinami, ale štruktúra grocery_entrance je špecifická len pre tento druh tovaru a nemá zmysel ju opätovne používať v iných triedach..
  • viditeľnosť: Všetky funkcie triedy sú verejne dostupné pre jej objekty. Napríklad máme v triede „obchod“ funkciu s názvom „veci“. Funkcia 'veci' je viditeľná pre všetky jej objekty, ako napríklad 'obchod s potravinami,' papiernictvo 'atď. Takáto viditeľnosť nie je možná pri štruktúrach, pretože dáta štruktúry sú obmedzené na seba a nie sú viditeľné pre iné štruktúry. Aby sme to vyjasnili, môžeme povedať, že údaje „grocery_entrance“ nie sú verejne viditeľné vo všetkých ostatných obchodoch..
  • Pass by Reference a Pass by Value: Funkcia Pass by Reference odosiela do funkcií iba miesto v pamäti a nie skutočné údaje. To znamená, že pri každej zmene hodnoty sa zmena prejaví v zodpovedajúcich funkciách. Pass by value zase zasiela hodnotu do funkcie. V takom prípade sa zmena hodnoty po jej odoslaní neodzrkadlí vo funkcii. Trieda používa priechod odkazom a štruktúra používa priechodnú hodnotu.
  • dedičnosť: Triedy môžu byť ďalej zdedené, aby vytvorili podtriedy, ale štruktúry nemôžu využívať dedičnosť. Napríklad triedny obchod poskytuje svoje funkcie podtriede „obchod s potravinami“. Štruktúra „grocery_entrance“ však nemôže zdediť žiadnu funkciu. Môžeme povedať, že tu neexistuje žiadny koncept, ako je podštruktúra.
  • Predvolená viditeľnosť: Všetci členovia triedy sú štandardne vedené ako súkromné ​​subjekty, zatiaľ čo členovia štruktúry sú štandardne držaní ako verejné subjekty.
  • Veľkosť prázdnej triedy a štruktúry: Trieda používa veľkosť 1 bajt, aj keď je prázdna, zatiaľ čo štruktúra nikdy nepoužíva žiadnu pamäť, keď je prázdna. To znamená, že môžeme povedať, že veľkosť prázdnej štruktúry sa rovná 0 bajtov.
  • Zber odpadu: Zber odpadu je možný pri triedach, pretože používajú odkaz. Preto je ľahšie vykonať čistenie na jednom mieste, kde sú uložené údaje. Na druhej strane, zber odpadu nie je možný v systéme Struct, pretože používa funkciu pass by value a údaje sú rozptýlené na rôznych miestach..
  • Správa pamäte: Pretože trieda umožňuje zber odpadu, správa pamäte je tiež efektívna; to však nie je také účinné v prípade štruktúr.
  • konštruktor: Konštruktor vo všeobecnosti inicializuje triedu s určitými špecifikovanými hodnotami. Môžeme sa na to pozerať ako na niečo, čo bolo inicializované hodnotami. Ak sa musí vytvoriť nová trieda, konštruktor sa volá, aby pre túto inštanciu pridelil pamäť. Pri volaní konštruktora môžeme dokonca odovzdávať hodnoty ako argumenty. Poďme teraz na našu skutočnú diskusiu. Triedy povoľujú konštruktory všetkých typov, napríklad s argumentmi alebo bez argumentov, zatiaľ čo štruktúry umožňujú konštruktorom iba argumenty, t. J. Parametrizované konštruktory.
  • destruktor: Deštruktor sa volá vždy, keď potrebujeme vymazať inštanciu triedy. Ničiteľ potom túto inštanciu vymaže a uvoľní pamäť. Trieda môže použiť deštruktor, zatiaľ čo štruktúra nemôže.
  • Inicializácia premenných člena: V triedach môžeme inicializovať členské premenné priamo; takáto inicializácia nie je možná v prípade štruktúr.
  • Vytvorenie objektu: Všeobecná syntax pre vytváranie objektov v triedach je:

Demo obj = new Demo ();

To znamená, že pri vytváraní objektov triedy musíme použiť kľúčové slovo „nové“. Toto sa nevyžaduje pri vytváraní objektov štruktúr. Stačí sa pozrieť na ich syntax:

Demo obj;

Funguje to perfektne aj bez kľúčového slova „nové“.

Kedy použiť triedu a kedy použiť štruktúru?

Pretože triedy sú flexibilnejšie pri vzájomnom odovzdávaní údajov a funkcií, môžeme sa o to postarať, keď budú použité objekty zložité a veľké. V našom príklade môže Mall použiť triedu 'store' na lepšie vyjadrenie systému. Štruktúry sú však obmedzené na menšie objekty, pretože sú relatívne menej efektívne ako triedy. Preto, ak navrhujete vlastný obchod, sú tou najlepšou voľbou Štruktúry.

Ako previesť štruktúru na triedu a naopak?

Možno ste počuli výrazy „box“ a „rozbalenie“, aby ste štruktúru previedli na triedu a naopak. Aj keď sú to účinné procesy, ktoré nám pomáhajú pri konverzii, malo by sa s nimi zaobchádzať opatrne. Pretože to priamo ovplyvňuje miesta v pamäti, má obrovský vplyv na výkonnosť nášho systému. Okrem toho ovplyvňuje procesy zberu odpadu a vedie k celkovej neefektívnosti systému. Preto tieto konverzie používajte iba v prípade potreby.

Pozrime sa na vyššie uvedené rozdiely v tabuľkovej podobe.

S.No koncepty rozdiely
Trieda struct
1 Re-použiteľnosť Úplne znovu použiteľné Nie je opakovane použiteľné
2 viditeľnosť Všetky funkcie triedy sú viditeľné pre jej objekty Dáta objektu štruktúry nie sú viditeľné pre iné objekty rovnakej štruktúry
3 Pass by Reference a pass by Value Použitie Pass by Reference Používa funkciu Pass by Value
4 dedičstvo Funkcie triedy môžu byť zdedené jej podtriedami; umožňuje dedenie Nikdy nedovoľuje dedičstvo
5 Predvolená viditeľnosť Všetci členovia triedy sú v predvolenom nastavení súkromní Všetci členovia Štruktúry sú predvolene verejní
6 Veľkosť, keď je prázdna Veľkosť prázdnej triedy je 1 bajt Veľkosť prázdnej štruktúry je 0 bajtov
7 Zbierka odpadu Keďže sa používa odkaz, je možné zbierať odpadky Keďže používa funkciu pass by value, zber odpadu nie je možný
8 Správa pamäte Ľahkosť procesu zberu odpadu pomáha pri efektívnej správe pamäte Nedostatok zberu odpadu vedie k zlej správe pamäte
9 konštruktéri Umožňuje konštruktorom všetkých typov, napríklad s alebo bez parametrov Umožňuje iba parametrizované konštruktory
10 deštruktory Môže to použiť Nedá sa použiť
11 Inicializácia premenných člena Umožňuje priamu inicializáciu členských premenných Nepovoľuje priamu inicializáciu slov premenných členov
12 Vytvorenie objektu Pri vytváraní objektu je nevyhnutné používať kľúčové slovo „nové“ Pri vytváraní objektu je voliteľné používať kľúčové slovo „nové“
13 Kedy použiť? Lepšie pre väčšie a zložité objekty, kde sa vyžaduje dedičstvo Lepšie pre menšie a jednoduchšie objekty, kde je dedičstvo menej dôležité.

Takmer sme pokryli všetky rozdiely medzi triedou a štruktúrou a ak máte pocit, že niečo chýba, dajte nám vedieť. Poďme sa spoločne učiť a čo najlepšie využiť tieto vedomosti!