Srodne teme
Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pointeri i JAVA ili u JAVI :)

[es] :: Java :: Pointeri i JAVA ili u JAVI :)

Strane: < .. 1 2 3 4 5

[ Pregleda: 18043 | Odgovora: 86 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

franticnick

Član broj: 19656
Poruke: 372
*.nedstat.nl.

Sajt: www.franticnick.com


+30 Profil

icon Re: Pointeri i JAVA ili u JAVI :)10.06.2008. u 10:08 - pre 193 meseci
Citat:
Toxter: Ovo je sustina svega.

Pozdrav


Imam za tebe jedno pitanje, cisto da vidim kako ti poimas ovo sto si rekao.

Kako to da Vanjin primer u jednom slucaju menja vrednost zaklininih tits (originalni Vanjin primer) a u drugom (mala izmena koju sam nacinio) ne? Sta bi ti rekao, da li je promenljiva prosledjena BY REFERENCE ili BY VALUE ? Pazi potpis funkcije u oba slucaja je isti, izmenjeno je samo telo funkcije!

Originalni Vanjin primer:
Code:

Code:

public class Female {

    private int titsSize;

    public Female(int titsSize) {
        setTitsSize(titsSize);
    }

    public int getTitsSize() {
        return titsSize;
    }

    public void setTitsSize(int titsSize) {
        this.titsSize = titsSize;
    }

    public String toString() {
        return "Size of my tits: " + getTitsSize();
    }

    public static void main(String[] args) {
        Female zaklina = new Female(2);
        System.out.println(zaklina);
        doubleTits(zaklina);
        System.out.println(zaklina);
    }

    private static void doubleTits(Female f) {
        f.setTitsSize(2 * f.getTitsSize());
    }

}


moja izmena:
Code:

private static void doubleTits(Female f) {
        f = new Female(120);
    }
 
Odgovor na temu

gosha
Zemun

Član broj: 2384
Poruke: 589
*.adsl-a-1.sezampro.yu.



+40 Profil

icon Re: Pointeri i JAVA ili u JAVI :)11.06.2008. u 13:29 - pre 193 meseci
@mucky
To sto si ti rekao jeste po zvanocnom ispravnom rezonovanju citanja specifikacije Java jezika i njene tacke 8.x.x., koja govori da kompajler treba da iskopira vrednost reference u memoriji.
Ako si ti proizvodjac Java kompajlera e onda to jeste merodavan dokumenat za tebe, ali ovde se radi o koriscenju java kompajlera, teoriji komapajlera i teoriji programiranja.

Pass by reference, Pass by value, Reference, pointer i td su pojmovi koji su definisani mnogo pre JAVE i u svim programskim jezicima oni znace isto i na isti nacin se tumace.

Ovde je problem sto se referenca pogresno tumaci. Da objasnim plasticno:
Petar(objekat) ima nadimka Perica(referenca). Cesto ce te u literaturi videti da se reference porede sa alijasima, znaci samo drugi naziv za isti predmet. Kada ja viknem: "Perice okreni se.", nece se okrenuti njegovo ime (vrednost reference) u "rateP", nego ce se okrenuti on kao osoba(objekat).
Znaci kada se obracate referenci uvek se gleda isto kao da se obracate Objektu.
U tome i jeste razlika izmedju pointera i reference sto se kod pointera uvek obradjate memoriskoj adresi koja upucuje na Objekat.

Kada se pojam reference primeni na prenos parametara (u bilo kom jeziku) uvek se smatra da je parametar Objekat na koji ta referenca ukazuje, a ne sama vrednost reference.
Ovo je jedino ispravno tumacenje parametara u svim programerskim jezicima ovoga sveta jer se svi oni baziraju istim pojmovima.

Da prenesem teoriju u praksu:

Proizvodnja programa dizajniranog u UML.

Vidi ova klasa kaze da prosledim parametar(Objekat) po vrednosti. A da parametri u JAVI se prenose po vrednosti, znaci ne treba nista da uradim.
Gadan za***.

Obezbedim da mi klasa ima clone() i prilikom prosledjivanja parametara je koristim. - ISPRAVNO


