eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingAndroid mały myk › Re: Android mały myk
  • Data: 2011-02-17 10:49:10
    Temat: Re: Android mały myk
    Od: Andrzej Jarzabek <a...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On Feb 17, 9:17 am, "Wojciech \"Spook\" Sura" <spook"mad@hatter"op.pl>
    wrote:
    > Dnia 10-02-2011 o 16:40:43 Michoo <m...@v...pl> napisał(a):
    >
    > > W javie natomiast obiekty technicznie rzecz biorąc są referencjami ale  
    > > praktycznie (przez połączenie przez braku operatora przypisania obiektu,  
    > > i projektu biblioteki standardowej (np wszystkie operacje na stringu  
    > > tworzą nowy obiekt a nie modyfikują istniejącego)) mają semantykę  
    > > wartości. Żeby mieć semantykę referencji trzeba zawinąć obiekt w inny  
    > > obiekt pozwalający modyfikować swoje wnętrze przez metody.
    >
    > Ok, ale rozumiem, że instancje klas są przekazywane przez referencję?

    Jest tak: wartości i obiekty to osobne kategorie bytów. Pola klas,
    zmienne, parametry funkcji to wartości. Obiekty natomiast żyją sobie
    na stercie jako instancje klas. Ponieważ zmienne i parametry są
    wartościami, operator przypisania też dotyczy tylko wartości. Obiekty
    moga co najwyżej być powielane metodą kopiującą.

    Jedną z klas typów wartości są referencje na obiekty, które zachowują
    się w sposób spójny z innymi wartościami. W szczególności przypisanie
    wartości referencji do zmiennej powoduje, że zmienna ta zawiera
    (kolejną) referencję do tego samego obiektu.

    Jeśli masz coś takiego:
    int f(A a) {
    a=cośtam();
    ...
    }
    ...
    A x;
    ...
    f(x);

    to semantyka jest taka, że funkcja f przyjmuje przez wartość parametr
    typu referencja do A, który jest traktowany jako lokalna zmienna a
    zawierająca kopię wartości referencji przekazanej przez wywołującego.
    Przy wywołaniu f(x) wartość referencji x zostaje skopiowana do A,
    czyli są w tym momencie (przynajmniej) dwie referencje do tego samego
    obiektu, w momencie, kiedy w f następuje przypisanie a=cośtam()
    lokalna zmienna a przestaje być referencją do tego samego obiektu co
    x, a przyjmuje nową wartość, zwróconą przez wyrażenie cośtam(); w
    kontekście wywołania nie ma to żadnego wpływu na wartość x ani
    referowanego przez x obiektu.

    Ja osobiście nie widzę żadnego problemu w tym podejściu.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: