c concepts constructor
Ovaj vodič objašnjava neke od važnih koncepata u programiranju na C #, poput konstruktora, destruktora, statičke klase, struktura i nabrajanja:
U jednom od naših prethodnih vodiča o objektima i klasama naučili smo što su klasa i objekt.
Objekt je sličan stvarnom svijetu, a klasa je logična zbirka sličnih vrsta predmeta. To je jedan od najvažnijih tipova prisutnih u C #. U ovom uputstvu zaronit ćemo duboko u ostale srodne koncepte C #.
=> Ovdje istražite kompletnu seriju C # treninga
U ovom uputstvu učit ćemo o nekim važnim aspektima nastave i kako ih možemo koristiti u našim programima. Pokušat ćemo stvoriti jednostavne C # programe na temelju koncepata koje smo naučili u našim prethodnim vodičima.
Što ćete naučiti:
- Što je konstruktor u C #?
- Destruktori u C #
- Statični članovi u klasi
- Statička klasa u C #
- Strukture u C #
- Razlika između strukture i klase
- Struktura: Definicija
- Popisi u C #
- Svojstva u C #
- Zaključak
- Preporučena literatura
Što je konstruktor u C #?
Konstruktor je posebna vrsta metode u programskom jeziku C # koja se poziva ili poziva automatski kada se stvori objekt zadane klase.
Njegova glavna funkcija je inicijalizacija članova podataka novostvorenog objekta. Jedno od najizrazitijih obilježja konstruktora je njegovo ime. Ima isto ime kao i razred.
Konstruktori su u osnovi dvije vrste:
- Zadano
- Parametarizirano
C # Zadani konstruktor
Kao što i samo ime govori, zadani konstruktor je osnovni konstruktor klase. Nema argumenata i izravno se poziva u vrijeme stvaranja objekta.
public class Program { public Program(){ Console.WriteLine('Constructor has been invoked'); } public static void Main(string() args) { Program p = new Program(); } }
Rezultat sljedećeg programa bit će:
Pozvan je konstruktor
Obrazloženje
Definirali smo konstruktor 'Program' unutar klase 'Program'. Sada kada inicijaliziramo klasu unutar glavne metode, konstruktor se automatski poziva.
Stoga će se pozvati bilo koji isječak koda koji smo zadržali u konstruktoru. Ovdje smo ispisali poruku 'Konstruktor je pozvan' unutar vitičastih zagrada konstruktora, pa kad inicijaliziramo klasu, konstruktor će se prema zadanim postavkama inicijalizirati i poruka će se ispisati kao izlaz.
Parametarski konstruktor
Kao što i samo ime govori, parametrizirani konstruktori su konstruktor s parametrima. Ovi se konstruktori koriste za prosljeđivanje različitih vrijednosti objektima.
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); } }
Rezultat sljedećeg programa bit će:
koji su glavni pružatelji usluga e-pošte
Zbroj je: 5
Obrazloženje
U našem prethodnom primjeru sa zadanim konstruktorom, imamo glavnu metodu u istoj klasi. U ovom primjeru imamo glavnu metodu u drugoj klasi.
Imamo jednu klasu nazvanu 'Detalji' koja sadrži parametarski konstruktor koji prihvaća dvije cjelobrojne vrijednosti. Unutar konstruktora ispisujemo zbroj cijelih brojeva. Imamo još jedan razred pod nazivom „Program“ koji sadrži našu glavnu metodu. Unutar glavne metode inicijalizirali smo klasu 'Detalji'.
Kao što je ranije objašnjeno, kada se klasa inicijalizira, njezini se konstruktori automatski pozivaju. Dakle, u ovom je slučaju pozvana naša metoda konstruktora 'Detalji' i kada smo proslijedili parametar tijekom inicijalizacije, on ispisuje izlaz.
Destruktori u C #
Destruktori su upravo suprotni konstruktorima. To je posebna metoda klase koja se poziva kada objekt klase izađe iz opsega. Slično konstruktoru, ime destruktora također je potpuno isto kao i ime klase, ali s prefiksom '~' (tilda).
Destruktor niti prihvaća bilo koji parametar niti vraća bilo kakvu vrijednost. Destruktor uništava objekte klase, stoga se uglavnom koristi za oslobađanje memorije nakon izvršavanja programa. Još jedna važna stvar koju treba napomenuti kod destruktora je da se on ne može niti preopteretiti niti naslijediti.
Primjer destruktora:
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(); } }
Rezultat sljedećeg programa bit će:
Pozvan je konstruktor
Pozvan je destruktor
Obrazloženje
Koristili smo isti primjer koji smo koristili za učenje konstruktora. Upravo smo dodali destruktor u klasu programa (~ Program). Kada inicijaliziramo objekt klase, poziva se konstruktor i kreira se objekt klase. Ovo ispisuje izraz 'Konstruktor je pozvan' na konzolu.
Kada je izvršenje dovršeno i objekt klase izađe iz opsega, program se kreće prema destruktoru. Tada se poziva destruktor, koji zauzvrat uništava objekt. Ovdje smo unutar destruktora ispisali poruku koja se nakon poziva destruktora ispisuje na konzolu.
Statični članovi u klasi
Članovi klase mogu se proglasiti statičkim pomoću ključne riječi static. Kad se objekt deklarira kao statički, bez obzira na broj stvorenih objekata, postojat će samo jedna kopija statičkog objekta.
Biti statičan implicira da će postojati jedan primjerak člana koji će postojati za određenu klasu. To znači da se vrijednost statičke funkcije ili varijable unutar klase može pozvati bez stvaranja objekta za njih.
Statičke varijable koriste se za deklariranje konstanti jer se njihove vrijednosti mogu dobiti izravno pozivanjem klase, a ne stvaranjem njezine instance.
Primjer:
public class Details { public static void stat(){ Console.WriteLine('Static method invoked'); } } public class Program { public static void Main(string() args) { Details.stat(); } }
Rezultat sljedećeg programa bit će:
Pozvana statička metoda
Obrazloženje
U gornjem primjeru stvorili smo klasu 'Detalji' koja sadrži statičku metodu 'stat'. Imamo još jedan razred 'Program' koji sadrži glavnu metodu. U našim prethodnim temama vidjeli smo kako možemo inicijalizirati klasu za pristup metodama. Ali kao što smo razgovarali, statičkim članovima klase može se pristupiti inicijalizacijom objekta klase.
Stoga smo u glavnoj metodi upravo pozvali metodu koristeći klasu izravno, a da nismo stvorili nijedan objekt. Rezultat programa je izvršio kôd napisan unutar statičke metode. U ovom smo slučaju na konzolu ispisali poruku.
Statička klasa u C #
Statička klasa slična je normalnoj klasi u C #. Statička klasa može imati samo statičke članove i ne može se instancirati. Statička klasa koristi se da se osigura da klasa nije instancirana. Statička klasa se deklarira korištenjem ključne riječi static prije ključne riječi tijekom klase tijekom deklaracije.
Primjer:
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); } }
Rezultat sljedećeg programa bit će:
Rezultat množenja je: 16
Obrazloženje
U gornjem primjeru stvorili smo statičku klasu 'Detalji', a unutar statičke klase stvorili smo još jednu statičku metodu 'množenje'. Unutar metode imamo nekoliko isječaka koda koje želimo izvršiti. Također imamo još jedan razred 'Program' s glavnom metodom.
Unutar glavne metode pozvali smo metodu množenja prisutnu unutar statičke klase. Ako pogledate našu glavnu metodu, vidjet ćete da nismo inicijalizirali ili kreirali objekt za statičku klasu, već smo izravno pozvali klasu iz glavne metode.
Dakle, kada izravno pozivamo metodu množenja pomoću naziva klase i davanjem parametara, ona izvršava kôd i ispisuje izlaz.
Strukture u C #
Entitet tipa vrijednosti u C # naziva se struktura. Korisniku pomaže u pohrani povezanih podataka nekoliko različitih vrsta podataka u jednu varijablu. Kao što je navedeno, struktura je entitet tipa vrijednosti koji sadrži polja, metode, konstruktore, operatore, događaje itd. Struktura se deklarira pomoću ključne riječi “struct”.
Značajke konstrukcija:
- Može sadržavati konstante, metode, svojstva, indeks, operatore, konstruktore itd.
- Ne može imati nijedan zadani konstruktor.
- Može implementirati sučelje, ali ne može nasljeđivati s drugim strukturama ili klasama.
- Strukture se moraju inicijalizirati upotrebom nove ključne riječi za upotrebu.
Razlika između strukture i klase
Struktura i klasa mogu se na neki način osjećati slični, ali oni imaju nekoliko razlika.
Razlike uključuju:
- Struktura je vrijednosni tip, dok je klasa referentni tip.
- Nova je ključna riječ potrebna za inicijalizaciju struktura.
- Strukture mogu imati samo parametarski konstruktor, a s druge strane, klasa može imati i zadane i parametrizirane konstruktore.
Struktura: Definicija
Struktura se može definirati pomoću ključne riječi struct. Struktura može definirati novi tip podataka s nekoliko različitih članova za program.
što je dat datoteka mac
Struktura se može inicijalizirati na način sličan onom inicijalizacije objekta, tj. Upotrebom nove ključne riječi. Kako je struct entitet tipa vrijednosti, njime se brže upravlja nego s objektom klase. Gdje god postoji potreba za pohranom podataka, trebamo koristiti struct. S druge strane, ako trebate prenijeti podatke, preporučljivo je koristiti klasu nego struct.
Primjer:
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)); } }
Rezultat sljedećeg programa bit će:
Volumen kuboida je: 6000
Obrazloženje
U gornjem primjeru definirali smo strukturni kuboid unutar kojeg smo pohranili tipove podataka za duljinu, širinu i visinu kuboida. Imamo još jedan razredni program u kojem imamo svoju glavnu metodu.
U glavnoj metodi inicijaliziramo strukturu “Cuboid” uporabom nove ključne riječi. Zatim smo koristili objekt za pozivanje i dodjeljivanje vrijednosti vrstama podataka pohranjenim u strukturi. Zatim smo izveli operaciju nad varijablama iz strukture i ispisali rezultat na konzoli.
Dakle, ako želite koristiti bilo koje svojstvo, događaje ili metode, struktura se mora inicijalizirati pomoću nove ključne riječi ili će vam se pojaviti pogreška u kompilaciji.
Popisi u C #
Enum je skup cjelobrojnih konstanti, a sličan strukturi, on je i entitet tipa vrijednosti. Uglavnom se koristi za deklariranje popisa cijelih brojeva pomoću ključne riječi 'enum' unutar prostora imena, klase ili čak strukture. U enumu dajemo ime svakoj od cjelobrojnih konstanti, tako da ih možemo uputiti koristeći njihova imena.
Enum može imati fiksni broj konstanti. Pomaže u poboljšanju sigurnosti, a može se i prijeći.
Značajke Enuma
- Enum poboljšava čitljivost i održivost koda pružajući smislena imena konstantama.
- Enum se ne može koristiti s konstantama tipa stringa.
- Enum može uključivati konstante poput int, long, short, byte itd.
- Prema zadanim postavkama vrijednost konstanti nabrajanja počinje s nulom
Proglašavanje enum
Sintaksa za deklariranje nabrajanja data je u nastavku.
enum { list of integer constants };
Sve enumske konstante imaju zadane vrijednosti. Vrijednost započinje s 0 i kreće se prema gore jedan po jedan.
Primjer:
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); } }
Rezultat sljedećeg programa bit će:
Duljina je: 0
Širina je: 1
Visina je: 2
Obrazloženje
Radili smo sa sličnim primjerom koji smo naučili tijekom struct. U ovom smo primjeru stvorili enum pod imenom Cuboid. Ova enum sadrži tri člana, tj. Duljinu, širinu i visinu.
Imamo još jedan program klase unutar kojeg imamo svoju glavnu metodu. Eksplicitni ulog korišten je za pretvorbu varijabli tipa nabrajanja u cijeli broj, zatim smo njihove vrijednosti pohranili u različite varijable unutar glavne metode i ispisali ih na konzolu.
Prema zadanim postavkama, vrijednost prvog nabrajanja bit će nula, drugog će imati 1 i tako dalje. Stoga, kada smo ispisali vrijednosti, dobili smo gore spomenuti izlaz.
Promjena vrijednosti nabrajanja
Enum također omogućava korisnicima da promijene zadani početni indeks članova. Nakon što promijenite početni indeks varijable, sljedeći će se članovi ažurirati u inkrementalnom slijedu.
Dodijelimo vrijednost prvom članu enuma koji smo definirali u našem prethodnom primjeru i pogledajmo što će se dogoditi:
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); } }
Rezultat sljedećeg programa bit će:
Duljina je: 10
Širina je: 11
Visina je: 12
Obrazloženje
Kad smo prvom članu nabrajanja dodijelili vrijednost, tada će svi sljedeći članovi nabrojavanja dobiti dodijeljeni prirast te vrijednosti. Kao što smo definirali, prva vrijednost je 10, sljedeća vrijednost postaje 11, a sljedeća 12.
Korisnik može dodijeliti bilo koju vrijednost prema vlastitom izboru i svi će članovi enuma dobiti automatsko dodjeljivanje s povećanjem korisnički definiranih vrijednosti.
Svojstva u C #
Svojstva u C # u osnovi su imenovani član sučelja, klasa i strukture. Svojstva su produžetak varijabli člana / metode struct ili klase. Koriste se za čitanje, pisanje ili promjenu vrijednosti privatnih polja.
Svojstvima se pristupa jednako kao i poljima. Imaju pristupnike pomoću kojih se mogu dobiti, postaviti i izračunati vrijednosti. Također možemo staviti logiku dok postavljamo vrijednosti u svojstvima. Također se može koristiti s privatnom klasom koja ograničava pristup izvana, ali istovremeno omogućuje korisniku da koristi svojstva za dobivanje ili postavljanje vrijednosti.
Što su pristupnici?
Pristupnici imovine čine izjave koje se mogu koristiti za čitanje, pisanje ili izračunavanje određenog svojstva. Izjava o svojstvu može sadržavati get, set ili oboje.
Primjer:
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)); } }
Kada se gornji isječak koda uspješno kompilira i izvrši, primjećuje se sljedeći izlaz.
Volumen kocke je: 125
Obrazloženje
U gornjem primjeru imamo klasu 'Kocka' unutar koje smo proglasili svojstvo 'Side' cijelog broja. Nakon toga imamo get i set svojstvo gdje smo se vratili i dali vrijednost varijabilnoj strani.
programi napisani na c ++
Imamo drugu klasu 'Program' s glavnom metodom unutar koje smo inicijalizirali klasu Cube i dali vrijednost za svojstvo Side, a zatim smo izračunati rezultat ispisali na konzolu.
Zaključak
U ovom uputstvu naučili smo o funkcijama članova razreda. Funkcija člana može raditi na bilo kojem objektu klase u kojem je prisutna. Također smo naučili o konstruktorima i destruktorima.
Konstruktori se automatski inicijaliziraju u vrijeme stvaranja objekta klase, dok destruktori uništavaju klasu i uglavnom se koriste za uklanjanje alokacije memorije nakon završetka izvršenja. Konstruktori mogu biti dvije vrste, tj. Zadani i parametrizirani.
Destruktor ne prihvaća nijedan parametar niti vraća bilo kakvu vrijednost. I konstruktor i destruktori imaju imena koja su potpuno ista kao i imena klase. Također smo naučili o statičkim varijablama i statičkoj klasi i kako im se može pristupiti bez upotrebe instanci klase. Doznali smo da statička klasa može imati samo statičke članove.
Također smo razgovarali o strukturama ili strukturama. Strukture su entiteti vrijednosnog tipa i trebaju se inicijalizirati za pristup.
Također se raspravljalo o enumu i svojstvima C #. Enum je skup imenovane cjelobrojne konstante. Slično strukturi, on je također entitet tipa vrijednosti. Popis će imati svoje članove i svaki će član imati svoju zadanu vrijednost.
Na kraju smo razgovarali o svojstvima koja su produžetak varijabli člana / metode struct ili klase. Koriste se za dobivanje, postavljanje ili promjenu vrijednosti privatnih polja.
=> Pogledajte našu cjelovitu seriju C # treninga ovdje
Preporučena literatura
- Statički u C ++
- Nasljeđivanje u C ++
- Razredi i objekti u C ++
- Korištenje selenijske klase za rukovanje padajućim elementima na web stranici - Vodič za selenij br. 13
- Runtime polimorfizam u C ++
- Funkcije prijatelja u C ++
- Ismijavanje privatnih, statičkih i praznih metoda korištenjem Mockita
- C # klase i objekti: produbljeni vodič s primjerima