Pitanje za programere a i za ljubitelje logike i igara

Hardware, software, mobiteli, programiranje, internet...

Moderator: Benq

Post Reply
User avatar
PeeJay
Posts: 204
Joined: 05/02/2018 21:52
Location: HH
Contact:

#1 Pitanje za programere a i za ljubitelje logike i igara

Post by PeeJay »

Da li je u simulacijama zrno ono, koje odlucuje o tome, dali je pogodilo metu ili je meta ona, koja odredjuje, da li je pogodjena zrnom? :D
User avatar
PeeJay
Posts: 204
Joined: 05/02/2018 21:52
Location: HH
Contact:

#3 Re: Pitanje za programere a i za ljubitelje logike i igara

Post by PeeJay »

diablobih wrote:Oboje.
Sta ti daje tako misliti?
Smatras li to (nepotrebnom) redundancijom (istih) podataka?
sportman1
Posts: 1505
Joined: 26/12/2013 22:36

#4 Re: Pitanje za programere a i za ljubitelje logike i igara

Post by sportman1 »

pozdrav.
zamolio bi nekog programera da odgovori.
procitao sam tekstova o kodovima i knjigu za djecu o programiranju ali ne kontam- kako se to radi tj. kodove dali moras znati napamet ili mozes listati po teci trazeci kodove i upisivati ih ....koliko ima kodova jedan prog. jezik otprilike????? dali kod unosis iskljucivo preko tastature ili ima instaliran program kao pomoc isl.?
dali programer treba imati smisla za matematiku ili fiziku ili mehaniku???? znam da treba imat smisla za logicno zakljucivanje.

fala lijepo.
User avatar
PeeJay
Posts: 204
Joined: 05/02/2018 21:52
Location: HH
Contact:

#5 Re: Pitanje za programere a i za ljubitelje logike i igara

Post by PeeJay »

sportman1 wrote:pozdrav.
zamolio bi nekog programera da odgovori.
procitao sam tekstova o kodovima i knjigu za djecu o programiranju ali ne kontam- kako se to radi tj. kodove dali moras znati napamet ili mozes listati po teci trazeci kodove i upisivati ih ....koliko ima kodova jedan prog. jezik otprilike????? dali kod unosis iskljucivo preko tastature ili ima instaliran program kao pomoc isl.?
dali programer treba imati smisla za matematiku ili fiziku ili mehaniku???? znam da treba imat smisla za logicno zakljucivanje.

fala lijepo.
Programiranje je (1)umjetnost prepoznavanja podatkovnih (2)obrazaca i njih strukturiranja u (3)informacije, koje imaju neku pragmaticku vrijednost.
KIseljak12
Posts: 1371
Joined: 11/12/2012 16:14

#6 Re: Pitanje za programere a i za ljubitelje logike i igara

Post by KIseljak12 »

sportman1 wrote:pozdrav.
zamolio bi nekog programera da odgovori.
procitao sam tekstova o kodovima i knjigu za djecu o programiranju ali ne kontam- kako se to radi tj. kodove dali moras znati napamet ili mozes listati po teci trazeci kodove i upisivati ih ....koliko ima kodova jedan prog. jezik otprilike????? dali kod unosis iskljucivo preko tastature ili ima instaliran program kao pomoc isl.?
dali programer treba imati smisla za matematiku ili fiziku ili mehaniku???? znam da treba imat smisla za logicno zakljucivanje.

fala lijepo.
Ne izgleda programiranje bas tako. Programski jezici sluze da objasnis racunaru sta treba da radi.
To otprilike izgleda ovako. Za svrhu objasnjenja, nas racunar ce se zvati Mirsad, a imacemo i izmisljeni programski jezik. Pretpostavimo da je stranica klix programirana u tom jeziku. Onda bi pocetak programa klixa izgledao otprilike:

Mirsade, provjeri da li je trenutni posjetilac ulogovan.
- Ako je ulogovan, prikazi njegove podatke u gornjem desnom cosku i prikazi mu neku dugmad (za log out na primjer)
- Ako nije ulogovan, nemoj prikazati te podatke

