Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

Šta zanči istanciranje objekta pr. dim igracA as new Igrac?

  • 18 odgovora
  • 7.538 pregleda

Najnovija ↓

Re: Šta zanči istanciranje objekta pr. dim igracA as new Igrac? 08.12.2013. u 17:52 · pre 157 meseci #2
Mozda je lakse razumeti ako to razdvojis zasebno na deklaraciju promenljive i instanciranje:
Dim igracA As Igrac
igracA = new Igrac()

Prva linija samo odredjuje da cemo koristiti neku promenljivu i kaze sta cemo cuvati u njoj (da bi sistem znao kako da radi sa memorijom i radi raznih provera).
Druga linije je konkretan posao, da tako kazem. Tu se zaista napravi objekat i smesti u promenljivu. E sad, zasto... Pa, zato sto nam treba :) Ako hoces ista da radis sa objektima tipa Igrac, moras prvo da ih napravis. Nema ti druge :)

OK, jedan izuzetak su staticke metode (u vb.net se drugacije zovu, shared mislim) koje se pozivaju bez instance, ali to je druga prica ;)
Re: Šta zanči istanciranje objekta pr. dim igracA as new Igrac? 08.12.2013. u 19:00 · pre 157 meseci
izmenjeno 2 puta, poslednji put bolepks 08.12.2013. u 20:21
  1. bolepks08.12.2013. u 20:21zapis iz teksta poruke
  2. bolepks08.12.2013. u 19:11zapis iz teksta poruke
#4
Citat:
Nymeria:
Mozda je lakse razumeti ako to razdvojis zasebno na deklaraciju promenljive i instanciranje:
Dim igracA As Igrac
igracA = new Igrac()

Prva linija samo odredjuje da cemo koristiti neku promenljivu i kaze sta cemo cuvati u njoj (da bi sistem znao kako da radi sa memorijom i radi raznih provera).
Druga linije je konkretan posao, da tako kazem. Tu se zaista napravi objekat i smesti u promenljivu. E sad, zasto... Pa, zato sto nam treba :) Ako hoces ista da radis sa objektima tipa Igrac, moras prvo da ih napravis. Nema ti druge :)

OK, jedan izuzetak su staticke metode (u vb.net se drugacije zovu, shared mislim) koje se pozivaju bez instance, ali to je druga prica ;)

Jel možeš da mi napišeš kod bilo bi mi jasnije dva broja tima A i B koja treba da se saberu a da imaju klasu Matematika?
Postoji onaj jednostavna primer ali ga nešto dobro nisam upisao
Re: Šta zanči istanciranje objekta pr. dim igracA as new Igrac? 08.12.2013. u 19:26 · pre 157 meseci #7
Jel si odgledao video koji sam postavio?
M je promenljiva tipa Matematika, to odredjuje referencu gde ce se cuvati ta instaca koja se kreira pomocu new operatora, ono sto ide posle new je Matematika() to je poseban metod u svakoj klasi koji se zove konstruktor i on je odgovoran za pravljenje instance
Matematika M = new Matematika();
Potpis
http://i.imgur.com/V3feW.jpg
http://on.wsj.com/H9yjz6 -- India Graduates Millions, but Too Few Are Fit to Hire
Re: Šta zanči istanciranje objekta pr. dim igracA as new Igrac? 08.12.2013. u 19:44 · pre 157 meseci #9
Taj primer iz PDF-a je loš, pošto praviti klasu Matematika nema smisla. Baš me čudi da MS u svom zvaničnom materijalu koristi tako apsurdne primere za jako bitne koncepte kao što su klase i objekti.

BTW koristi CODE tagove kad stavljaš kod u poruci na ES.
Re: Šta zanči istanciranje objekta pr. dim igracA as new Igrac? 29.12.2013. u 10:27 · pre 156 meseci #11
Citat:
AMD guy:
Jel si odgledao video koji sam postavio?
M je promenljiva tipa Matematika, to odredjuje referencu gde ce se cuvati ta instaca koja se kreira pomocu new operatora, ono sto ide posle new je Matematika() to je poseban metod u svakoj klasi koji se zove konstruktor i on je odgovoran za pravljenje instance
Matematika M = new Matematika();

Da li sam dobro shvatio tehnologiju pisanja koda pr. kada hoću da napravim drugu formu u projektu kao npr. frmDrugaForma moram da na prvoj naprvaim batum i na klik događaj unesem kod koji će napraviti istancu objekta ove klase i promenjljivu u kojoj će se izvršiti:

