ďťż
 
[poczatkujacy] odpowiednik wskaznika na tablice ďťż
 
[poczatkujacy] odpowiednik wskaznika na tablice
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[poczatkujacy] odpowiednik wskaznika na tablice



Lulek - 22-11-2006 00:41
[poczatkujacy] odpowiednik wskaznika na tablice
  Witam

Znów mam pytanie z serii bardzo początkujących. Wiem, że takie lubicie. ;)

Ciągle nie mogę przywyknąć do braku wskaźników w takiej postaci w jakiej je
miałem w C/C++. Chyba nie zakumałem tak naprawdę jeszcze filozofii javy. :)
No ale staram się i mam nadzieję, że ktoś mi pomoże. Mam taki "problem"...

Mam trzy tablice przechowujące pewne obiekty. Chcę żeby różne metody
zamiennie korzystały z tych tablic ale nie chcę podawać metodom tych tablic
jako argumenty. Chciałbym mieć jakiś "wskaźnik" pokazujący aktualnie używaną
tablicę. Może na przykładzie będzie to bardziej zrozumiałe...

public class Obiekt
{
public void costam()
{
}
};

public Obiekt obiekty1[] = new Obiekt[10];
public Obiekt obiekty2[] = new Obiekt[50];
public Obiekt obiekty3[] = new Obiekt[30];

public void metoda()
{
obiekty[5].costam();
}

Chcialbym zebym uzywajac tablicy "obiekty" tak naprawde uzywal czasem
"obiekty1", czasem "obiekty2" i czasem "obiekty3". W zaleznosci od tego jaki
wskaznik przypisze talicy "obiekty". Jest to mozliwe? Wiem, ze to moze troche
nieobiektowe podejscie do sprawy i smierdzi wskaznikami ale jednak chcialbym
wiedziec czy moge to jakos zrobic. Gdyby ktos byl tak mily i podszepnal
slowko to bylbym wdzieczny.

Uprzedzam niektore pytania - oczywiscie "Thinking in Java" kupie i przelece
dokladnie w calosci. Niestety nie w tej chwili... :)

Pozdrawiam i mam nadzieje, ze... :)

Lulek

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/





nugaee - 22-11-2006 00:41

  Lulek wrote:
>
> public class Obiekt
> {
> public void costam()
> {
> }
> };
>
> public Obiekt obiekty1[] = new Obiekt[10];
> public Obiekt obiekty2[] = new Obiekt[50];
> public Obiekt obiekty3[] = new Obiekt[30];
>
> public void metoda()
> {
> obiekty[5].costam();
> }
>
> Chcialbym zebym uzywajac tablicy "obiekty" tak naprawde uzywal czasem
> "obiekty1", czasem "obiekty2" i czasem "obiekty3".
pomijajac zagadnienia poprawnosci powyzszego kodu (zakladam ze to
wszystko jest w "srodku" jakies klasy i pomylily ci sie ;) public z
private przy polach tej klasy ob*{1,3}

private Obiekt[] obiekty = obiekty1;

public void setObiekty(int czasem) {
if(czasem == 1) {
obiekty = obiekty1;
return;
}
if(czasem == 2) {
obiekty = obiekty2;
return;
}
if(czasem == 3) {
obiekty = obiekty3;
return;
}
obiekty = obiekty1;
}




Arek Margraf - 22-11-2006 00:41

 
Użytkownik "Lulek" <lulek074.WYTNIJ@gazeta.pl> napisał w wiadomości news:egh3pk$7hi$1@inews.gazeta.pl...
> Witam
>
> Znów mam pytanie z serii bardzo początkujących. Wiem, że takie lubicie. ;)
>
> Ciągle nie mogę przywyknąć do braku wskaźników w takiej postaci w jakiej je
> miałem w C/C++. Chyba nie zakumałem tak naprawdę jeszcze filozofii javy. :)
> No ale staram się i mam nadzieję, że ktoś mi pomoże. Mam taki "problem"...

Mysle ze w C++ miałes problemy z referencjami albo ich nie używałes tzn tylko obiekt albo wskaźnik a nie referencja. Gdybys
używał referencji to przejscie na jave było by łatwiejsze

> Chcialbym zebym uzywajac tablicy "obiekty" tak naprawde uzywal czasem
> "obiekty1", czasem "obiekty2" i czasem "obiekty3". W zaleznosci od tego jaki
> wskaznik przypisze talicy "obiekty". Jest to mozliwe? Wiem, ze to moze troche
> nieobiektowe podejscie do sprawy i smierdzi wskaznikami ale jednak chcialbym
> wiedziec czy moge to jakos zrobic. Gdyby ktos byl tak mily i podszepnal
> slowko to bylbym wdzieczny.
>

no w czym problem przypisujesz obiekty = obiekty1 i działasz na tablicy obiekty. Takie przypisanie to nie jest przepisanie
obiektów a właśnie referencji na nie tzn jeżeli zrobisz

obiekty=obiekty2

i w obiekty 2 usuniesz wszystkie elementy (albo lepiej przypiszesz im wartość null). To w obiekty zobaczysz same wartości null
gdyż przypisanie NIE JEST czyms w rodzaju operatora kopjującego to włąsnie rcazej przypomina przypisanie wskaźnika.

faktycznie - radzę - jeszcze troche o javie poczytac.

A




Lulek - 22-11-2006 00:41

  > pomijajac zagadnienia poprawnosci powyzszego kodu (zakladam ze to
> wszystko jest w "srodku" jakies klasy i pomylily ci sie ;) public z
> private przy polach tej klasy ob*{1,3}

Tak, to co napisalem bylo (tak modnym ostatnio) "skrotem myslowym". ;) To
raczej pseudokod, ktory mial tylko wyjasnic to co wyzej probowalem powiedziec
po polsku.

Wielkie dzieki za pomoc i przede wszystkim wyrozumialosc. Za chwile wprowadze
w zycie to co poradziles.

Lulek :)

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/





Lulek Cola - 22-11-2006 00:41

  > Mysle ze w C++ miałes problemy z referencjami albo ich nie używałes tzn
> tylko obiekt albo wskaźnik a nie referencja. Gdybys
> używał referencji to przejscie na jave było by łatwiejsze

Masz racje. Nie mialem problemow z referencjami, bo ich po prostu nie
uzywalem. :) To moje C++ to nie bylo tak calkiem C++. Zawsze pisalem w ANSI
C, a potem jak sie przesiadlem na C++ to bylo takie C z klasami. Bardzo mi
sie spodobala idea grupowania wszystkiego w klasy. To wprowadzalo fajny
porzadek w zrodlach. No ale poza klasami to z dobrodziejstw C++ wlasciwie nie
korzystalem. Wiem - wstyd sie przyznac ale tak bylo. :)

> no w czym problem przypisujesz obiekty = obiekty1 i działasz na tablicy
> obiekty. Takie przypisanie to nie jest przepisanie
> obiektów a właśnie referencji na nie tzn jeżeli zrobisz
>
> obiekty=obiekty2
>
> i w obiekty 2 usuniesz wszystkie elementy (albo lepiej przypiszesz im
> wartość null). To w obiekty zobaczysz same wartości null
> gdyż przypisanie NIE JEST czyms w rodzaju operatora kopjującego to włąsnie
> rcazej przypomina przypisanie wskaźnika.

Dzieki. To rzeczywiscie wydaje sie bardzo proste (i fajne) zaraz sprobuje to
zrobic...

> faktycznie - radzę - jeszcze troche o javie poczytac.

Zgadzam sie w 100%. Az mi glupio, ze cos probuje pisac bez dokladnego
przestudiowania "Thinking in Java". No ale sam rozumiesz - nie moglem sie
doczekac... :D Na pewno poczytam to nie tylko troche. Bez tego zawsze bede
mial braki i bede sie zastanawial nad sprawami oczywistymi.

Dzieki za wyrozumialosc i pomoc.
Lulek

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/




Zbyszek Malec - 22-11-2006 00:41

  Dnia Wed, 11 Oct 2006 07:41:15 +0200, Arek Margraf napisał(a):

> Mysle ze w C++ miałes problemy z referencjami albo ich nie używałes tzn tylko obiekt albo wskaźnik a nie referencja. Gdybys
> używał referencji to przejscie na jave było by łatwiejsze

Nie zgodziłbym się. Referencja w javie jest czymś innym niż referencja w
c++. W javie referencja jest bytem, w c++ jest to sposób przekazywania
innych bytów.

--
Zbyszek Malec




nugaee - 22-11-2006 00:42

  Zbyszek Malec wrote:
> Dnia Wed, 11 Oct 2006 07:41:15 +0200, Arek Margraf napisał(a):
> W javie referencja jest bytem, w c++ jest to sposób przekazywania
> innych bytów.
>
moglbys to rozwinac ?




daffca - 22-11-2006 00:42

  nugaee wrote:
> Zbyszek Malec wrote:
>
>> Dnia Wed, 11 Oct 2006 07:41:15 +0200, Arek Margraf napisał(a):
>> W javie referencja jest bytem, w c++ jest to sposób przekazywania
>> innych bytów.
>>
> moglbys to rozwinac ?

kolega mial na mysli (mam nadzieje :-) ) ze w c++ referencja to palec,
ktorym wskazujesz obiekt, miejsce w tablicy,

a w javie to obiekt wskazany palcem,...

poprawcie jak zle powiedzialem:)

pozdr.dfc




daffca - 22-11-2006 00:42

  daffca wrote:
> nugaee wrote:
>
>> Zbyszek Malec wrote:
>>
>>> Dnia Wed, 11 Oct 2006 07:41:15 +0200, Arek Margraf napisał(a):
>>> W javie referencja jest bytem, w c++ jest to sposób przekazywania
>>> innych bytów.
>>>
>> moglbys to rozwinac ?
>
>
> kolega mial na mysli (mam nadzieje :-) ) ze w c++ referencja to palec,
> ktorym wskazujesz obiekt, miejsce w tablicy,

z miejscem w tablicy to sie zagalopowalem:(

pozdr.dfc




nugaee - 22-11-2006 00:42

  daffca wrote:
>
> kolega mial na mysli (mam nadzieje :-) ) ze w c++ referencja to palec,
> ktorym wskazujesz obiekt,

problem polega na tym ze imho w javie tez ;)




Arek Margraf - 22-11-2006 00:42

 
Użytkownik "Zbyszek Malec" <zbyszanna@tlen.pl> napisał w wiadomości news:14h7g8a1u5vhx$.1vqbnr5h60qg1.dlg@40tude.net.. .
> Dnia Wed, 11 Oct 2006 07:41:15 +0200, Arek Margraf napisał(a):
>
>> Mysle ze w C++ miałes problemy z referencjami albo ich nie używałes tzn tylko obiekt albo wskaźnik a nie referencja. Gdybys
>> używał referencji to przejscie na jave było by łatwiejsze
>
> Nie zgodziłbym się. Referencja w javie jest czymś innym niż referencja w
> c++. W javie referencja jest bytem, w c++ jest to sposób przekazywania
> innych bytów.

Ale czy ja napisalem ze jedne i drugier referencje to jest to samo ?

LUDZIE CZYTAC UWAZNIE PROSZE

JA tylko napislaem ze znajomosc referencji w C++ ___ułatwia___ posługiwanie się referenjami w javie, a to ze referencje w Javie
maja troche z referencji w C++ a troche ze wskazników w C++ a troche są oryginalne to zupelnie inne bajka.

Poza tym jakbys rozwinąl mysl :

"W javie referencja jest bytem" bo tego - przyznam się - nie rozumiem

A.




Zbyszek Malec - 22-11-2006 00:42

  Dnia Mon, 16 Oct 2006 08:02:06 +0200, Arek Margraf napisał(a):

> Ale czy ja napisalem ze jedne i drugier referencje to jest to samo ?
>
> LUDZIE CZYTAC UWAZNIE PROSZE
>
> JA tylko napislaem ze znajomosc referencji w C++ ___ułatwia___ posługiwanie się referenjami w javie, a to ze referencje w Javie
> maja troche z referencji w C++ a troche ze wskazników w C++ a troche są oryginalne to zupelnie inne bajka.

No i właśnie z tym się nie zgadzam. Referencja w C++ jest czymś innym niż w
Javie i zachowuje się tutaj inaczej.

> Poza tym jakbys rozwinąl mysl :
>
> "W javie referencja jest bytem" bo tego - przyznam się - nie rozumiem

W C++ referencja to jest "przezwisko" na obiekt - zmieniając referencję
zmieniasz obiekt. W C++ referencja jest tożsama z obiektem na który
wskazuje. W C++ nie da się przekazać referencji, w C++ da się jedynie coś
przekazać przez referencję.

A a;
A b;
A & ra = a;
ra = b; //zmiana obiektu a

W javie referencja jest samodzielnym bytem pokazującym na jakiś obiekt.
Przypisanie czegoś do referencji modyfikuje referencję a nie obiekt. W
Javie przekazuje się wyłącznie referencje (jako byty), natomiast nie
istnieje przekazywanie przez referencję (jako metoda przekazywania
parametrów).