Mirsade, reci mi koje kategorije clanaka postoje.
(Sad Mirsad kaze: "Vijesti", "Svijet", "Crna Hronika", "Magazin", "Zdravlje", "Sport")

Mirsade, otidji u arhivu clanaka i za svaku kategoriju, koju si mi rekao da postoji, donesi po 10 zadnjih naslova.

Kad doneses te clanke, prikazi ih na slijedeci nacin:
- Prikazi na stranici kategorije jednu iznad druge
- Unutar svake kategorije prikazi njene naslove koje si maloprije donio iz arhive, skupa sa njihovim slikama
- Ako korisnik klikne na sliku ili naslov prikazi mu novu stranicu i na njoj ispisi sadrzaj clanka iz arhive.


itd.

Razlika izmedju ljudskih i programskih jezika je u tome sto ce ljudi razumjeti cak i ako izmjenis malo rijeci ili recenicu, tj. ako govoris nepravilno.

Programski jezici nisu takvi i oni imaju tacno odredjena pravila, ako je neko pravilo prekrseno racunar te nece razumjeti sta govoris. Oni obicno imaju manje rijeci nego ljudski jezici (ali ima programskih jezika u koje mozes dodavati svoje rijeci).

Na kraju ima jedan program koji to sto ti napises u programskom jeziku prevede u niz signala (odnosno jedinica i nula koje racunar moze da razumije).

To ti je onako, otprilike.
KIseljak12
Posts: 1371
Joined: 11/12/2012 16:14

#7 Re: Pitanje za programere a i za ljubitelje logike i igara

Post by KIseljak12 »

PeeJay wrote:
diablobih wrote:Oboje.
Sta ti daje tako misliti?
Smatras li to (nepotrebnom) redundancijom (istih) podataka?
Zavisi od konteksta.

Ako oba objekta sami reaguju na svoje stanje (meta se probije kad je pogodi metak, a metak se deformise prilikom udara u metu) i nikome ne govore o njemu (kaze meta: sta je briga metka je li pogodio mene, ja sam pogodjena), onda nije redundantno.

Ako su metak i meta transparentni objekti koji eventualno obavjestavaju nekoga o svom stanju, onda je mozda redundancija.

Dalje, ako ima vise metaka i meta, unutar nekog vremenskog domena, te svaki za sebe prate da li su udarili u nesto, lako je onda zakljuciti kasnije koji je metak pogodio koju metu, dok to ne bi bilo tako jednostavno da samo jedan objekat detektuje sudar.

Ako nas ne zanima koji metak je pogodio koju metu, onda taj podatak stavljamo ondje gdje nam je bitan. Drugim rijecima, ako nas ne zanima zrno/metak i njegova sudbina, dovoljno je da znamo da je meta pogodjena, jer je ona u fokusu nase paznje, naspram cemu imamo situaciju gdje nas zanima da li je metak pogodio nesto, pri cemu nije bitno da li je pogodjena meta ili nesto deseto.

Ova zadnja dva scenarija podrazumijevaju da ima drugih vrsta objekata koji imaju mogucnost da gadjaju ili da budu pogodjeni. To jeste, osim meta, imaju i zidovi i tlo koji mogu biti pogodjeni, kao sto i umjesto zrna postoje i strijele te kamenje.

Ako je to zrno samo model nekog slozenijeg projektila, npr. smart rakete, onda nam definitivno treba taj podatak da zrno zna da je pogodilo nesto, sta je to nesto i kada se to desilo.

U simulacijama najcesce (uvijek?) baratamo modelima stvari. Prema tome zrno moze biti model zrna, ali i model bilo kojeg projektila. Isto tako, meta moze biti samo apstrakcija svih staticnih predmeta koji mogu biti pogodjeni.
User avatar
PeeJay
Posts: 204
Joined: 05/02/2018 21:52
Location: HH
Contact:

#8 Re: Pitanje za programere a i za ljubitelje logike i igara

Post by PeeJay »

