You are on page 1of 22

KLASE

C#
 Klase (classes) su opisi koji definišu kako će se generisati objekti i koje
osobine i funkcionalnosti ti objekti poseduju.
 Klasa predstavlja strukturu u kojoj su grupisani podaci i funkcije, uključujući i
druge klase.

 Klase predstavljaju opise tj. šablone za opis zajedničkih karakteristika grupe


objekata. Klase se sastoje od članova (class members) različitog tipa. Klase
su kao šabloni kako treba da izgleda objekat, na primer objekat student. U
tom slučaju bi i klasu nazvali class Student.

 Podaci klasnih tipova predstavljaju primerke (instances) i nazivamo


ih objektima (objects).

 Promenljiva klasnog tipa je pokazivač u statičkoj memoriji na objekat koji se


nalazi u dinamičkoj memoriji.
Član klase može biti polje (field) za podatke, metoda (method) koje predstavljaju
funkcije klase, konstruktor, destruktor, svojstvo, indekser, druga klasa

 Deklaracija klase
 class ime_klase : NazivOsnovneKlase
{
modifikator tip polje;
...
modifikator tip metoda(parametri);
...
}
Polje klase

 imeTipa imePolja = početnaVrednost, imePolja2,..;


 Klasom se definiše novi korisnički tip. Instance klase nazivaju se objekti. Svaki
objekat ima svoje sopstvene elemente koji su navedeni u deklaraciji klase.

 Ovi elementi nazivaju se članovi klase. Kreiranje objekata se vrši


operatorom new, članovima se pristupa preko operatora . (tačka):

 objekat.clan
 Unutar klase, možemo koristiti reč this. Time se označava da se pristupa
članu tekućeg objekta:
this.clan

 Za pristup članu sopstvene klase može se koristiti samo ime člana klase:
clan

 Za pristup članovima se koristi modifikator koji može


biti: public, private, protected, protected internal i internal.
PUBLIC
The type or member can be accessed by any other code in the same assembly or another assembly that references it.

PRIVATE
The type or member can only be accessed by code in the same class or struct.

PROTECTED
The type or member can only be accessed by code in the same class or struct, or in a derived class.

