[ 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? |
[ bolepks @ 08.12.2013. 16:30 ] @
[ 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 ![]() ![]() 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; } Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|