KIseljak12 wrote:
sportman1 wrote:pozdrav.
zamolio bi nekog programera da odgovori.
procitao sam tekstova o kodovima i knjigu za djecu o programiranju ali ne kontam- kako se to radi tj. kodove dali moras znati napamet ili mozes listati po teci trazeci kodove i upisivati ih ....koliko ima kodova jedan prog. jezik otprilike????? dali kod unosis iskljucivo preko tastature ili ima instaliran program kao pomoc isl.?
dali programer treba imati smisla za matematiku ili fiziku ili mehaniku???? znam da treba imat smisla za logicno zakljucivanje.

fala lijepo.
Ne izgleda programiranje bas tako. Programski jezici sluze da objasnis racunaru sta treba da radi.
To otprilike izgleda ovako. Za svrhu objasnjenja, nas racunar ce se zvati Mirsad, a imacemo i izmisljeni programski jezik. Pretpostavimo da je stranica klix programirana u tom jeziku. Onda bi pocetak programa klixa izgledao otprilike:

Mirsade, provjeri da li je trenutni posjetilac ulogovan.
- Ako je ulogovan, prikazi njegove podatke u gornjem desnom cosku i prikazi mu neku dugmad (za log out na primjer)
- Ako nije ulogovan, nemoj prikazati te podatke

Mirsade, reci mi koje kategorije clanaka postoje.
(Sad Mirsad kaze: "Vijesti", "Svijet", "Crna Hronika", "Magazin", "Zdravlje", "Sport")

Mirsade, otidji u arhivu clanaka i za svaku kategoriju, koju si mi rekao da postoji, donesi po 10 zadnjih naslova.

Kad doneses te clanke, prikazi ih na slijedeci nacin:
- Prikazi na stranici kategorije jednu iznad druge
- Unutar svake kategorije prikazi njene naslove koje si maloprije donio iz arhive, skupa sa njihovim slikama
- Ako korisnik klikne na sliku ili naslov prikazi mu novu stranicu i na njoj ispisi sadrzaj clanka iz arhive.


itd.

Razlika izmedju ljudskih i programskih jezika je u tome sto ce ljudi razumjeti cak i ako izmjenis malo rijeci ili recenicu, tj. ako govoris nepravilno.

Programski jezici nisu takvi i oni imaju tacno odredjena pravila, ako je neko pravilo prekrseno racunar te nece razumjeti sta govoris. Oni obicno imaju manje rijeci nego ljudski jezici (ali ima programskih jezika u koje mozes dodavati svoje rijeci).

Na kraju ima jedan program koji to sto ti napises u programskom jeziku prevede u niz signala (odnosno jedinica i nula koje racunar moze da razumije).

To ti je onako, otprilike.
Kad me moja kci pitala o tom, cime se bavim, sam joj rekao, da saceka do vecere, pa cu joj objasnit u miru. I tako sam djecu uvece posjeo za sto i stao sredi kuhinje, te jim objasnio, da cu uciniti tacno ono, sto mi narede i nista drugo... a cilj je, da svako dobije na sto pred sebe nesto, da pojede. Stvar se pretvorila u veoma zabavan dozivljaj, a djeca su kroz igru shvatila, sta znaci preciznost neredbi i dobila neku predstavu o tome, sto tata radi. Kao ideja, koju mozete pokusati i sami izvesti u krugu domacih ili prijatelja. :D
User avatar
PeeJay
Posts: 204
Joined: 05/02/2018 21:52
Location: HH
Contact:

#9 Re: Pitanje za programere a i za ljubitelje logike i igara

Post by PeeJay »

KIseljak12 wrote:
PeeJay wrote:
diablobih wrote:Oboje.
Sta ti daje tako misliti?
Smatras li to (nepotrebnom) redundancijom (istih) podataka?
Zavisi od konteksta.

Ako oba objekta sami reaguju na svoje stanje (meta se probije kad je pogodi metak, a metak se deformise prilikom udara u metu) i nikome ne govore o njemu (kaze meta: sta je briga metka je li pogodio mene, ja sam pogodjena), onda nije redundantno.

Ako su metak i meta transparentni objekti koji eventualno obavjestavaju nekoga o svom stanju, onda je mozda redundancija.

Dalje, ako ima vise metaka i meta, unutar nekog vremenskog domena, te svaki za sebe prate da li su udarili u nesto, lako je onda zakljuciti kasnije koji je metak pogodio koju metu, dok to ne bi bilo tako jednostavno da samo jedan objekat detektuje sudar.