frmDrugaForma Mojaforma = new frmDrugaforma(); /* ovo je klasa promenljiva = konstruktor klase ();
Moja.Forma.Show(); /* ovo je istanca klase tj. objekta
Re: Šta zanči istanciranje objekta pr. dim igracA as new Igrac? 29.12.2013. u 18:13 · pre 156 meseci #12
Instanca klase se zove Mojaforma. A frmDrugaForma je tip, kao sto stoji int x gde je int tip a x promenljiva koja cuva vrednost tipa int, tako je frmDrugaForma tip a Mojaforma je promenljiva koja cuva vrednosti tipa frmDrugaForma. Jedina razlika je u tome sto je promenljiva Mojaforma kompleksniji tip od x promenljive.

frmDrugaForma Mojaforma = new frmDrugaforma(); /* ovo je klasa promenljiva = konstruktor klase ();
Mojaforma.Show(); //ispravka nije Moja.Forma nego Mojaforma
Potpis
http://i.imgur.com/V3feW.jpg
http://on.wsj.com/H9yjz6 -- India Graduates Millions, but Too Few Are Fit to Hire
Sviđa mi se1
Re: Šta zanči istanciranje objekta pr. dim igracA as new Igrac? 29.12.2013. u 19:17 · pre 156 meseci #13
Da je koliko ja razumem instaca pojavni oblik klase (objekta) da bi program mogao da nam metodom tj. funkcijom pokazao šta se tom klasom događa, u ovom slučaju klikom na batum otvara se druga forma pomoću instace odnosno funkcije MojaForma.Show();....
Re: Šta zanči istanciranje objekta pr. dim igracA as new Igrac? 29.12.2013. u 19:21 · pre 156 meseci #14
Sta je batum?
Jel to isto sto i button?

Show metoda se definisana u Form klasi, verovatno si video kada si kreirao formu da pise nesto tipa frmDrugaForma : Form. Ovo ti je primer nasledjivanja. frmDrugaForma ima pristup Show metodi samo zato sto nasledjuje iz Form klase.
Potpis
http://i.imgur.com/V3feW.jpg
http://on.wsj.com/H9yjz6 -- India Graduates Millions, but Too Few Are Fit to Hire
Re: Šta zanči istanciranje objekta pr. dim igracA as new Igrac? 29.12.2013. u 20:18 · pre 156 meseci #16
Ono što je veoma važno, a ne vidim da je spomenuto ovde - instanca klase - objekat - ima svoje stanje, koje je određeno vrednošću svih njegovih elemenata i to je razlog zašto se konstruišu objekti - dva objekta iste klase mogu imati različito (ali jasno određeno) stanje - definicija klase opisuje kako se to stanje menja.

Citat:
Da je koliko ja razumem instaca pojavni oblik klase (objekta) da bi program mogao da nam metodom tj. funkcijom pokazao šta se tom klasom događa, u ovom slučaju klikom na batum otvara se druga forma pomoću instace odnosno funkcije MojaForma.Show();....


Baš zbog ovoga je važno razumeti šta je stanje - jer se sa klasom mogu generisati događaji i bez objekta (static metode i polja), ali u tom slučaju stanje je jedinstveno za svaku klasu.


Primer:

Code:
class BankovniRacun
{
     int stanje;

public:
     void dodaj(int iznos);
     void skini(int iznos);
};


// Dva objekta
BankovniRacun a, b;


a.dodaj(1000);
b.dodaj(5000);


Evo i primera za dešavanja nad klasom bez objekata (samo ilustrativno):


Code:
class MojProzor
{
private:
    static Form mojForm;

public:

    static void prikaziProzor(){ mojForm.show(); }


};

MojProzor::prikaziProzor(); // bez objekta!



Re: Šta zanči istanciranje objekta pr. dim igracA as new Igrac? 29.12.2013. u 20:33 · pre 156 meseci #18
Citat:
dva objekta iste klase mogu imati različito (ali jasno određeno) stanje - definicija klase opisuje kako se to stanje menja.

Ja mislim da se slicno nesto spominje u video klipu sto sam postavio 08.12.
Potpis
http://i.imgur.com/V3feW.jpg
http://on.wsj.com/H9yjz6 -- India Graduates Millions, but Too Few Are Fit to Hire
Re: Šta zanči istanciranje objekta pr. dim igracA as new Igrac? 29.12.2013. u 21:21 · pre 156 meseci #19
Nisam pogledao klip, izvinjavam se ako je već bilo spomenuto! U pitanju je stanje objekta - object state - možda pod time nađete više informacija na internetu.

Npr. ponovo primer sa bankom:

Code:

class BankovniRacun
{
     int stanje_racuna;
     std::string ime_vlasnika;

public:
     void dodaj(int iznos);
     void skini(int iznos);

     BankovniRacun(std::string ime){ ime_vlasnika = ime; stanje_racuna = 0; }
};


// Napravi dva racuna
BankovniRacun rac1("Nemanja"); 
BankovniRacun rac2("Milica");

// Dodaj neki iznos
rac1.dodaj(1000);
rac2.dodaj(5000);


Oba ova objekta opisuje ista klasa - BankovniRacun, međutim, svaki objekat čuva svoje stanje - u ovom trenutku, stanje objekta rac1 govori da mu je vlasnik Nemanja, i da ima 1000 dinara na računu. Slično tome, stanje objekta rac2 čuva informacije o tome da je vlasnik Milica, i da ima 5000 dinara na njemu.

Već je ovde rečeno da objekti, pored stanja, imaju i ponašanje. Ovo dvoje je u jakoj sprezi - kao što ponašanje menja stanje objekta (dodavanje i skidanje novca sa računa), tako i stanje objekta, može da menja ponašanje - npr. ako je stanje na računu posle eventualne operacije skidanja para sa njega negativan, objekat može baciti izuzetak i ne promeniti svoje stanje.

Takođe, ako vas ovo interesuje, možete potražiti po internetu dosta zanimljivih stvari o ovome, npr. exception safety je veoma važna osobina koja opisuje da li se (i kako se) menja stanje objekta nakon što objekat izbaci izuzetak - na primer, strong exception safety garantuje da će nakon izbacivanja izuzetka stanje objekta ostati isto kao i pre pozivanja metode koja izaziva izuzetak - ako ne dozvolimo skidanje više para na računu, ne želimo da naš račun posle izuzetka ostane sa negativnim saldom:


Code:


// loše - ako zahtemo više para, i operacija ne uspe
// objekat ostaje u neupotrebljivom stanju
void BankovniRacun::skini(int iznos)
{
    stanje_racuna -= iznos;

    if(stanje_racuna < 0)
        throw MinusException();
}

// bolje

void BankovniRacun::skini(int iznos)
{
    if(stanje_racuna - iznos < 0)
        throw MinusException();

    stanje_racuna -= iznos;

}


Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme