klase-pocetak-deo1

Upload: kalabastra

Post on 08-Jan-2016

213 views

Category:

Documents


0 download

DESCRIPTION

C# programing

TRANSCRIPT

NAPOMENA: Ovaj dokument je u fazi dorade

Klase i objektiU dosadanjim primerima koristili smo promenljive koje su sluile za uvanje vrednosti razliitih tipova podataka, kao to su celi brojevi, karakteri, nizovi karaktera itd. Sada emo govoriti o jednom pojmu sloenijem od prostog tipa podataka pojmu klase. Na primer, pretpostavimo da pravimo program koji obradjuje podatke o kuama, pri emu nas interesuju osobine kue kao to su kvadratura kue, kvadratura placa i broj soba. Za svaku kuu o kojoj program uva podatke, potrebne su tri promenljive u kojima e se uvati vrednosti svake od ove tri osobine kue. class Nekretnine

{

static void Main()

{

// Promenljive neophodne za cuvanje

// podataka o prvoj kuci

double kvadratura;

double plac;

int brojsoba;

// Promenljive neophodne za cuvanje

// podataka o drugoj kuci

double kvadratura2;

double plac2;

int brojsoba2;

}

}Umesto da za svaku kuu o kojoj uvamo podatke u programu koristimo po tri razdvojene promenljive da bismo uvali podatke o toj kui, moemo kreirati poseban tip podataka koji e objediniti ove tri promenljive. Zatim moemo deklarisati promenljive koje pripadaju ovom sloenom tipu podataka, a koje se odnose na pojedine kue.

Ovakav sloeni tip podataka, koji u sebi sadri vie promenljivih, a kao to emo neto kasnije videti moe sadrati jo neke elemente, nazivamo klasa. Promenljive koje pripadaju tipu podataka klase nazivamo objektima te klase. Sledei primer prikazuje definiciju klase Kua, kao i deklaraciju dva objekta klase Kua. Oba ova objekta u sebi sadre sve tri promenljive u kojima se uvaju vrednosti odgovarajuih osobina svake kue. class Kuca

{

public double kvadratura;

public double plac;

public int brojsoba;

}

class Nekretnine

{

static void Main()

{

// Prva kuca

Kuca kuca1;

// Druga kuca

Kuca kuca2;

}

}U primeru je definisana klasa Kua, navodjenjem kljune rei class , za kojom sledi naziv klase. Potom se u vitiastim zagradama navodi definicija klase, koja se u ovom primeru sastoji od deklaracije tri promenljive. Ove promenljive se nazivaju promenljive lanice date klase. One uvaju vrednosti svojstava objekta date klase. Za svaku promenljivu navodi tip podataka kojem vrednosti promenljive mogu pripadati. Ispred tipa podataka navodi se kljuna re public , koja oznaava da se promenljivoj lanu klase moe pristupati kako unutar, tako i van same definicije klase Kua, pa tako i iz druge klase kao to je klasa Nekretnine. Kljuna re public je jedan od moguih modifikatora pristupa lanovima klase, o emu e biti vie rei kasnije. U ovom primeru ona oznaava da se promenljivama lanicama klase moe pristupiti kako unutar definicije klase, tako i van nje. Klasa Nekretnine sadri metodu Main, to predstavlja poetnu taku izvravanja programa. U telu ove metode se deklariu dve promenljive (kuca1 i kuca2) koje pripadaju tipu podataka klase Kuca. Drugim reima, deklariu se dva objekta klase Kuca.Vrednost objekata klaseNa klasu moemo gledati kao na posebnu vrstu tipa podataka, odnosno sloeni tip podataka. Tako moemo rei da u gornjem primeru promenljive kuca1 i kuca2 pripadaju tipu podataka klasa Kuca. Vrednost promenljive kuca1 je zapravo adresa memorijskog prostora u kome se nalazi vrednost kvadrature (zauzeto 8 bajtova za tip podataka double), veliine placa (zauzeto 8 bajtova za tip podataka double), broj soba (zauzeto 4 bajta za tip podataka int). Napomenuemo da se pored toga u rezervisanom prostoru za promenljivu kuca1 nalaze jo neki podaci, ali nam to trenutno nije sutinski vano i neemo detaljnije objanjavati. Medjutim, u gornjem primeru nije zapravo kreiran objekat na koji se odnosi promenljiva kuca1 ili kuca2. Samo su u programu deklarisane promenjliva kuca1 i kuca2, koje pripadaju tipu podataka klasa Kuca. Da bi se kreirao objekat i zaista rezervisao memorijski prostor za uvanje podataka koje objekat sadri (kvadratura, plac, brojsoba), potrebno je proiriti gore navedeni programski kod na sledei nain. class Kuca

{

public double kvadratura;

public double plac;

public int brojsoba;

}

class Nekretnine

{

static void Main()

{

// Prva kuca

Kuca kuca1;

// Druga kuca

Kuca kuca2;

// Kreiranje objekta za prvu kucu

kuca1 = new Kuca();

// Kreiranje objekta za drugu kucu

kuca2 = new Kuca();

}

}Dakle, za svaki objekat dodata je linija koda u sledeem formatu: promenljiva = new Klasa( ) ;

Koristi se kljuna re new, koja se jo naziva operator new. Tek kada se izvri ova linija koda, rezervie se memorijski prostor za objekat, a vrednost promenljive postaje adresa tog memorijskog prostora. Pre nego to se izvri gore navedena programska linija koda, vrednost promenljive nije adresa odredjenog memorijskog prostora, ve specijalna vrednost koja se naziva NULL (prazno).

Dakle, u gornjem primeru promenljiva kuca1 (isto vai za promenljivu kuca2) ima vrednost NULL, sve do izvravanja programske linije kuca1 = new Kuca(); Dodela vrednosti promenljivama lanicama Vrednostima promenljivih lanica pristupa se koristei operator taka.

Sintaksa naredbe za dodelu vrednosti promenljive koje su lanovi klase je sledea:

objekat . promenljiva_lanica = vrednost ;Sledei programski kod demonstrira pristup promenljivama kvadratura, plac, brojsoba, kao lanovima klase Kuca.

Pomenuemo da se promenljive koje su lanovi klase jo nazivaju polja objekta, ili promenljive stanja objekta, tako da emo pojmove promenljiva lanica, polje objekta i promenljiva stanja koristiti kao sinonime. class Kuca

{

public double kvadratura;

public double plac;

public int brojsoba;

}

class Nekretnine

{

static void Main()

{

// Prva kuca

Kuca kuca1;

// Druga kuca

Kuca kuca2;

// Kreiranje objekta za prvu kucu

kuca1 = new Kuca();

// Dodela vrednosti poljima objekta kuca1

kuca1.kvadratura = 156.3;

kuca1.plac = 650;

kuca1.brojsoba = 4;

// Kreiranje objekta za drugu kucu

kuca2 = new Kuca();

// Dodela vrednosti poljima objekta kuca2

kuca2.kvadratura = 100;

kuca2.plac = 520.5;

kuca2.brojsoba = 5;

}

}Vano je znati da se vrednostima promenljivih lanica (poljima objekata) moe pristupati samo posle izvrenja programske linije u kojoj se nalazi kljuna re new.