PRIVATE PROTECTED (ADDED IN C# 7.2)


The type or member can only be accessed by code in the same class or struct, or in a derived class from the same
assembly, but not from another assembly.

INTERNAL
The type or member can be accessed by any code in the same assembly, but not from another assembly.

PROTECTED INTERNAL
The type or member can be accessed by any code in the same assembly, or by any derived class in another assembly.
Enkapsulacija

 Enkapsulacija (učaurivanje) je bitna prilikom definisanja klase. Ideja je ta da


program koji koristi klasu ne treba da brine kako klasa radi, program
jednostavno kreira instancu klase i poziva metodu te klase. Enkapsulacija se
nekad naziva sakrivanje podataka, podrazumeva kontrolisan pristup
elementima objekta. Ona ustvari ima 2 svrhe:
 da kombinuje metode i podatke unutar klase, drugim rečima, da podrži
klasifikaciju
 da kontroliše dostupnost metoda i klasa, drugim rečima, da kontroliše
upotrebu klase.
class Program
{
class Krug
{
private int r;
public Krug() // Podrazumevani konstruktor
{
r = 0;
}

public double Povrsina()


{
return Math.PI * r * r;
}

static void Main(string[] args)


{
Krug kruzic = new Krug();
Console.WriteLine(kruzic.Povrsina()); // kolika je povrsina
//Console.WriteLine(kruzic.r); //neće da može r je private

}
}
class Program
{
class Krug
{
private int r;
public Krug() // Podrazumevani konstruktor
{
r = 0;
}
public double Povrsina()
{
return Math.PI * r * r;
}
public double Povrsina(int r)
{
return Math.PI * r * r;
}
}
static void Main(string[] args)
{
Krug kruzic = new Krug();
Console.WriteLine(kruzic.Povrsina());
//Console.WriteLine(kruzic.r); //neće da može r je private
int poluprecnik;
Console.WriteLine("Unesite poluprecnik kruga: ");
poluprecnik =Convert.ToInt32( Console.ReadLine());
Console.WriteLine(kruzic.Povrsina(poluprecnik)); //stampa povrsinu zavisno od promenljive poluprecnik
Console.WriteLine(kruzic.Povrsina()); //stampa povrsinu ponovo 0 } }
Razlike KLASE I STRUKTURE

 Klase i strukture su 2 osnovna konstruktora zajedničkog tipa sistema u .NET Framework-


u. Podaci su članovi klase ili strukture.
 Klasa je referentni tip. Kada se kreira objekat klase, promenljiva kojoj je dodeljen
OBJEKAT zauzima prostor u memoriji.
 Struktura je vrednosni tip. Kada se kreira struktura, promenljiva kojoj je dodeljena
sadrži stvarne podatke.
 Ostale razlike:
 Za razliku od klasa, u strukturi ne može da se deklariše podrazumevani konstruktor.
Razlog tome je što ga kompajler uvek generiše. Dok kod klasa kompajler generiše
podrazumevani konstruktor samo u slučaju kada ga programer nije deklarisao.
 U klasi, može da se inicijalizuju instance polja kada se deklarišu, dok u strukturi to nije
moguće.
 Kao i kod klasa i kod struktura može da se deklariše konstruktor sa parametrima.
public class Tacka //metoda koja racuna rastojanje
{ public double UdaljenostOdKorPoc()
private double x; {
private double y; return Math.Sqrt(Math.Pow(this.x, 2) +
Math.Pow(this.y, 2));
//konstruktor
}
public Tacka()
}
{
x = 0;
y = 0;
class Program
}
{
//metoda sa kojom dodajemo x i y
static void Main(string[] args)
public Tacka(double x, double y)
{
{
Tacka T1 = new Tacka(3, 6);
this.x = x;
Console.WriteLine("Udaljenost T1 od
this.y = y; koordinatnog pocetka: {0}",
T1.UdaljenostOdKorPoc());
}
}
Konstruktori i destruktori

 Konstruktor je posebna metoda koja se pokreće automatski kada se kreira


instanca klase.
 Ima isto ime kao klasa, može da ima parametre, ali ne vraća vrednost (čak ni
void).
 Svaka klasa mora da ima konstruktor, ukoliko se ne napiše konstruktor,
kompajler automatski kreira podrazumevani konstruktor.
 Kada se kreira objekat neke klase on automatski zauzima prostor u memoriji.
Konstruktori su uvek public.
Konstruktori i destruktori
 Postoje:
 podrazumevani (default) konstruktor - ukoliko ne postoji konstruktor unutar
klase, podrazumevani konstruktor se automatski generiše i koriste se default
vrednosti prilikom inicijalizacije polja objekta. Takođe i programer može
deklarisati podrazumevani konstruktor, on može biti prazan, ali se njegovim
poljima mogu postaviti neke podrazumevane vrednosti. Ovaj konstruktor
nema parametre.

 konstruktor sa parametrima - kod ovog konstruktora polja, odnosno članovi


klase mogu da se postave na neke vrednosti koje je uneo korisnik.

 konstruktor kopije - ovaj konstruktor kao parametar sadrži instancu te klase.


Pa se u polja tog konstruktora upisuju vrednosti instance navedene kao
parametar.
Destruktor

 Destruktor je posebna metoda, poput konstruktora. Destruktori se pišu na


kraju programa. Pozivaju se neposredno pre uništavanja objekta. Imaju isto
ime kao klasa sa prefiksom ~ (tilda). Destruktor nema pravo pristupa, ne
može da se pozove u kodu i nema parametre. Ukoliko programer ne deklariše
destruktor, on se automatski generiše. Nakon izvršenja destruktora memorija
koju je zauzeo taj objekat se oslobađa.
Prenos podataka preko metoda
Prenos podataka preko metoda
Prenos podataka preko konstruktora
Prenos podataka preko konstruktora
Prenos podataka preko svojstava
Prenos podataka preko svojstava

You might also like