Svi koji i dalje gledaju da se u javi parametri prenose po vrednosti ce imati problema ako nekada budu radili u vecim timovima sastavljenim od programera koji rade u razlicitim jezicima.
Lepo je sto ja mogu da odem u francusku i da pricam srpski jezik ali bojim se da me nece niko razumeti.
Isto tako Java programer treba da prica na univerzalnom programerskom jeziku, a ne da palamudi da je vrednost reference parametar, a ne objekat na koji ona ukazuje.
Ponavljam jos jednom referenca je nacin, a parametar je Objekat.

Poz. Gosha
JokeJunky :)

Mrzim sublimirane marketinske poruke.
 
Odgovor na temu

srki
Srdjan Mitrovic
Auckland, N.Z.

Član broj: 2237
Poruke: 3654
*.xdsl.xnet.co.nz.



+3 Profil

icon Re: Pointeri i JAVA ili u JAVI :)11.06.2008. u 15:10 - pre 193 meseci
Gosho, sve sto si objasnjavao svi vec znaju ali nikako da razumes da je rec samo o tome da koristimo razlicitu terminologiju.
Citat:
gosha:
Vidi ova klasa kaze da prosledim parametar(Objekat) po vrednosti. A da parametri u JAVI se prenose po vrednosti, znaci ne treba nista da uradim.
Gadan za***.


Ali ja ne smatram da u Javi mozes da preneses Objekat vec samo pokazivac na taj objekat. Kada u C++u napises Integer a onda se to kreira na steku i a je referenca od objekta dok se u Javi kreira objekat na heap-u a na steku je samo taj pokazivac na taj objekat (isto kao u C++u Integer* a). Kada pozovem neku funkciju(a) tu ce da mi se prosledi vrednost tog pokazivava a. Ja koristim istu terminologiju kao kreator Jave koji kaze da se u Javi sve prenosi po vrednosti. Da li hoces da kazes da on gresi?

Citat:
Svi koji i dalje gledaju da se u javi parametri prenose po vrednosti ce imati problema ako nekada budu radili u vecim timovima sastavljenim od programera koji rade u razlicitim jezicima.

Ja upravo mislim obrnuto. Radim u timu od 20 ljudi (a samo na ovom spratu nas ima oko 60) i koristimo barem 6 razlicitih jezika i nemam apsolutno nikakvih problema. Da postoji problem vec bi se menadzeri ili kolege zalili ali upravo je obrnuta situacija.

Citat:
Ponavljam jos jednom referenca je nacin, a parametar je Objekat.

Ne, parametar je pokazivac na objekat ali opet to ne znaci da ti nisi u pravu vec jednostavno koristimo drugu terminologiju. Zasto bi inace kreator jave rekao da se u javi sve prenosi po vrednosti? Ispalo bi da se objekat prenosi po vrednosti ako bi on koristio tvoju terminologiju.

[Ovu poruku je menjao srki dana 12.06.2008. u 09:20 GMT+1]
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
*.microsoft.com.



+6 Profil

icon Re: Pointeri i JAVA ili u JAVI :)11.06.2008. u 15:41 - pre 193 meseci
Citat:
gosha:  Svi koji i dalje gledaju da se u javi parametri prenose po vrednosti ce imati problema ako nekada budu radili u vecim timovima sastavljenim od programera koji rade u razlicitim jezicima.


Upravo obrnuto. Kada meni (prevashodno C++ programeru) neko kaže da prenosi objekat po referenci, jedino što ću da pomislim je:

Code:


void funkcija(Objekat& o);
...
Objekat o;
funkcija (o);


A to je nešto sasvim drugo nego prosleđivanje referenci na objekte u Javi - ovde je objekat imenovan i mogu da mu pristupam direktno, a u Javi je anoniman i pristupam mu samo preko referenci koje su imenovane.

C# programer će da pomisli da pozivaš nešto kao:

Code:

var o = new Object();
funkcija (ref o);


itd.

Ne vidim čemu rasprava: U Javi se sve prenosi po vrednosti, što ima svojih dobrih strana (jednostavnost) i loših (probaj da napišeš metod swap u Javi).
 
