Article View: pl.comp.objects
Article #15706Re: pl.comp.objects FAQ (Frequently Asked Questions and more)
From: Sektor van Skijlen
Date: Thu, 01 Mar 2007 10:51
Date: Thu, 01 Mar 2007 10:51
95 lines
5456 bytes
5456 bytes
Dnia Mon, 26 Feb 2007 22:12:45 +0100, SasQ skrobie: > Dnia Mon, 26 Feb 2007 20:10:02 +0100, rwt napisał(a): > > Być może w języku nadal pozostaje operator przypisania (jak we > > wcześniejszym cytacie), ale... obiekty, które mają program wiążący > > z mechanizmami języka, inny niż zformalizowany, czyli inny niż > > otwarty mimo że istniejący (jak w językach funkcyjnych)- po > > zwykłym skopiowaniu wartości przez sam związek z innymi obiektami > > tworzony przez ten program stają się klonami a nie kopiami. > Atak klonów ;) Nie ma się co śmiać. Kopiowanie nie zachodzi dla obiektów typów niewartościowych, a jedynie dla obiektów typów wartościowych. Kopiowaniu podlega wtedy owa "wartość", która może być dowolnie przenoszona pomiędzy poszczególnymi obiektami. Natomiast obiekty niewartościowe, jak sama nazwa wskazuje, wartości nie mają, więc one podlegają klonowaniu - tworzy się nowy obiekt o nowej tożsamości. W obiektach wartościowych tożsamością jest wartość. > Przyznam że ja też nie zrozumiałem poprzednio, a to "wyjaśnienie" > jeszcze bardziej mi zamieszało i nic z tego nie rozumiem :P > Ponieważ w programowaniu liczy się precyzja, pozwolę sobie > zadać kilka pytań o słownictwo, którego używasz, byśmy się > dobrze rozumieli i posługiwali się tymi samymi definicjami: > 1) Co to są "zmienne typu klasa"? > Moje definicje użytych tutaj słów przedstawiają się tak: > zmienna: typ obiektu, który może zmieniać swój stan. > stała: typ obiektu, który nie może zmieniać swojego stanu. > stan: wartość ;) Dokładnie to bieżąca wartość, w przypadku typów wartościowych. W pozostałych będzie to zespół wszystkich wartości składowych obiektu (jeśli składową jest obiekt, to jeszcze i jego wartości itd.) > obiekt: wydzielony jednolity i ciągły obszar pamięci, który > ma jasno określony typ. > typ: określa jakie wartości/stany może przyjmować obiekt, > jak te stany mogą się zmieniać, oraz jakie operacje > można na tym obiekcie wykonywać > klasa: definiuje nowy typ obiektu > 2) Dlaczego miałyby nie zachodzić dla nich przypisania? > Moja definicja przypisania: > Skopiowanie stanu [wartości] jednego obiektu do drugiego, > zastępując poprzednią wartość obiektu docelowego. Słusznie, pod warunkiem, że to jest obiekt wartościowy. > 3) Czemu dla nich miałyby być tylko inicjalizacje? > Moja definicja inicjalizacji: > Nadanie początkowej wartości obiektowi w momencie jego > utworzenia [można to zrobić tylko wtedy]. Znów - w przypadku typów wartościowych. W pozostałych jest to po prostu inicjalizacja składowych - a dalej już jak wyżej. > 4) Co to są zmienne prymitywne? > Czy chodziło ci może o zmienne [lub w ogólności obiekty] > typów wbudowanych? > Typy wbudowane: istniejące w języku od początku, nie > definiowane przez użytkownika. Kwestia czy to są typy wbudowane, czy nie, zależy od języka. W Javie np. nie ma innych typów wartościowych niż wbudowane - plus referencje, przy czym wartością zmiennej referencyjnej jest referencja do określonego obiektu (lub null). W C++ możemy sobie dowolnie tworzyć typy wartościowe. > 5) Dlaczegóż to tylko dla nich pozostają przypisania? Dla typów wartościowych. > 6) "Być może w języku nadal pozostaje operator przypisania" > Mówisz tutaj o operatorze przypisania dla jakiego typu? > Jednego z typów wbudowanych? Bo nie wiem jak inaczej > zrozumieć że on "pozostaje w języku". Też nie rozumiem ;) > 9) "stają się klonami a nie kopiami" > Czym się różni kopia od klonu? Tym właśnie, że sklonowany obiekt staje się osobnym obiektem z własnym zestawem stanów. Obiekty wartościowe mają określoną tożsamość przez wartość, więc po wykonaniu a = b, 'a' staje się "tym samym" co b - dopóki ktoś nie przypisze mu innej wartości. -- // _ ___ Michal "Sektor" Malecki <sektor(whirl)kis.p.lodz.pl> \\ L_ |/ `| /^\ ,() <ethouris(O)gmail.com> // \_ |\ \/ \_/ /\ C++ bez cholesterolu: http://www.intercon.pl/~sektor/cbx "Java is answer for a question that has never been stated"
Technical Details
Message-ID:
<es6b6u$2ls$1@kujawiak.man.lodz.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.man.lodz.pl!not-for-mailReferences:
<pl-comp-objects-faq-1-1166202604@ict.pwr.wroc.pl> <pan.2007.02.22.19.13.55.43827@go2.pl> <erl5gf$bi2$1@inews.gazeta.pl> <eru75v$dmm$1@bandai.magma-net.pl> <ervbaa$am4$1@inews.gazeta.pl> <pan.2007.02.26.21.12.45.8078@go2.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.man.lodz.pl!not-for-mail
From: Sektor van Skijlen <ethouris@guess.if.gmail.com.is.valid.or.invalid>
Newsgroups: pl.comp.objects
Subject: Re: pl.comp.objects FAQ (Frequently Asked Questions and more)
Date: Thu, 1 Mar 2007 10:51:10 +0000 (UTC)
Organization: LODMAN - Metropolitan Area Network in LODZ, Poland
Lines: 95
Sender: Michal Malecki <sektor@zly.kis.p.lodz.pl>
Message-ID: <es6b6u$2ls$1@kujawiak.man.lodz.pl>
References: <pl-comp-objects-faq-1-1166202604@ict.pwr.wroc.pl> <pan.2007.02.22.19.13.55.43827@go2.pl> <erl5gf$bi2$1@inews.gazeta.pl> <eru75v$dmm$1@bandai.magma-net.pl> <ervbaa$am4$1@inews.gazeta.pl> <pan.2007.02.26.21.12.45.8078@go2.pl>
NNTP-Posting-Host: zly.kis.p.lodz.pl
Mime-Version: 1.0
X-Trace: kujawiak.man.lodz.pl 1172746270 2748 212.191.89.2 (1 Mar 2007 10:51:10 GMT)
X-Complaints-To: abuse@man.lodz.pl
NNTP-Posting-Date: Thu, 1 Mar 2007 10:51:10 +0000 (UTC)
User-Agent: tin/1.6.2-20030910 ("Pabbay") (UNIX) (SunOS/5.9 (sun4u))
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit