c concepts constructor
V tomto výučbe sú vysvetlené niektoré dôležité koncepty programovania v C #, napríklad konštruktor, deštruktory, statická trieda, štruktúry a výčty:
V jednom z našich predchádzajúcich tutoriálov o objektoch a triedach sme sa dozvedeli, čo sú trieda a objekt.
Objekt je podobný objektu z reálneho sveta a trieda je logickou zbierkou podobných druhov objektov. Je to jeden z najzákladnejších typov v C #. V tejto príručke sa ponoríme hlboko do ďalších súvisiacich konceptov C #.
=> Preskúmajte tu kompletnú sériu školení C #
V tejto príručke sa dozvieme o niektorých dôležitých aspektoch tried a o tom, ako ich môžeme použiť v našich programoch. Pokúsime sa vytvoriť jednoduché C # programy založené na konceptoch, ktoré sme sa naučili v našich predchádzajúcich tutoriáloch.
Čo sa dozviete:
- Čo je to konštruktor v C #?
- Destruktory v C #
- Statickí členovia v triede
- Statická trieda v C #
- Štruktúry v C #
- Rozdiel medzi štruktúrou a triedou
- Štruktúra: definícia
- Vyčísľuje v C #
- Vlastnosti v C #
- Záver
- Odporúčané čítanie
Čo je to konštruktor v C #?
Konštruktor je špeciálny typ metódy v programovacom jazyku C #, ktorý sa volá alebo vyvoláva automaticky pri vytvorení objektu danej triedy.
Jeho hlavnou funkciou je inicializácia dátových členov novovytvoreného objektu. Jednou z najvýraznejších vlastností konštruktéra je jeho meno. Má rovnaký názov ako trieda.
Konštruktory sú v zásade dvoch typov:
- Predvolené
- Parametrizované
C # predvolený konštruktor
Ako naznačuje názov, predvolený konštruktor je základným konštruktorom triedy. Nemá žiadny argument a je vyvolaná priamo v čase vytvárania objektu.
public class Program { public Program(){ Console.WriteLine('Constructor has been invoked'); } public static void Main(string() args) { Program p = new Program(); } }
Výstupom tohto programu bude:
Konštruktor bol vyvolaný
Vysvetlenie
V triede „Program“ sme definovali konštruktor „Program“. Teraz, keď inicializujeme triedu vo vnútri hlavnej metódy, sa automaticky vyvolá konštruktor.
Preto bude vyvolaný akýkoľvek útržok kódu, ktorý sme ponechali vo vnútri konštruktora. Tu sme vytlačili správu „Konštruktor bol vyvolaný“ v zložených zátvorkách konštruktora, takže keď inicializujeme triedu, predvolene sa inicializuje konštruktor a správa sa vytlačí ako výstup.
Parametrizovaný konštruktor
Ako už názov napovedá, parametrizovanými konštruktormi sú konštruktor s parametrami. Tieto konštruktory sa používajú na prenos rôznych hodnôt do objektov.
public class Details { public Details(int a, int b){ int c = a+b; Console.WriteLine('The sum is: '+ c); } } public class Program { public static void Main(string() args) { Details d = new Details(2, 3); } }
Výstupom tohto programu bude:
vzorové testovacie prípady pre bankovú aplikáciu
Celková suma je: 5
Vysvetlenie
V našom predchádzajúcom príklade s predvoleným konštruktorom máme našu hlavnú metódu v rovnakej triede. V tomto príklade máme hlavnú metódu v inej triede.
Máme jednu triedu s názvom „Podrobnosti“, ktorá obsahuje parametrizovaný konštruktor akceptujúci dve celočíselné hodnoty. Vo vnútri konštruktora tlačíme súčet celých čísel. Máme ďalšiu triedu nazvanú „Program“, ktorá obsahuje našu hlavnú metódu. V hlavnej metóde sme inicializovali triedu „Podrobnosti“.
Ako už bolo vysvetlené, pri inicializácii triedy sa jej konštruktory volajú automaticky. V tomto prípade teda bola vyvolaná naša metóda konštruktora „Podrobnosti“ a keď sme pri inicializácii odovzdali parameter, vytlačí sa výstup.
Destruktory v C #
Destruktory sú pravým opakom konštruktérov. Je to špeciálna metóda triedy, ktorá sa vyvolá, keď objekt triedy vyjde z rozsahu. Podobne ako konštruktor, aj názov deštruktora je úplne rovnaký ako názov triedy, ale má predponu „~“ (vlnovka).
Destruktor neprijíma žiadny parameter, nevracia žiadnu hodnotu. Destruktor ničí objekty triedy, preto sa používa hlavne na uvoľnenie pamäte po vykonaní programu. Ďalšou dôležitou vecou, ktorú si musíte uvedomiť, je, že nemôže byť preťažený ani zdedený.
Príklad ničiteľov:
public class Program { public Program(){ Console.WriteLine('Constructor has been invoked'); } ~Program(){ Console.WriteLine('Destructor has been invoked'); } public static void Main(string() args) { Program p = new Program(); } }
Výstupom tohto programu bude:
Konštruktor bol vyvolaný
Destruktor bol vyvolaný
Vysvetlenie
Použili sme ten istý príklad, ktorý sme použili na naučenie konštruktora. Práve sme pridali deštruktor do programovej triedy (~ Program). Keď inicializujeme objekt triedy, vyvolá sa konštruktor a vytvorí sa objekt triedy. Týmto sa do konzoly vytlačí fráza „Konštruktor bol vyvolaný“.
Po dokončení vykonania a odstránení objektu triedy z rozsahu sa program presunie smerom k destruktoru. Potom sa vyvolá deštruktor, ktorý následne zničí objekt. Tu sme vytlačili správu vnútri deštruktora, ktorá sa po vyvolaní deštruktora vytlačí na konzolu.
Statickí členovia v triede
Členov triedy možno vyhlásiť za statických pomocou kľúčového slova static. Keď je objekt deklarovaný ako statický, bez ohľadu na počet vytvorených objektov bude existovať iba jedna kópia statického objektu.
Ak bude statické, znamená to, že pre danú triedu bude existovať jedna inštancia člena. To znamená, že hodnotu statickej funkcie alebo premenných vo vnútri triedy je možné vyvolať bez vytvorenia objektu pre ne.
Statické premenné sa používajú na deklarovanie konštánt, pretože ich hodnoty je možné získať priamo vyvolaním triedy a nie vytvorením jej inštancie.
Príklad:
public class Details { public static void stat(){ Console.WriteLine('Static method invoked'); } } public class Program { public static void Main(string() args) { Details.stat(); } }
Výstupom tohto programu bude:
Vyvolaná statická metóda
Vysvetlenie
Vo vyššie uvedenom príklade sme vytvorili triedu „Podrobnosti“, ktorá obsahuje statickú metódu „stat“. Máme ďalšiu triedu „Program“, ktorá obsahuje hlavnú metódu. V našich predchádzajúcich témach sme videli, ako môžeme inicializovať triedu na prístup k metódam. Ale ako sme už hovorili, k statickým členom triedy je možné pristupovať pomocou inicializácie objektu triedy.
V hlavnej metóde sme teda práve vyvolali metódu pomocou triedy priamo bez vytvorenia ľubovoľného objektu. Výstupom programu bol kód napísaný vo vnútri statickej metódy. V tomto prípade sme vytlačili správu pre konzolu.
Statická trieda v C #
Statická trieda je podobná normálnej triede v C #. Statická trieda môže mať iba statické členy a nemožno ju vytvoriť inštanciou. Statická trieda sa používa na zabezpečenie toho, že trieda nie je inštancovaná. Statická trieda je deklarovaná pomocou kľúčového slova static pred triedou kľúčového slova počas deklarácie.
Príklad:
public static class Details { public static void multiply(int a, int b){ int c = a*b; Console.WriteLine('Multiplication result is: '+c); } } public class Program { public static void Main(string() args) { Details.multiply(2,8); } }
Výstupom tohto programu bude:
Výsledok násobenia je: 16
Vysvetlenie
Vo vyššie uvedenom príklade sme vytvorili statickú triedu „Podrobnosti“ a vo vnútri statickej triedy sme vytvorili ďalšiu statickú metódu „znásobiť“. V metóde máme niekoľko úryvkov kódu, ktoré chceme vykonať. Máme tiež ďalšiu triedu „Program“ s hlavnou metódou.
Vo vnútri hlavnej metódy sme vyvolali metódu násobenia prítomnú vo vnútri statickej triedy. Ak sa pozriete na našu hlavnú metódu, uvidíte, že sme neinicializovali ani nevytvorili objekt pre statickú triedu, ale namiesto toho sme priamo vyvolali triedu z hlavnej metódy.
Keď teda priamo vyvoláme metódu multiply pomocou názvu triedy a poskytnutím parametrov, vykoná kód a vytlačí výstup.
Štruktúry v C #
Entita typu hodnoty v C # sa nazýva štruktúra. Pomáha používateľovi ukladať súvisiace údaje niekoľkých rôznych typov údajov do jednej premennej. Ako je uvedené, štruktúra je entita hodnotového typu, ktorá obsahuje polia, metódy, konštruktory, operátory, udalosti atď. Štruktúra je deklarovaná pomocou kľúčového slova „struct“.
Vlastnosti štruktúr:
- Môže obsahovať konštanty, metódy, vlastnosti, index, operátory, konštruktory atď.
- Nemôže mať žiadny predvolený konštruktor.
- Môže implementovať rozhranie, ale nemôže dediť s inými štruktúrami alebo triedami.
- Štruktúry sa musia inicializovať použitím nového kľúčového slova na použitie.
Rozdiel medzi štruktúrou a triedou
Štruktúra a trieda sa môžu navzájom nejako podobať, majú však niekoľko rozdielov.
Rozdiely zahŕňajú:
- Štruktúra je typ hodnoty, zatiaľ čo trieda je referenčný typ.
- Nové kľúčové slovo je potrebné na inicializáciu štruktúr.
- Štruktúry môžu mať iba parametrizovaný konštruktor a na druhej strane môže mať trieda predvolené aj parametrizované konštruktory.
Štruktúra: definícia
Štruktúru je možné definovať pomocou kľúčového slova struct. Štruktúra môže definovať nový dátový typ s niekoľkými rôznymi členmi programu.
Štruktúru je možné inicializovať podobným spôsobom ako pri inicializácii objektu, t. J. Použitím nového kľúčového slova. Pretože štruktúra je entita hodnotového typu, je operatívna rýchlejšie ako objekt triedy. Všade, kde je potrebné ukladať údaje, musíme použiť štruktúru. Na druhej strane, ak potrebujete preniesť údaje, je vhodné použiť triedu ako štruktúru.
Príklad:
public struct Cuboid { public int length; public int width; public int height; } public class Program { public static void Main(string() args) { Cuboid cb = new Cuboid(); cb.length = 10; cb.width = 20; cb.height = 30; Console.WriteLine('The volume of cuboid is: {0}', (cb.length*cb.width*cb.height)); } }
Výstupom tohto programu bude:
Objem kvádra je: 6000
Vysvetlenie
Vo vyššie uvedenom príklade sme definovali štruktúrny kváder, do ktorého sme ukladali dátové typy pre dĺžku, šírku a výšku kvádra. Máme ďalší triedny program, kde máme svoju hlavnú metódu.
V hlavnej metóde inicializujeme štruktúru „Cuboid“ pomocou nového kľúčového slova. Potom sme pomocou objektu volali a priraďovali hodnoty dátovým typom uloženým v štruktúre. Potom sme vykonali operáciu s premennými zo štruktúry a výsledok vytlačili na konzolu.
Ak teda chcete použiť ľubovoľnú vlastnosť, udalosť alebo metódu, musí byť štruktúra inicializovaná pomocou nového kľúčového slova, inak vám spôsobí chybu kompilácie.
Vyčísľuje v C #
Enum je sada celočíselných konštánt a podobne ako štruktúra je tiež entitou hodnotového typu. Používa sa hlavne na deklaráciu zoznamu celých čísel pomocou kľúčového slova „enum“ vo vnútri menného priestoru, triedy alebo dokonca štruktúry. V enume poskytneme každej z celočíselných konštánt názov, aby sme ich mohli odkazovať pomocou ich príslušných mien.
Enum môže mať pevný počet konštánt. Pomáha zvyšovať bezpečnosť a dá sa s ňou aj prechádzať.
webové stránky na stiahnutie youtube videí do mp3
Vlastnosti Enum
- Enum zlepšuje čitateľnosť a udržiavateľnosť kódu tým, že dáva konštantám zmysluplné názvy.
- Enum nemožno použiť s konštantami typu reťazca.
- Enum môže obsahovať konštanty ako int, long, short, byte atď.
- Hodnota konštánt enum štandardne začína nulou
Vyhlásenie enum
Syntax deklarácie enum je uvedená nižšie.
enum { list of integer constants };
Všetky konštanty výčtu majú predvolené hodnoty. Hodnota začína na 0 a posúva sa po jednej nahor.
Príklad:
public enum Cuboid{ length, width, height } public class Program { public static void Main(string() args) { int l = (int)Cuboid.length; int w = (int)Cuboid.width; int h = (int)Cuboid.height; Console.WriteLine('The length is :{0}”, l); Console.WriteLine('The width is :{0}”, w); Console.WriteLine('The height is :{0}”, h); } }
Výstupom tohto programu bude:
Dĺžka je: 0
Šírka je: 1
Výška je: 2
Vysvetlenie
Pracovali sme s podobným príkladom, ktorý sme sa naučili počas štruktúry. V tomto príklade sme vytvorili výčet s názvom Cuboid. Tento výčet obsahuje tri členy, tj. Dĺžku, šírku a výšku.
Máme ďalší triedny program, v ktorom máme našu hlavnú metódu. Na prevod premenných typu enum na celočíselný typ sa použilo explicitné obsadenie, potom sme ich hodnoty uložili do rôznych premenných vo vnútri hlavnej metódy a vytlačili ich do konzoly.
Štandardne bude hodnota prvého výčtu nulová, druhá bude mať 1 atď. Keď sme teda tlačili hodnoty, dostali sme vyššie uvedený výstup.
Zmena hodnoty Enum
Enum tiež umožňuje používateľom zmeniť predvolený počiatočný index členov. Po zmene počiatočného indexu premennej budú mať nasledujúce členy aktualizované svoje hodnoty v prírastkovej postupnosti.
Priradme hodnotu prvému členovi výčtu, ktorý sme definovali v predchádzajúcom príklade, a pozrime sa, čo sa stane:
public enum Cuboid { length = 10, width, height } public class Program { public static void Main(string() args) { int l = (int)Cuboid.length; int w = (int)Cuboid.width; int h = (int)Cuboid.height; Console.WriteLine('The length is :{0}”, l); Console.WriteLine('The width is :{0}”, w); Console.WriteLine('The height is :{0}”, h); } }
Výstupom tohto programu bude:
Dĺžka je: 10
Šírka je: 11
Výška je: 12
Vysvetlenie
Keď sme prvému členu výčtu priradili hodnotu, potom budú všetkým nasledujúcim členom výčtu priradené prírastky tejto hodnoty. Ako sme definovali, prvá hodnota ako 10, následná hodnota 11 a ďalšia 12.
Používateľ môže priradiť ľubovoľnú hodnotu podľa vlastného výberu a všetci členovia výčtu dostanú automatické priradenie s prírastkom používateľom definovaných hodnôt.
Vlastnosti v C #
Vlastnosti v C # sú v podstate pomenovaným členom rozhrania, tried a štruktúr. Vlastnosti sú rozšírením členských premenných / metód štruktúry alebo triedy. Používajú sa na čítanie, zápis alebo zmenu hodnoty súkromných polí.
K vlastnostiam sa pristupuje rovnako ako k poliam. Majú prístupové zariadenia, pomocou ktorých je možné získavať, nastavovať a počítať hodnoty. Logiku môžeme dať aj pri nastavovaní hodnôt vo vlastnostiach. Môže sa tiež použiť so súkromnou triedou, ktorá obmedzuje prístup zvonku, ale zároveň umožňuje používateľovi používať vlastnosti na získanie alebo nastavenie hodnôt.
Čo sú to Accessors?
Pristupujúce osoby k majetku tvoria výroky, ktoré možno použiť na čítanie, zápis alebo výpočet danej vlastnosti. Vyhlásenie o majetku môže obsahovať get, set alebo oboje.
Príklad:
public class Cube { private int side; //Declare a Side property of type integer public int Side{ get{ return side; } set{ side = value; } } } public class Program { public static void Main(string() args) { Cube cb = new Cube(); cb.Side = 5; Console.WriteLine('The volume of cube is :{0}', (cb.Side * cb.Side* cb.Side)); } }
Keď sa vyššie uvedený úryvok kódu úspešne skompiluje a vykoná, pozoruje sa nasledujúci výstup.
Objem kocky je: 125
Vysvetlenie
Vo vyššie uvedenom príklade máme triedu „Kocka“, vnútri ktorej sme vyhlásili vlastnosť „Strana“ typu celé číslo. Potom sme dostali a nastavili vlastnosť tam, kde sme sa vrátili, a poskytli hodnotu premennej strane.
softvér pre voľný čas pre malé firmy
Máme ďalšiu triedu „Program“ s hlavnou metódou, vnútri ktorej sme inicializovali triedu Cube a poskytli hodnotu pre vlastnosť Side a potom sme vypočítaný výsledok vytlačili na konzolu.
Záver
V tomto tutoriáli sme sa dozvedeli o členských funkciách triedy. Členská funkcia môže pracovať s akýmkoľvek objektom triedy, kde je prítomná. Dozvedeli sme sa tiež o konštruktéroch a deštruktoroch.
Konštruktory sa inicializujú automaticky v čase vytvárania objektov triedy, zatiaľ čo deštruktory zničia triedu a používajú sa hlavne na odstránenie alokácie pamäte po dokončení vykonania. Konštruktory môžu byť dvoch typov, t. J. Predvolené a parametrizované.
Deštruktor neakceptuje žiadny parameter ani nevracia žiadnu hodnotu. Constructor aj Destructors majú názvy, ktoré sú úplne rovnaké ako názov triedy. Dozvedeli sme sa tiež o statických premenných a statickej triede a o tom, ako k nim možno získať prístup bez použitia akýchkoľvek inštancií triedy. Dozvedeli sme sa, že statická trieda môže mať iba statických členov.
Diskutovali sme tiež o štruktúrach alebo štruktúrach. Štruktúry sú entity typu hodnoty a pre prístup je potrebné ich inicializovať.
Diskutovalo sa aj o výčtoch a vlastnostiach C #. Enum je množina pomenovaných celočíselných konštánt. Podobne ako štruktúra, je to tiež entita hodnotového typu. Výčet bude mať svojich členov a každý člen bude mať svoju vlastnú predvolenú hodnotu.
Na záver sme si rozobrali vlastnosti, ktoré sú rozšírením členských premenných / metódy štruktúry alebo triedy. Používajú sa na získanie, nastavenie alebo zmenu hodnoty súkromných polí.
=> Tu si pozrite našu kompletnú sériu školení C #
Odporúčané čítanie
- Statické v C ++
- Dedenie v C ++
- Triedy a objekty v C ++
- Používanie triedy výberu selénu na prácu s prvkami rozbaľovacej ponuky na webovej stránke - Výučba selénu č. 13
- Runtime polymorfizmus v C ++
- Funkcie priateľov v C ++
- Posmievanie súkromných, statických a neplatných metód pomocou makety
- C # triedy a objekty: Podrobný návod s príkladmi