You are on page 1of 4

1. Sta su klase?

Klasa predstavlja jedan od blokova za izgradnju aplikacija(aplikacija je sastavljena od mnogo


klasa koje reaguju jedna sa drugom). Klasa tj. klasa podataka je specijalan tip podataka koji je
definisan od strane programera da opiše tj. imitira (simulira) realno postojeće objekte (real world
objects). Telo klase sadrži metode i polja, naime, promenjive u klasi se nazivaju polja.

Post - Ime klase


Title: string
Description: string - Atributi(Polja)
DateTime: DateTime

Publish()
Like() - Ponasanje(Metode/Funkcije)
Comment(message)

STATIC klasa – ne može imati objekte, sadrži statičke vrednosti atributa (konstante) i statičke
metode, poziva se nazivom klase, nakon čega sledi naziv atributa ili metoda.

Console.WriteLine();

2. Sta je objekat?

Objekat je konkretan primerak složenog tipa podatka. „Klase“ obuhvataju ne samo varijable već
i funkcije tj. metode objekata. Metode tj. funkcije objekata opisuju akcije koje mogu neki objekti
da obavljaju. Jasno je da neki objekat nije okarakterisan samo atributima koji opisuju ‘’izgled’’
nekog objekta već i „metodama“ koje objekat može da vrši. Objekat predstavlja instancu
klase.

3. Sta je enkapsulacija?

Enkapsulacija je skrivanje implementacije.Realizuje se korišćenjem modifikatora pristupa.


Modifikator private omogućuje da se atribut ili metoda može koristiti samo na nivou klase, dok
izvan klase nije vidljiv. Modifikator protected omogućava da atributi ili metode mogu biti
vidljivi na nivou te klase i svih klasa naslednika.Preporučljivo je da se atributi uvek deklarišu
kao privatni i da se omogući minimalni pristup atributima putem public property. Preporučljivo
je da se vrednost atributa može menjati kroz izvršavanje metoda.

Enkapsulacija, enkapsuliranje što u prevodu znači zamotavanje je način da vi sakrijete, zaštitite i


kontrolišete pristup podacima koji se nalaze u objektu. To radite tako što članovima klase
odredite rang vidljivosti, tj. odredite koji članovi klase su na primer javni, privatni, zaštićeni ili
interni. Na primer dok vi gledate realiti šou na TV, vas ne interesuje kako televizor prikazuje
realiti šou. Vas interesuje da gledate program. Tako isto kad koristite objekte, bilo da su objekti
vaši ili da je objekte neko drugi pravio; vi želite da objekti rade ono za šta su namenjeni, bez
obzira koliki vi uvid imate u ono kako tačno objekat radi. Znači, enkapsulaciju koristite u vašim
klasama kad hoćete da kontrolišete skrivenost članova klase koju će objekat da koristi.

4. Sta je polimorfizam?

Polimorfizam potice od reci “poly” – vise i “morph” – forma/oblik, u direktnom prevodu


polimorfizam predstavlja vise formi. Radi se o menjanju implementacije nasledjene metode.
Recimo polimorfizam mozemo postici koriscenjem abstraktnih klasa i interfejsa. Glavna ideja
oko polimorfizma je ta da baznu klasu, koju nasljeđuje više klasa mogu izvršavati iste funkcije
svaka na svoj način. Imamo primer bazne apstraktne klase Osoba koja ima metodu PredstaviSe().
Direktni naslednici ove klase mogu biti klasa Gost i klasa Zaposleni. Kasnije klasa Gost moze
imati naslednika VipGost, dok klasa Zaposleni moze imati naslednike poput klase Konobar,
klase Upravnik i klase Sef sale. Ako zelimo da se svaka osoba predstavi moramo definisati
metodu koja ce to omoguciti. Posto metoda PredstaviSe() vec postoji u baznoj apstraktnoj klasi
Osoba, polimorfizmom je mozemo iskoristiti i u klasama koje je direktno ili indirektno
nasledjuju tako sto cemo promeniti implementaciju metode PredstaviSe(), tako da se svaka osoba
predstavlja na drugaciji nacin istom metodom. To je u stvari polimorfizam.

5. Sta je nasledjivanje?

Nasledjivanje je jedan od osnovnih koncepata objektno orijentisanog programiranja. Klasa koja