Odgovor na temu

gosha
Zemun

Član broj: 2384
Poruke: 589
*.adsl-a-1.sezampro.yu.



+40 Profil

icon Re: Pointeri i JAVA ili u JAVI :)11.06.2008. u 17:18 - pre 193 meseci
Srki u prvoj recenici sam napisao da je to stanoviste tacno ako citas Java specifikaciju. U njoj lepo pise da se vrednost referenci kopira prilikom prosledjivanja f-ji.
Ja to nisam ni sporio. Po meni je sporan nacin na koji se gleda na to sta je parametar.


Poz. Gosha
JokeJunky :)

Mrzim sublimirane marketinske poruke.
 
Odgovor na temu

gosha
Zemun

Član broj: 2384
Poruke: 589
*.adsl-a-1.sezampro.yu.



+40 Profil

icon Re: Pointeri i JAVA ili u JAVI :)11.06.2008. u 20:26 - pre 193 meseci
Vidim da je moje misljenje o pogledu na to sta je parametar suporotno od JAVA sveta pa cu ga ipak korigovati.

Izvinjavam se svima.

Poz. Gosha
JokeJunky :)

Mrzim sublimirane marketinske poruke.
 
Odgovor na temu

Java Beograd
Novi Beograd

Član broj: 11890
Poruke: 9506
*.lukoil.co.yu.



+10254 Profil

icon Re: Pointeri i JAVA ili u JAVI :)12.06.2008. u 08:46 - pre 193 meseci
Kao što rekoh, u Javu ulete C++ developeri, zbunjeni svojom i java terminologijom, pa donesu haos svojim izjavama. (Uopšte ne želim da tvrdim da je nečija izjava tačna ili nije). Tako nam se javio i Dragi Tata, koji za sebe kaže da je pretežno C++ developer i lepo i konačno potvrdi "Ne vidim čemu rasprava: U Javi se sve prenosi po vrednosti."

Zato sebi dajem slobodu, da kao Java developer lepo i konaćno izjavim.

Ne vidim čemu rasprava: u Javi se primitive (int, float, char, byte, boolean ...) prenose po vrednosti, a objekti po referenci, što ima svojih dobrih strana a i loših.

Pozdrav.

[Ovu poruku je menjao Java Beograd dana 12.06.2008. u 10:35 GMT+1]
OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
 
Odgovor na temu

srki
Srdjan Mitrovic
Auckland, N.Z.

Član broj: 2237
Poruke: 3654
*.xdsl.xnet.co.nz.



+3 Profil

icon Re: Pointeri i JAVA ili u JAVI :)12.06.2008. u 09:39 - pre 193 meseci
Jeste da je ovde rec o javi ali nadam se da se neces ljutiti ako ubacim malo C# jer je u mnogim stvarima slican javi.

Ako imas ovakvu definiciju: StringBuilder o = new StringBuilder();
kako bi onda rekao da funkcija funkcija(StringBuilder o); prenosi parametre? To je ekvivalentno javi pa bi pretpostavljam rekao da prenosi po vrednosti. A kako bi onda rekao da funkcija funkcija(ref StringBuilder o); prenosi vrednosti?

Nadam se da ces iz ovog primera videti zasto gresis. Da li mislis da autor jave isto gresi kada kaze da se sve prenosi po vrednosti?

Citat:
Kao što rekoh, u Javu ulete C++ developeri, zbunjeni svojom i java terminologijom, pa donesu haos svojim izjavama.

Bezveze mi je stvarno da se u raspravu uplicu ad hominem napadi (koliki ti je programerski staz, u cemu programiras i sl.) ali ipak cu da pomenem da sam duzi niz godina pretezno Java developer tako da ovo uopste nema veze sa tim da li znam C++. Zbunjen nisam bio ni malo i ne smeta mi nista u obavljanju mog posla.

Ajde posto kazes da se objekti u Javi prenose po referenci, da li mozes u Javi da napises swap funkciju za stringove?
 
Odgovor na temu

Java Beograd
Novi Beograd

Član broj: 11890
Poruke: 9506
*.lukoil.co.yu.



