Showing posts with label override. Show all posts
Showing posts with label override. Show all posts

Tuesday, February 23, 2016

Object klasa u C# programskom jeziku


Već vam je poznato da klasu možete da posmatrate i kao šablon objekta, dok za objekat možete da kažete da je objekat instanca klase. Međutim, šta je Object klasa? U mnogim programskim jezicima, tako i u C# programskom jeziku, za sve klase postoji koreni tip iz koga se izvode svi ostali objekti u hijerarhiji. Tako su sve .NET klase u krajnjoj liniji izvedene ili preciznije rečeno nasleđene iz klase Object koja se nalazi u imenskom prostoru System (System.Object). Ukoliko u C# programskom jeziku ne naznačite da je neka klasa izvedena iz druge klase, kompajler automatski pretpostavlja da je navedena klasa izvedena iz klase Object. Što u praksi znači da vi automatski imate pristup velikom broju javnih i zaštićenih metoda članova koji su već definisani za klasu Object. Ove metode su vam takođe dostupne i u svim drugim klasama koje definišete.

 
( Metode Object klase u C# programskom jeziku )

Isto tako kada koristite u vašim deklaracijama tip object, on definitivno predstavlja krajnji roditeljski tip iz kog se dalje izvode svi izvorni i korisnički definisani tipovi. Ključna reč ili tip object je samo alias za System.Object klasu. To je najključnija stvar u C# programskom jeziku po kojoj se C# programski jezik razlikuje od C++ programskog jezika. Pre nego što pređemo na praktičan primer kako se koristi klasa Object, pogledajte spisak metoda koji su definisani u klasi Object.
  • ToString() – Vraća objekat u obliku string.
  • GetHashCode() – Koristi se prilikom implementiranja rečnika (heš tabela).
  • Equals(Object) – Poredi jednakost primerka objekta.
  • Equals(Object, Object) – Poredi jednakost dva primerka objekta.
  • ReferenceEquals(Object, Object) – Proverava da li se dve reference odnose na isti objekat.
  • GetType() – Vraća detalje tipa objekta.
  • MemberwiseClone() – Pravi površnu kopiju objekta.
  • Finalize() – Ovo je .NET verzija destruktora.
Da bi ste koristili navedene metode u vašim klasama, većinu njih treba da prekoračite sa ključnom rečju override i napišete vašu implementaciju. U praksi bi na primer svaka klasa trebala da ima svoju implementaciju metode ToString() inače svako ko koristi vašu klasu može pozvati metodu ToString() jer vaša klasa je izvedena iz Object klase; ali ako niste implementirali ovu metodu, nećete dobiti rezultat koji očekujete.

Kako u praktičnom primeru da koristimo navedene metode? 
 

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?