A a = new A();
A b = new B();
A ra = a;
ra = b; //zmiana referencji

--
Zbyszek Malec




Arek Margraf - 22-11-2006 00:42

  >> "W javie referencja jest bytem" bo tego - przyznam się - nie rozumiem
>
> W C++ referencja to jest "przezwisko" na obiekt - zmieniając referencję
> zmieniasz obiekt. W C++ referencja jest tożsama z obiektem na który
> wskazuje. W C++ nie da się przekazać referencji, w C++ da się jedynie coś
> przekazać przez referencję.
>
> A a;
> A b;
> A & ra = a;
> ra = b; //zmiana obiektu a
>
> W javie referencja jest samodzielnym bytem pokazującym na jakiś obiekt.
> Przypisanie czegoś do referencji modyfikuje referencję a nie obiekt. W
> Javie przekazuje się wyłącznie referencje (jako byty), natomiast nie
> istnieje przekazywanie przez referencję (jako metoda przekazywania
> parametrów).
>
> A a = new A();
> A b = new B();
> A ra = a;
> ra = b; //zmiana referencji
>

Z Powyższego można wnioskować że czym innym jest operator przypisania w C++ i w Javie a nie, że czym innym są referencje.
Faktycznie W starych Java (1.5 i wiecej na razie nie uzywam - wiec sie nie wypowiadam) nie można było przedefiniować znaczenia
operatora przypisania '=' ale to nie znaczy że w C++ takie a nie inne zachowanie się referencji zależy od tejże a nie od w/w
operatora.

Wiec poprosze o inny przykład że "W javie referencja jest bytem". Z powyzszego to cąły czas nie wynika.

A.




Zbyszek Malec - 22-11-2006 00:42

  Dnia Mon, 16 Oct 2006 12:48:51 +0200, Arek Margraf napisał(a):

> Wiec poprosze o inny przykład że "W javie referencja jest bytem". Z powyzszego to cąły czas nie wynika.

Ale ja nie wiem co tu ma wynikać. W javie referencja jest bytem, ma swoją
wartość. W C++ referencja nie ma wartości, jest po prostu metodą odwołania
się do jakiegoś bytu.

--
Zbyszek Malec




Arek Margraf - 22-11-2006 00:42

 
Użytkownik "Zbyszek Malec" <zbyszanna@tlen.pl> napisał w wiadomości news:nnre3dwjxh18.1b9s4bfwqmrp0$.dlg@40tude.net...
> Dnia Mon, 16 Oct 2006 12:48:51 +0200, Arek Margraf napisał(a):
>
>> Wiec poprosze o inny przykład że "W javie referencja jest bytem". Z powyzszego to cąły czas nie wynika.
>
> Ale ja nie wiem co tu ma wynikać. W javie referencja jest bytem, ma swoją
> wartość. W C++ referencja nie ma wartości, jest po prostu metodą odwołania
> się do jakiegoś bytu.

No ok spróbuję poszukać w dostępnej literaturrze co to znaczy "W javie referencja jest bytem".

pozdr.

Arek M.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [ms sql] =?ISO-8859-2?Q?wy=B6wietlenie_pierwszych_5_rekord?==?ISO-8859-2?Q?=F3w_z_zapytania_=3F_odpowiednik_ROWNUM_w_o?== ?ISO-8859-2?Q?raclu_dla_MS_SQL=27a?= =?ISO-8859-2?Q?=5BOracle=5D_Porownanie_wierszy_z_tych_?==?ISO-8859-2?Q?samych_tablic_na_2_r=F3=BFnych_schematach?= SQL Server 2005: początkujący programista T-SQL ma problem Liczba =?ISO-8859-2?Q?odpowiadaj=B1cych_rekord=F3w_z_drugi?==?ISO-8859-2?Q?ej_tabeli?= [MySQL] Jak wybrac wiele elementow powiazanych z jednym elementem innej tablicy? [oracle] =?ISO-8859-2?Q?=A3=B1czenie_dw=F3ch_tablic_=3F?= 703 zł na początek - wcale NIE najlepszy program partnerski [MS SQL 2005 EXPRESS] Uprawnienia do pól w tablicy [VBA] Dynamiczne tworzenie tablic w bazie MSAccess SQL Server 2005 - początkujący: gdzie jest log?
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • dirtyboys.xlx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com