Showing posts with label method. Show all posts
Showing posts with label method. Show all posts

Tuesday, April 07, 2020

Funkcije u C# programskom jeziku


Prošli put smo učili Nizove u C# programskom jeziku, dok ćemo danas učiti još jednu interesantnu i korisnu stvar; funkcije. Bez obzira da li ste početnik u programiranju i bez obzira da li ste do sada učili funkcije u C# programskom jeziku, definitivno ste ih koristili čak i u vašem prvom C# programu. Funkcije predstavljaju jednu izdvojenu celinu naredbi koji izvršavaju neki zadatak. Funkcije pravite kada imate potrebu da deo koda izdvojite i stavite u jednu celinu ili kad imate potrebu da jedan deo koda više puta koristite u programu. Jednostavnije je da pišete samo jednom kod i da ga pozovete kad god vam treba nego da pišete isti kod. Na primer imate funkciju koja latinična slova konvertuje na ćirilična slova. Kad god hoćete da nešto napišete na ćirilici samo pozovete funkciju koja to radi. Isto tako na primer; kad imate neku grešku, ispravljate je samo na jednom mestu u funkciji a ne sto puta u celom kodu. Funkcije često nazivaju metodama, što one i jesu. Ali mnogo programera danas meša pojam metode sa funkcijama jer postoji razlika. Metode nisu samo funkcije, već predstavljaju i druge članove klase i strukture koji ne predstavljaju podatke. Znači metode su i indekseri, operatori, konstruktori i destruktori. Čak i svojstva se ponekad smatraju metodama, ali treba znati da svojstva imaju samo karakteristike metoda i atributa, ali svojstva nisu ni metode ni atributi. Ovo je bitno da znate najviše radi testova koji se polažu za Microsoft sertifikate. I pored toga što su funkcije u C# programskom jeziku slične funkcijama u C i C++ programskom jeziku, funkcije u C++ programskom jeziku možete pogledati ovde; one se takođe razlikuju. C# programski jezik ne podržava globalne metode. Svaku funkciju morate pisati unutar klase. U C# programskom jeziku nije moguće koristiti blokove za grupisanje modifikatora poput public ili private već se u C# programskom jeziku funkcije ali i ostale metode moraju deklarisati sa modifikatorima. Modifiers - modifikatori vam određuju rang delovanja promenjive, funkcije, strukture, metode i klase na nivou celog Solution – rešenja. Osnovni modifikatori pristupa su:
  •          Public – javan, bez restrikcija.
  •      Protected Internal – limitiran na program, klasu i izvedene klase
  •          Internal – limitiran na program i klasu
  •          Protected – limitiran na klasu i izvedene klase.
  •          Private – limitiran samo na klasu

Pored navedeni modifikatora obavezno trebate obratiti pažnju i na ključnu reč: 
  • static – omogućava da nam nije potrebno da instaciramo klasu kako bi smo pristupili članu klase

Postoje i drugi modifikatori kojima pravimo anonimne ili asinhronizovane funkcije ali o njima će biti posebno pisano u narednim postovima. 
  

( Funkcije mogu da vraćaju i ne vraćaju vrednost )

U C# programskom jeziku imate jednu specijalnu funkciju, funkcije koje ne vraćaju vrednost i funkcije koje vraćaju vrednost. Svaka od njih može uzimati argumente. Specijalna funkcija ili funkcija koju poznajete kao Main() funkcija se koristi kao startna pozicija svakog programa. Može postojati samo jedna funkcija Main() u jednoj klasi ali u drugačijem imenskom prostoru.

static void Main(string[] args) {}

Ako bi ste napravili neku klasu u istom inenskom prozoru i u njoj navedenu funkciju dobili bi ste grešku:
  • Program has more than one entry point defined. Compile with /main to specify the type that contains the entry point.

Zato možete imati na primer više formi u projektu gde svaka forma ima svoju Main() funkciju, ali to je zato što svaka forma ima drugačiji imenski prostor. Takođe vidimo da Main() funkcija prihvata argumente u args niz tipa string. I takođe vidimo ključnu reč void koja nam potvrđuje da navedena funkcija ne vraća nikakvu vrednost, već se program završava kad se funkcija izvrši do kraja. Ovu funkciju nikad ne trebate menjati i posebno ne trebate da pravite neku svoju.

Funkcije koje ne vraćaju vrednost

Sunday, June 05, 2016

Šta su generici i kako se prave?


Pod pojmom generici u većini slučajeva se podrazumevaju sve klase koje sadrži imenski prostor System.Collection.Generic. Često se generičke klase, generičke liste ili uopšteno sve generičke kolekcije svrstavaju pod pojmom generici, ali za iskusnije programere kad kažete generici to se uglavnom misli na generičke klase, metode, strukture i sve što zahteva parametre. Znači češće se misli na nešto što ste vi sami isprogramirali da bude generičko dok pod pojmom generičke liste se misli na generičke liste koje već postoje u imenskom prostoru System.Collection.Generic. U prethodnom postu „Negeneričke kolekcije u C# programskom jeziku“ sam objasnio šta su negeneričke kolekcije, koje postoje u System.Collection imenskom prostoru i dao sam vam jednostavan primer kako da pravite vlastitu negeneričku klasu iako se takve retko prave. Takođe sam vam naveo da su generičke kolekcije za razliku od negenerički kolekcija; one kolekcije koje su parametorizovane; znači moraju imati određen tip podataka i svi elementi u kolekciji moraju biti istog tipa podataka.


( Generici u C# programskom jeziku )


Jednostavno, generičke kolekcije koriste se kad želite da svi elementi u kolekciji budu istog tipa podataka i zato su type safe. Izuzetno su korisni kada želite da izbegnete hard kodirane tipove i ne morate da pamtite koja vrsta podataka se koristi. Takođe nemate potrebe ni za eksplicitnom konverzijom. To se sve odnosi i na generike i na generičke liste i uopšteno na sve generičke kolekcije. Inače pod pojmom generici ću se isključivo baviti pravljenjem vlastitih generički kolekcija. Vi ćete u vašim programima često koristiti već napravljene generičke liste iz klasa .Net-a, ali će te takođe često dolaziti u situaciju da sami pravite svoje generike. Još samo jedna napomena. Ukoliko pravite igrice, korišćenje uopšteno svih kolekcija se smatra skupo, uzima više memorije i može usporiti igricu, pa u tom slučaju preporučujem da izbegavate kolekcije iako programerima olakšavaju posao. Inače u poslovnim aplikacijama, kolekcije se koriste konstantno ali generičke kolekcije. Kada pokrenete Microsoft Visual Studio, primetiće te da se imenski prostor System.Collection.Generic insertuje u vašim aplikacijama dok to nije slučaj sa imenskim prostorom System.Collection. To vam je takođe znak da treba da koristite generičke kolekcije ako već koristite kolekcije.

Generička klasa sa jednim parametrom

Wednesday, February 10, 2016

Apstraktne klase u C# programskom jeziku



Svaka klasa koja sadrži ključnu reč abstract i koja ima najmanje jednu apstraktnu metodu se naziva apstraktna klasa. Apstraktna metoda je metoda koja sadrži ključnu reč abstract i koja nema ni telo ni implementaciju. Apstraktna klasa ne može da se instancira dok svaka njena apstraktna metoda mora da bude nadjačana u svakoj ne apstraktnoj klasi koja nasleđuje apstraktnu klasu. To jednostavno znači da apstraktnu klasu i njene apstraktne metode koristite kad niste sigurni kakva će biti implementacija neke metode ali vam je ta metoda neophodna. Apstraktna klasa je u svakom slučaju nepotpuna klasa. 


( Apstraknta klasa je klasa koja ne može imati objekte )

Na primer, pretpostavite da u vašem projektu morate imati klasu koja predstavlja konekciju sa bazom podataka, međutim vi ne znate kakve će sve baze koristiti kompanija za koju radite projekat.


public abstract class Connection
{
public abstract string ConnectionString();

}

Tada pravite apstraktnu klasu sa apstraktnom metodom koja predstavlja konekciju sa bazom podataka i ostavljate kompaniji da prilikom korišćenja vaše apstraktne klase u drugoj klasi nadjačaju metodu za konekciju i definišu njeno ponašanje.

class Program : Connection
{
public override string ConnectionString()
       {
return "ConnectionString for the database!";

}          
}

Na ovaj način svako ko na primer hoće da vidi tabelu zaposlenih mora implementirati konekciju sa bazom podataka u kojoj se podaci zaposlenih nalaze. Možda kompanija ima posebnu bazu podataka i tabelu zaposlenih u Beogradu i jednu drugu u Novom Sadu i podaci su fizički odvojeni, što nije praksa ali se dešava kad velika kompanija kupi malu. Onda vaša apstraktna klasa je idealno rešenje za sve vaše konekcije sa bazama podataka.

Koje su još stvari bitne za apstraktnu klasu? 

Monday, February 08, 2016

Statičke klase, metode, konstruktori i promenjive u C# programskom jeziku



Kao što bi to Microsoft programeri rekli, statička klasa vam je u osnovi isto što i klasa koja nije statička ali sa tom razlikom što se statička klasa ne može instancirati. Drugim rečima, ne možete koristiti ključnu reč new za stvaranje promenjive tipa klase. Prva stvar koju treba da znate o statičkim klasama je da ih nikad ne pravite iako samo pretpostavljate da će se klasa nasleđivati. Statičke klase ne možete nasleđivati i jednostavno se podrazumeva da je svaka statička klasa i sealed klasa i bez korišćenja ključne reči sealed. Znači statičku klasu pravite samo ako ste sigurni da se nikad klasa koju pravite neće nasleđivati.  


( Statički članovi štede memoriju prilikom svake inicijalizacije klase )


Statičke klase se jednostavno prave umetanjem ključne reči static ispred ključne reči class prilikom pravljenja klase, ali i svaka statična klasa mora da sadrži samo statičke članove. U Visual Basic-u se umesto static koristi ključna reč Shared i često će te čuti Visual Basic programere da statičku klasu zovu deljena klasa ili statičku metodu zovu deljena metoda, što statičke klase i jesu. Samo to nemojte da mešate sa partial klasama koje dele klasu u više fajlova. Kad kažu za statičku klase da je deljena klasa misli se na deljene memorijski resursa jer statički članovi štede memoriju. Pogledajte inicijalizaciju klase koja nije statična kroz objekat klase.

Rectangle rectangle = new Rectangle();
WriteLine(rectangle.CalculateArea(5, 7));
WriteLine(rectangle.CalculateArea(8, 9));

Vi pozivate metodu CalculateArea preko objekta. Međutim dovoljno je samo metodu napraviti statičnu i jednostavno je pozivate preko klase.

Rectangle rectangle = new Rectangle();
WriteLine(Rectangle.CalculateArea(5, 7));
WriteLine(Rectangle.CalculateArea(8, 9));

Ukoliko je klasa statična, onda ne morate ni praviti inicijalizaciju objekta.

WriteLine(Rectangle.CalculateArea(5, 7));
WriteLine(Rectangle.CalculateArea(8, 9));

Ako imenujete namespace kao statičan, npr:

using static StaticClass.Rectangle; // StaticClass je ime programa

Tada možete pisati još kraće kod.

WriteLine(CalculateArea(5, 7));
WriteLine(CalculateArea(8, 9));

Razumevanje statičkog konstruktora

Thursday, December 03, 2015

Funkcije u C# programskom jeziku


Funkcije predstavljaju izdvojeni celoviti skup naredbi koji izvršavaju određeni zadatak. Kad god imate veliki zadatak i imate potrebu da ga podelite u manje celine, ili jednostavno kad jedan dio koda hoćete više puta da izvršavate u kodu, onda pravite funkciju. Danas da radite na bilo kojem projektu bez funkcija je nezamislivo. Zamislite da u vašem programu hoćete da na više mesta pretvorite milje u kilometre. Da ne bi ste pisali više puta isti kod, vi će te jednostavno napraviti funkciju koja pretvara milje u kilometre i pozivati funkciju kad god vam treba takvo konvertovanje. U programiranju se isti kod skoro nikad ne piše dva puta i ako dođe do neke greške dovoljno je da ispravite vaš kod jednom u funkciji. Inače, bez funkcija bi ste morali prepravljati kod na svim mestima gde ste pretvarali milje u kilometre, dok veličina koda bi bila mnogostruka.



( Statična funkcija koja vraća vrednost u C# programskom jeziku )

Funkcije često nazivaju metodama, što one i jesu. Ali mnogo programera danas meša pojam metode sa funkcijama jer postoji razlika. Metode nisu samo funkcije, već predstavljaju i druge članove klase i strukture koji ne predstavljaju podatke. Znači metode su i indekseri, operatori, konstruktori i destruktori. Čak i svojstva se ponekad smatraju metodama, ali treba znati da svojstva imaju samo karakteristike metoda i atributa, ali svojstva nisu ni metode ni atributi. Ovo je bitno da znate i radi testova koji se polažu za Microsoft sertifikate. I pored toga što su funkcije u C# programskom jeziku slične funkcijama u C i C++ programskom jeziku, funkcije u C++ programskom jeziku možete pogledati ovde; one se takođe razlikuju. C# programski jezik ne podržava globalne metode. Svaku funkciju morate pisati unutar klase. U C# programskom jeziku nije moguće koristiti blokove za grupisanje modifikatora poput public ili private već se u C# programskom jeziku funkcije ali i ostale metode moraju deklarisati sa modifikatorima. Modifiers - modifikatori vam određuju rang delovanja promenjive, funkcije, strukture, metode i klase na nivou celog Solution – rešenja. Osnovni modifikatori pristupa su:
  • Public – javan, bez restrikcija.
  • Protected Internal – limitiran na program, klasu i izvedene klase
  • Internal – limitiran na program i klasu
  • Protected – limitiran na klasu i izvedene klase.
  • Private – limitiran samo na klasu
Pored navedeni modifikatora obavezno trebate obratiti pažnju i na:
  • Static – omogućava da nam nije potrebno da instaciramo klasu kako bi smo pristupili članu klase
Postoje i drugi modifikatori kojima pravimo anonimne ili asinhronizovane funkcije ali o njima će biti posebno pisano u narednim postovima. Inače, najbitnija podela funkcija je podela na funkcije koje ne vraćaju nikakvu vrednost i funkcije koje vraćaju neku vrednost.

Funkcije koje ne vraćaju vrednost