[ bolepks @ 08.12.2013. 16:30 ] @
Šta zanči istanciranje objekta pr. dim igracA as new Igrac? Zašto se uopšte radi pravljenje novog objekta?
[ Nymeria @ 08.12.2013. 16:52 ] @
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
[ AMD guy @ 08.12.2013. 17:02 ] @
[ bolepks @ 08.12.2013. 18:00 ] @
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




[Ovu poruku je menjao bolepks dana 08.12.2013. u 19:11 GMT+1]

[Ovu poruku je menjao bolepks dana 08.12.2013. u 20:21 GMT+1]
[ AMD guy @ 08.12.2013. 18:08 ] @
Bilo bi bolje da objasnis ta hoces da postignes.
Sta su tim A i B, jel su oni clanovi klase Matematika?
[ bolepks @ 08.12.2013. 18:12 ] @
Ima na osmoj strani u ovom primeru http://www.microsoftsrb.rs/dow...skola_programiranja_Csharp.pdf
[ AMD guy @ 08.12.2013. 18:26 ] @
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();
[ AMD guy @ 08.12.2013. 18:41 ] @
Koja ti greska pise?
[ jablan @ 08.12.2013. 18:44 ] @
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.
[ AMD guy @ 08.12.2013. 18:50 ] @
Ovo je Mikrosoft Srbija, ko zna ko je pisao te primere.
[ bolepks @ 29.12.2013. 09:27 ] @
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
[ AMD guy @ 29.12.2013. 17:13 ] @
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
[ bolepks @ 29.12.2013. 18:17 ] @
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();....
[ AMD guy @ 29.12.2013. 18:21 ] @
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.
[ bolepks @ 29.12.2013. 19:01 ] @
Batun
[ Burgos @ 29.12.2013. 19:18 ] @
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!



[ AMD guy @ 29.12.2013. 19:28 ] @
Ne razumem sta znaci ta rec. Jel mozes da mi das primer, u recenici ili artikal u wikipediji ili tako nesto?
[ AMD guy @ 29.12.2013. 19:33 ] @
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.
[ Burgos @ 29.12.2013. 20:21 ] @
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;

}