Ako nas ne zanima koji metak je pogodio koju metu, onda taj podatak stavljamo ondje gdje nam je bitan. Drugim rijecima, ako nas ne zanima zrno/metak i njegova sudbina, dovoljno je da znamo da je meta pogodjena, jer je ona u fokusu nase paznje, naspram cemu imamo situaciju gdje nas zanima da li je metak pogodio nesto, pri cemu nije bitno da li je pogodjena meta ili nesto deseto.

Ova zadnja dva scenarija podrazumijevaju da ima drugih vrsta objekata koji imaju mogucnost da gadjaju ili da budu pogodjeni. To jeste, osim meta, imaju i zidovi i tlo koji mogu biti pogodjeni, kao sto i umjesto zrna postoje i strijele te kamenje.

Ako je to zrno samo model nekog slozenijeg projektila, npr. smart rakete, onda nam definitivno treba taj podatak da zrno zna da je pogodilo nesto, sta je to nesto i kada se to desilo.

U simulacijama najcesce (uvijek?) baratamo modelima stvari. Prema tome zrno moze biti model zrna, ali i model bilo kojeg projektila. Isto tako, meta moze biti samo apstrakcija svih staticnih predmeta koji mogu biti pogodjeni.
Samo kao dopuna k izvornom pitanju: Da. Imao sam ideju realne simulacije. Znaci zrno moze da pogodi i bilo koji drugi predmet na putanji (npr. pomenuti zid). A i metu (u smislo gadjanog objekta) moze da pogodi bilo sta drugo (okrusak pomenutog zida npr.)
sportman1
Posts: 1505
Joined: 26/12/2013 22:36

#10 Re: Pitanje za programere a i za ljubitelje logike i igara

Post by sportman1 »

fala za odgovore.
User avatar
diablobih
Posts: 8252
Joined: 28/12/2015 02:17

#11 Re: Pitanje za programere a i za ljubitelje logike i igara

Post by diablobih »

PeeJay wrote:
diablobih wrote:Oboje.
Sta ti daje tako misliti?
Smatras li to (nepotrebnom) redundancijom (istih) podataka?
Ne smatram, jer smanjuje mogucnost desavanja buga.
User avatar
desperate housewife
Posts: 476
Joined: 25/09/2010 13:47

#12 Re: Pitanje za programere a i za ljubitelje logike i igara

Post by desperate housewife »

da li ima neko ko se bavi programiranjem u Javi?
Cookie85
Posts: 1353
Joined: 01/07/2016 20:22

#13 Re: Pitanje za programere a i za ljubitelje logike i igara

Post by Cookie85 »

desperate housewife wrote:da li ima neko ko se bavi programiranjem u Javi?

Code: Select all

public class Da {
   public static void main(String[] args) {
      System.out.println("Ima, Zasto ti treba?");
   }
}
User avatar
desperate housewife
Posts: 476
Joined: 25/09/2010 13:47

#14 Re: Pitanje za programere a i za ljubitelje logike i igara

Post by desperate housewife »

Cookie85 wrote:
desperate housewife wrote:da li ima neko ko se bavi programiranjem u Javi?

Code: Select all

public class Da {
   public static void main(String[] args) {
      System.out.println("Ima, Zasto ti treba?");
   }
}

Mozes li u jednoj recenici reci zasto bismo koristili konstruktor umjesto najobicnijeg proglasavanja varijabli, i dodjeljivanja vrijednosti*? Sta je prednost konstruktorima, ali reci mi jednostavnim rijecima ako moze bez gomile strucnih izraza koje ne razumijem? Hvala
KIseljak12
Posts: 1371
Joined: 11/12/2012 16:14

#15 Re: Pitanje za programere a i za ljubitelje logike i igara

Post by KIseljak12 »

desperate housewife wrote:
Cookie85 wrote:
desperate housewife wrote:da li ima neko ko se bavi programiranjem u Javi?

Code: Select all

public class Da {
   public static void main(String[] args) {
      System.out.println("Ima, Zasto ti treba?");
   }
}

Mozes li u jednoj recenici reci zasto bismo koristili konstruktor umjesto najobicnijeg proglasavanja varijabli, i dodjeljivanja vrijednosti*? Sta je prednost konstruktorima, ali reci mi jednostavnim rijecima ako moze bez gomile strucnih izraza koje ne razumijem? Hvala
Jeste da nije meni upuceno pitanje. Konkretno u Javi, ako sve propertye deklarisemo kao final, te ih setujemo jedino u konstruktorima, bez implementacije set metoda, onda smo na pola puta da imamo definiciju tipa koji je immutable. Da bi bio immutable u potpunosti, moramo onemoguciti override metoda, sto mozemo postici na par nacina, jedan od njih bi bio da samu klasu deklarisemo kao final.

Immutable tipovi su oni koji ne mogu mijenjati stanje, mozes samo instancirati nove objekte koji imaju nesto promijenjeno u odnosu na prvobitni. Prednost immutable tipova je prvenstveno u konkurentnom programiranju (multithreading npr.) jer se garantuje istovjetnost objekta u svim threadovima.
User avatar
desperate housewife
Posts: 476
Joined: 25/09/2010 13:47

#16 Re: Pitanje za programere a i za ljubitelje logike i igara

Post by desperate housewife »

Cookie85 wrote:
desperate housewife wrote:
Mozes li u jednoj recenici reci zasto bismo koristili konstruktor umjesto najobicnijeg proglasavanja varijabli, i dodjeljivanja vrijednosti*? Sta je prednost konstruktorima, ali reci mi jednostavnim rijecima ako moze bez gomile strucnih izraza koje ne razumijem? Hvala
Jeste da nije meni upuceno pitanje. Konkretno u Javi, ako sve propertye deklarisemo kao final, te ih setujemo jedino u konstruktorima, bez implementacije set metoda, onda smo na pola puta da imamo definiciju tipa koji je immutable. Da bi bio immutable u potpunosti, moramo onemoguciti override metoda, sto mozemo postici na par nacina, jedan od njih bi bio da samu klasu deklarisemo kao final.

Immutable tipovi su oni koji ne mogu mijenjati stanje, mozes samo instancirati nove objekte koji imaju nesto promijenjeno u odnosu na prvobitni. Prednost immutable tipova je prvenstveno u konkurentnom programiranju (multithreading npr.) jer se garantuje istovjetnost objekta u svim threadovima.
hvala što si odgovorio. Al meni idalje ništa nije jasno...
Horcrux
Posts: 1296
Joined: 24/04/2016 13:22

#17 Re: Pitanje za programere a i za ljubitelje logike i igara

Post by Horcrux »

desperate housewife wrote:
Cookie85 wrote:
desperate housewife wrote:da li ima neko ko se bavi programiranjem u Javi?

Code: Select all

public class Da {
   public static void main(String[] args) {
      System.out.println("Ima, Zasto ti treba?");
   }
}

Mozes li u jednoj recenici reci zasto bismo koristili konstruktor umjesto najobicnijeg proglasavanja varijabli, i dodjeljivanja vrijednosti*? Sta je prednost konstruktorima, ali reci mi jednostavnim rijecima ako moze bez gomile strucnih izraza koje ne razumijem? Hvala
Mislim da ti je pitanje pogresno. Ti ne koristis konstruktor, nego klasu/objekat. Konstruktor se poziva prilikom kreiranja objekta i sluzi kao njegova inicializacija. Googlaj sta je klasa za strucniji opis. Naivno, klasa je skup varijabli koji opisju nesto.
Cookie85
Posts: 1353
Joined: 01/07/2016 20:22

#18 Re: Pitanje za programere a i za ljubitelje logike i igara

Post by Cookie85 »

desperate housewife wrote:
Cookie85 wrote:
desperate housewife wrote:da li ima neko ko se bavi programiranjem u Javi?

Code: Select all

public class Da {
   public static void main(String[] args) {
      System.out.println("Ima, Zasto ti treba?");
   }
}

Mozes li u jednoj recenici reci zasto bismo koristili konstruktor umjesto najobicnijeg proglasavanja varijabli, i dodjeljivanja vrijednosti*? Sta je prednost konstruktorima, ali reci mi jednostavnim rijecima ako moze bez gomile strucnih izraza koje ne razumijem? Hvala


Svaka klasa koja nije static ima konstruktor. Ako ga programer nije sam napisao, kompajler kreira "prazni" public konstruktor bez argumenata.
Konstruktor se izvrsava prilikom kreiranja instance klase (new) i onaj ko pokusava kreirati instancu mora imati pristup konstruktoru.

Tri najvaznje primjene konstruktora su:

- Postavljanje vrijednosti varijabli prilikom instanciranja klase - vrijednosti proslijedjene kao argument konstruktoru

- Izvrsavanje dijela koda koji mora biti izvrsen prilikom instanciranja klase - tipa otvaranje file za pisanje ukoliko se radi o klasi koja je zaduzena za zapis u file

- Regulacija tko moze instancirati klasu - npr., mozes imati private konstruktor i static metodu koja poziva konstruktor samo ako vec ne postoji instanca te klase, a ako vec postoji vraca postojecu instancu, tako da moze biti samo jedna instanca kreirana (singleton) ili mozes imati protected konstruktor tako da ne mozes instancirati tu klasu, vec samo one koje je nasljedjuju

Primjer:

Code: Select all

public class Vrijeme {

    private int sati;
    private int minute;
    private int sekunde;
    
    //Konstruktor
    
public Vrijeme(int sati, int minute, int sekunde) {
        this.sati = sati;
        this.minute = minute;
        this.sekunde = sekunde;
   }
   
....getteri i setteri ...

}
public class Main (){
       public static void main(String[] args){
            Vrijeme vrijeme = new Vrijeme (neke vrijednosti....); //init klase
            int sati = vrijeme.getSati(); //uporaba klase
            .....
       }
}
Valjda si sad nesto skontao/la.
User avatar
PeeJay
Posts: 204
Joined: 05/02/2018 21:52
Location: HH
Contact:

#19 Re: Pitanje za programere a i za ljubitelje logike i igara

Post by PeeJay »

diablobih wrote:
PeeJay wrote:
diablobih wrote:Oboje.
Sta ti daje tako misliti?
Smatras li to (nepotrebnom) redundancijom (istih) podataka?
Ne smatram, jer smanjuje mogucnost desavanja buga.
Hm... nekako mi se ne svidja. Rekao bih cak, da odrzavanje (i sinhronizacija) pojednakih podataka u dvije instance prije uvecava mogucnost pogreske, nego smanjuje.
User avatar
PeeJay
Posts: 204
Joined: 05/02/2018 21:52
Location: HH
Contact:

#20 Re: Pitanje za programere a i za ljubitelje logike i igara

Post by PeeJay »

desperate housewife wrote:
Cookie85 wrote:
desperate housewife wrote:da li ima neko ko se bavi programiranjem u Javi?

Code: Select all

public class Da {
   public static void main(String[] args) {
      System.out.println("Ima, Zasto ti treba?");
   }
}

Mozes li u jednoj recenici reci zasto bismo koristili konstruktor umjesto najobicnijeg proglasavanja varijabli, i dodjeljivanja vrijednosti*? Sta je prednost konstruktorima, ali reci mi jednostavnim rijecima ako moze bez gomile strucnih izraza koje ne razumijem? Hvala
Kao prvo: konstruktor je metoda, koja podesava (inicialno) stanje objekta, dok sve ostale metode u stvari opredeljuju ponasanje objekta. Sto se tice podesavanja variable pomocu konstruktora ili podesavanja variable primitivnog tipa, stvar je sledeca:
- primitivni tipovi imaju unaprijed poznatu velicinu, npr. int 32 bita, itd. zbog toga konstruktor nije potreban, jer deklarisanjem variable rezervise se potrebna memorija i za podatak, koji se u njoj nalazi.
- kompleksni tipovi prilikom deklaracije variable rezervisu uvjek memorije dovoljno taman za pohranivanje adrese, na kojoj ce se objekt nalaziti (npr. 32 bit-a). Tek prilikom prozivanja konstruktora (operaterom new) nasa variabla se popunjava adresom, gje se nas objekat u memoriji nalazi (referencija na objekat) a nas objekat zauzima memoriju u svoj svojoj velicini.

