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.
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 ();
Š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.
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.
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é“.
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.
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!