je izvedena iz osnovne klase nasledjuje sve atribute I metode te klase uz mogucnost dopune I
izmene. Za osnovnu klasu se u literaturi cesto srece I naziv bazna klasa, natklasa ili superklasa.
Cesto korisceni termin za izvedenu klasu je podklasa. U programskom jeziku C# izvedena klasa
moze da nasledi samo jednu baznu klasu. Da bi se neka klasa definisala kao izvedena klasa neke
druge klase koristi se operator : (dve tacke). Ozanka public class B : A oznacava da je klasa B
izvedena iz klase A. Posle ovakve oznake dolazi definicija tela klase izvedene klase B unutar
viticastih zagrada. U nekim situacijama ce korisnik zeleti da zabrani nasledjivanje svoje klase.
To se postize koriscenjem kljucne reci final. Klasa koja u svojoj definiciji ma rec final ne moze
se naslediti.

6. Sta je apstraktna klasa?

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 neapstraktnoj 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.
Primer koriscenja apstraktne klase, imamo abstraktnu klasu Shape koja u sebi ima metodu
Draw(), dve klase nasledjuju klasu Shape, a to su Rectangle i Circle. U ovom slucaju u
abstraktnoj klasi Shape, metoda Draw() ce biti apstraktna. Previse je apstraktno opisati kako se to
crta Shape, ali nam je ta metoda potrebna za njene podklase Rectangle i Circle. Podklase su u
obavezi da implementiraju metodu Draw(), posto ta metoda u klasi Shape nema implemenatciju.
Tako da ce klase Rectangle i Circle pomocu kljucne reci override implementirati metodu Draw(),
svaka klasa na svoj nacin. Na ovaj nacin se postize polimorfizam.

public abstract class Shape {


public abstract void Draw();
}

7. Sta je konstruktor?

Konstruktor je metoda koja se poziva kada je instanca klase kreirana. Bitna pravila kod
konstruktora su ta da konstruktor mora imati isti naziv kao i klasa u kojoj se nalazi i nema return
tip, ne vraca nikakvu vrednost. U svakoj klasi postoji defaultni konstruktor(bez parametara) koji
ce biti koriscen u slucaju da se konstruktor ne definise. Sluzi za kreiranje objekata. U jednoj klasi
moze biti vise konstruktora sa razlicitim parametrima, odnosno drugacijim
potpisima(signatures), tako da u isto vreme mozemo imati vise konstruktora i pozivati onaj koji
nam u odredjenom trenutku najvise odgovara.

8. Sta je interfejs?

Interfejsi su veoma slicni klasama u smislu sintakse, ali su u osnovi potpuno drugaciji. Interfejsi
ne sadrze nista drugo osim deklaracija za metode, propertije, evente. Ne sadrze implementaciju.
Jedna od prednosti interfejsa je ta sto klasa ne moze da nasledjuje vise osnovnih klasa, ali zato
moze da implementuje vise razlicitih interfejsa. Interfejs je najjednostavnije receno “ugovor” o
tome sta ce biti implementirano, kompletno odvaja imena i potpise metoda, svojstava,
dogadjaja… od njihove implementacije. U praksi se interfejs oznacava sa velikim slovom I
ispred imema(IActivity), ne moze da sadrzi polja i ne moze se instancirati bas kao i apstraktna
klasa. Svaki clan interfejsa se podrazumeva da je javni, iako ispred clanova intefejsa ne ide
access modifier. Takodje interfejs moze da poziva druge interfejse, to se onda naziva re-
implementation.

- Kastovanje se koristi kada zelimo da izvrsimo konverziju iz tipa sa vecim kapacitetom u tip sa
manjim kapacitetom prilikom cega postoji mogucnost gubitka podataka.
string s = “1”;
int i = Convert.ToInt32(s);
int j = int.Parse(s);

- Verbatim string: string path = “C:\\projects\\project1\\folder1”;


string path = @”C\projects\project1\folder1”;
- Value types :
- primitive types, custom structures)
- alocirani na steku
- memorijsko alociranje se izvrsava automatski
- odmah obrisani kada su van prostora(out of scope)

- Reference Types
- klase(nizovi, stringovi, custom klase)
- memorija se mora alocirati
- memorija je alocirana na heap-u
- garbage collected by CLR

- Garbage collection – proces upravljanja memorijom, gde se memorija čisti od zaostalih instanci
objekata koji se ne koriste i-ili promenljivih. Ovo je mehanizam koji programmer ne kontroliše,
već se realizuje automatski. Svaka promenljiva ima oblast važenja u svom bloku naredbi i nakon
završetka bloka ili završetka procedure, sve promenljive se brišu iz memorije automatski.
- Nizovi imaju fiksiranu velicinu(unapred odredjenu), dok Liste imaju dinamicku velicinu.

You might also like