Prednost upotrebe konstruktora je znaci u tom, sto memorija nije zauzeta sve do konstruiranja objekta u memoriji. To ujedno i znaci, da je objektno programiranje uvijek za nijansu sporije od proceduralnog, jer manipulisanje memorijom zahtjeva neko vrijeme.
User avatar
hidr4
Posts: 91
Joined: 19/07/2016 14:43
Location: Saturn

#21 Re: Pitanje za programere a i za ljubitelje logike i igara

Post by hidr4 »

Nije baš svugdje igranje sa memorijom sporije, C++ pointers for the win haha.
User avatar
desperate housewife
Posts: 476
Joined: 25/09/2010 13:47

#22 Re: Pitanje za programere a i za ljubitelje logike i igara

Post by desperate housewife »

PeeJay wrote:



Kao prvo: konstruktor je metoda, koja podesava (inicialno) stanje objekta, dok sve ostale metode u stvari opredeljuju ponasanje objekta. Sto se tice podesavanja variable pomocu konstruktora ili podesavanja variable primitivnog tipa, stvar je sledeca:
- primitivni tipovi imaju unaprijed poznatu velicinu, npr. int 32 bita, itd. zbog toga konstruktor nije potreban, jer deklarisanjem variable rezervise se potrebna memorija i za podatak, koji se u njoj nalazi.
- kompleksni tipovi prilikom deklaracije variable rezervisu uvjek memorije dovoljno taman za pohranivanje adrese, na kojoj ce se objekt nalaziti (npr. 32 bit-a). Tek prilikom prozivanja konstruktora (operaterom new) nasa variabla se popunjava adresom, gje se nas objekat u memoriji nalazi (referencija na objekat) a nas objekat zauzima memoriju u svoj svojoj velicini.

Prednost upotrebe konstruktora je znaci u tom, sto memorija nije zauzeta sve do konstruiranja objekta u memoriji. To ujedno i znaci, da je objektno programiranje uvijek za nijansu sporije od proceduralnog, jer manipulisanje memorijom zahtjeva neko vrijeme.
Ima smisla. Zahvaljujem na detaljnom i čitljivom odgovoru.
User avatar
desperate housewife
Posts: 476
Joined: 25/09/2010 13:47

#23 Re: Pitanje za programere a i za ljubitelje logike i igara

Post by desperate housewife »

Cookie85 wrote:

Svaka klasa koja nije static ima konstruktor. Ako ga programer nije sam napisao, kompajler kreira "prazni" public konstruktor bez argumenata.
Konstruktor se izvrsava prilikom kreiranja instance klase (new) i onaj ko pokusava kreirati instancu mora imati pristup konstruktoru.

Tri najvaznje primjene konstruktora su:

- Postavljanje vrijednosti varijabli prilikom instanciranja klase - vrijednosti proslijedjene kao argument konstruktoru

- Izvrsavanje dijela koda koji mora biti izvrsen prilikom instanciranja klase - tipa otvaranje file za pisanje ukoliko se radi o klasi koja je zaduzena za zapis u file

- Regulacija tko moze instancirati klasu - npr., mozes imati private konstruktor i static metodu koja poziva konstruktor samo ako vec ne postoji instanca te klase, a ako vec postoji vraca postojecu instancu, tako da moze biti samo jedna instanca kreirana (singleton) ili mozes imati protected konstruktor tako da ne mozes instancirati tu klasu, vec samo one koje je nasljedjuju

Primjer:

Code: Select all

public class Vrijeme {

    private int sati;
    private int minute;
    private int sekunde;
    
    //Konstruktor
    
public Vrijeme(int sati, int minute, int sekunde) {
        this.sati = sati;
        this.minute = minute;
        this.sekunde = sekunde;
   }
   
....getteri i setteri ...

}
public class Main (){
       public static void main(String[] args){
            Vrijeme vrijeme = new Vrijeme (neke vrijednosti....); //init klase
            int sati = vrijeme.getSati(); //uporaba klase
            .....
       }
}
Valjda si sad nesto skontao/la.
ovo je malo jasnije. Skontao/la sam :) Dankjewel!
Post Reply