CSH 4: Klase i objekti


Klasa je korisnički izveden tip podataka koji se sastoji od polja različitog tipa i metoda. Klasa definiše podatak i njegovo ponašanje. Objekat je konkretan primerak klase.

Često se mešaju pojmovi klase i objekat. Klasa ustvari predstavlja tip objekta, kao što je npr. int tip neke celobrojne promenljive. Ako se klasa ne deklariše kao static, korisnik kod može koristiti kreiranjem objekata ili primeraka (instanci) koji se odnose na neku promenljivu. Ako se klasa deklariše kao static postoji tada samo jedna kopija u memoriji i korisnički kod mu može pristupiti kroz samu klasu, a ne preko primeraka.

Deklaracija klasa

public class Student 
{ 
    //Ovde se nalaze polja, svojstva, metode i događaji... 
}

Klase se deklarišu koristeći ključnu reč class
pre class="brush: csharp;" public class Student { //Ovde se nalaze polja, svojstva, metode i događaji... }

Ispred definicije klase se nalazi ključna reč public koja označava da svako može kreirati objekte koristeći ovu klasu. Zatim sledi class, i na kraju ime klase (Student). U okviru tela klase se definišu polja, svojstva, metode i događaji i to su ustvari članovi klase. Ukoliko ispred class ne stoji ništa, onda je po definiciji deklarisana sa internal, što znači da se samo može pristupiti kodu iz tog projekta u kom je definisana klasa. Klasa može da se deklariše i sa abstract (može se samo naslediti i imati abstraktne članove) ili sealed (eng. zatvoren- ne može se naslediti).

Kreiranje objekata

Objekti se kreiraju koristeći ključnu reč new nakon čega sledi ime klase objekta.

Student objekat1 = new Student();

Kada se kreira primerak klase, tada se vrši referenciranje objekta koji se naziva objekat1 tipa klase Student. Na ovaj način se vrši samo referenciranje novog objekta, ali taj objekat ne sadrži podatke. Nije poželjno referenciranje objekta kao npr:

Student objekat2;

Metode

Metod je podprogram (funkcija) koji manipuliše sa podacima koji su definisani u klasi i obezbeđuju pristup tim podacima. To znači da drugi delovi programa mogu pozivati metode i odrađivati neki problem. Metodi se sastoje od jedonog ili više izraza.  Dobro napisana metoda izvršava samo jedan zadatak. Svaki metod ima ime kojim se poziva taj metod. Ime metoda može biti bilo koje osim rezervisanih reči, a pri čemu počinje sa slovom, nema praznina, interpunkcijskih znakova itd. Imena promenljivih od imena metode se razlikuju, jer iza imena metode stoje male zagrade npr. GetVal().

Karakteristike klasa

• enkapsulacija,
• polimorfizam,
• nasleđivanje,

Enkapsulacija je programski mehanizam kojim se povezuju kod programa i podaci sa kojima se radi. Tako objekti, kod i podaci mogu biti privatni ili javni. Javni podaci su dostupni svim delovima programa, dok ako se definišu kao privatni, podacima se ne može pristupiti iz nekog dela programa koji se nalazi izvan definisanog objekta. 

Suština polimorfizma je da se objekti, kod ili operacije ponašaju različito u različitom kontekstu. U vreme kompajliranja nemamo način da odredimo koji će konkretni objekti to biti, ali u vreme izvršavanja za svaki objekat se pozivaju metode klase kojoj pripada, a ne roditeljske klase koja je deklarisana u vreme kompajliranja. 

Nasleđivanje je postupak kojim se svi članovi i atributi jedne klase prenose na drugu klasu koja se naziva izvedenom klasom. Za definisanje nasleđivanja treba poći od realnog primera. Primer: Definišimo dve klase: KAPITALISTA i RADNIK. Razmotrimo podatke koji se mogu pridružiti ovim entitetima. Npr. klasi KAPITALISTA prirodno je pridružiti podatke kapital i profit (brojni tipovi podataka) i funkciju profitiranje. Klasi RADNIK možemo dodeliti podatke plata i norma, i funkciju proizvodnja. Podaci i funkcije se vezuju za određenu osobu koja se može identifikovati adresom. Možemo definisati i klasu OSOBA koja sadrži podatak adresa i npr. funkciju pisanje. Zaključujemo da i klasa KAPITALISTA i klasa RADNIK pored već pridruženih podataka i funkcija članica treba da uključe podatke i funkcije sadržane u klasi OSOBA.

Koncept nasleđivanja je put ka formiranju organizovanih familija klasa koje mogu dalje da se proširuju. To u mnogome podseća na programerske biblioteke funkcija. Ukoliko postoji nasleđivanje, ono se mora odrediti u definiciji klase. Osnovna klasa se dodaje izvedenoj tako što se iza imene izvedene klase stave dve tačke (:). Na primer:

public class MojaIzvedenaKlasa : MojaOsnovnaKlasa
{
    //Članovi klase
}



Ostavite komentar





Komentari posetilaca


    Ovaj članak nema komentara.
    Budite prvi koji će ostaviti komentar!