+10254 Profil

icon Re: Pointeri i JAVA ili u JAVI :)12.06.2008. u 10:29 - pre 193 meseci
String je immutabile
OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
 
Odgovor na temu

anon315

Član broj: 315
Poruke: 1657
*.adsl-a-1.sezampro.yu.



+13 Profil

icon Re: Pointeri i JAVA ili u JAVI :)12.06.2008. u 10:47 - pre 193 meseci
Citat:
Java Beograd: String je immutabile


Upravo tako. A ako ste bas zapeli za swapom onda uradis ovako nesto:

Code:

public class MutableString {

    private String value;

    public MutableString(String value) {
       setValue(value);
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public String toString() {
        return value;
    }

    public static void main(String[] args) {
        MutableString a = new MutableString("Ja sam A");
        MutableString b = new MutableString("Ja sam B");
        System.out.println("a: " + a);
        System.out.println("b: " + b);
        swap(a, b);
        System.out.println("a: " + a);
        System.out.println("b: " + b);
    }

    public static void swap(MutableString s1, MutableString s2) {
        String tmp = s1.getValue();
        s1.setValue(s2.getValue());
        s2.setValue(tmp);
    }

}
 
Odgovor na temu

Java Beograd
Novi Beograd

Član broj: 11890
Poruke: 9506
*.lukoil.co.yu.



+10254 Profil

icon Re: Pointeri i JAVA ili u JAVI :)12.06.2008. u 10:55 - pre 193 meseci
<SARKAZAM>

MIRAKUL !

Vanja je opet napisao metodu koja menja objekat ! I time uneo dodatnu zabunu u diskusiju. Mnogi će se upecati !

</SARKAZAM>

OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
 
Odgovor na temu

anon315

Član broj: 315
Poruke: 1657
*.adsl-a-1.sezampro.yu.



+13 Profil

icon Re: Pointeri i JAVA ili u JAVI :)12.06.2008. u 10:58 - pre 193 meseci
Vidis kako mi ide
 
Odgovor na temu

hyle
Perica Milošević
Belgrade

Član broj: 30030
Poruke: 150
77.247.200.*

Sajt: www.linkedin.com/in/peric..


+4 Profil

icon Re: Pointeri i JAVA ili u JAVI :)12.06.2008. u 11:02 - pre 193 meseci
Kada bi neki početnik pročitao ovu temu pomislio bi da se raspravlja o nekom teškom problemu, a ne o elementarnom konceptu.
Citat:
Java Beograd:u Javi se primitive (int, float, char, byte, boolean ...) prenose po vrednosti, a objekti po referenci


Vidi, ovde ti fali jedna reč u definiciji: ... a objekti po vrednosti reference.
Ukoliko parametar prenosiš po adresi onda je moguće da u metodi uradiš promenu vrednosti prosleđenog parametra. To u Javi nije moguće jer Java uvek prenosti parametre po vrednosti, bez obzira da li se radi o primitivi ili referenci. Nemoj molim te zbunjivati ljude sopstvenim tumačenjima, taj koncept prenošenja po vrednosti ili adresi je mnogo stariji od Jave.
 
Odgovor na temu

Java Beograd
Novi Beograd

Član broj: 11890
Poruke: 9506
*.lukoil.co.yu.



+10254 Profil

icon Re: Pointeri i JAVA ili u JAVI :)12.06.2008. u 11:11 - pre 193 meseci
E pa upravo to i pišem, od početka. (Pročitaj osmi post na ovoj temi, pre 6 dana i 21h -u momentu pisanja ovog posta)

Thinking in Java

Dakle, razmišljati na Java jeziku. Jer, nikako drugačije u Javi ni ne može biti, nego "po vrednosti reference". Ali na Java jeziku, to se kaže "po referenci".
Ti pričaš na C jeziku, a ja na Java jeziku.




OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
 
Odgovor na temu

franticnick

Član broj: 19656
Poruke: 372
*.nedstat.nl.

Sajt: www.franticnick.com


+30 Profil

icon Re: Pointeri i JAVA ili u JAVI :)12.06.2008. u 11:26 - pre 193 meseci
Citat:
Java Beograd:
... Jer, nikako drugačije u Javi ni ne može biti, nego "po vrednosti reference". Ali na Java jeziku, to se kaže "po referenci".


Neobicno mi je drago da si konacno dosao do odgovora na "Da li se slazes da se reference u Javi uvek prenose by value?":

konacni zakljucak: u Javi se sve prenosi po vrednosti.
 
Odgovor na temu

augustus
Novi Sad - Beograd

Član broj: 101581
Poruke: 358
*.com
Via: [es] mailing liste



+46 Profil

icon Re: Pointeri i JAVA ili u JAVI :)12.06.2008. u 11:34 - pre 193 meseci
Mozda tvoj zakljucak...Java Beograd je to savrseno objasnio u prethodnom
postu.
"Čovek je biće koje se na sve navikava, i ja mislim da je ovo njegova najbolja definicija."
Fjodor M. Dostojevski
 
Odgovor na temu

hyle
Perica Milošević
Belgrade

Član broj: 30030
Poruke: 150
77.247.200.*

Sajt: www.linkedin.com/in/peric..


+4 Profil

icon Re: Pointeri i JAVA ili u JAVI :)12.06.2008. u 11:35 - pre 193 meseci
Vidi ovako, metoda može primati kao parametar reference (ili pointere u nekom drugom jeziku), a da se ipak ne radi o prenošenju parametara po adresi.

Suština prenošenja parametara po adresi nije u tipu parametra, već u tome što se promene vrednosti parametra u toku izvršenja metode vide i po završetku izvršavanja metode, tj. metoda može promeni vrednost parametara koji su prosleđeni po adresi. Tako nešto nije moguće izvesti u Javi.
 
Odgovor na temu

franticnick

Član broj: 19656
Poruke: 372
*.nedstat.nl.

Sajt: www.franticnick.com


+30 Profil

icon Re: Pointeri i JAVA ili u JAVI :)12.06.2008. u 11:37 - pre 193 meseci
Citat:

Mozda tvoj zakljucak...Java Beograd je to savrseno objasnio u prethodnom
postu.


Dobro onda zakljucak za one koji razumeju samo jezik kojim govori "Java Beograd"

Citat:
Java Beograd
Jer, nikako drugačije u Javi ni ne može biti, nego "po vrednosti reference".
 
Odgovor na temu

srki
Srdjan Mitrovic
Auckland, N.Z.

Član broj: 2237
Poruke: 3654
*.xdsl.xnet.co.nz.



+3 Profil

icon Re: Pointeri i JAVA ili u JAVI :)12.06.2008. u 11:42 - pre 193 meseci
Citat:
Java Beograd: String je immutabile

Nema to veze, u C#u mozes da napravis funkciju koja ce da zameni immutable objekte zato sto tu mozes da napravis funkciju koja prosledjuje parametre po referenci. Ajde odgovori na ono pitanje o funkcijama iz moje prethodne poruke? Kako bi rekao da se prenose parametri u slucaju da je funkcija definisana sa funkcija(Object o) a kako kada je definisana sa funkcija(ref Object o) ? Problem sa Vanjinim resenjem je sto je ta funkcija onda vezana za specificnu klasu i nece raditi ako pasujes objekte koji su izvedeni od te klase. Znaci ne mozes da napravis funkciju koja ce da swapuje dva proizvoljna objekta. To znaci java ne pasuje po referenci vec po vrednosti. Verovatno tvorac jave nema dovoljno staza kad tvrdi suprotno.
 
Odgovor na temu

staticInt

Član broj: 66101
Poruke: 485
79.101.243.*



+43 Profil

icon Re: Pointeri i JAVA ili u JAVI :)12.06.2008. u 11:44 - pre 193 meseci
Ako bas hocete da upotrebite rec pointer i javu u istoj recenici onda probajte da zamislite da je u javi svaki objekat pointer za sebe.
 
Odgovor na temu

[es] :: Java :: Pointeri i JAVA ili u JAVI :)

Strane: < .. 1 2 3 4 5

[ Pregleda: 18043 | Odgovora: 86 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.