-
41. Data: 2012-07-06 13:27:24
Temat: Re: Co może robić konstruktor i dlaczego nie?
Od: Jacek <a...@o...pl>
Dnia Fri, 6 Jul 2012 07:09:49 +0000 (UTC), Edek Pienkowski napisał(a):
> Dnia Fri, 06 Jul 2012 08:17:23 +0200, slawek napisal:
>
>> Użytkownik "Edek Pienkowski" napisał w wiadomości grup
>> dyskusyjnych:jt51ta$7u5$...@m...internetia.pl...
>>
>>>Mam nadzieję, że to lżejsze od Higgsa.
>>
>> Ibidem jest opisany sposób zapisu pliku binarnego w postaci XML, ot po
>> prostu 01101 itd. powinno się zapisywać jako <zero/><one/><one/> etc.
>>
>> Może wywołać oplucie monitora, zakrztuszenie się kanapką, rozlanie
>> kawy/czekolady/piwa na klawiaturę etc. (Przecież pisałem o odprężeniu?!)
>>
>> Formalnie wygląda na "normalny" dokument nt. XML - np. ma uzasadnienie
>> dla i18n dla takiego zapisu - itp. itd.
>
> <dobre/><przecinek/><calkiem/><niezle/> ;)
>
> Edek
Nie tak, Panie Edek.
<d/><o/><b/><r/><e/> itd.;)
-
42. Data: 2012-07-06 13:42:37
Temat: Re: Co może robić konstruktor i dlaczego nie?
Od: "AK" <n...@n...com>
Użytkownik "Paweł Kierski" <n...@p...net> napisał:
> RFC z 1.04 w różnych latach też są fajne 8-)
Ale ten wyjatkowo udany :)
AK
-
43. Data: 2012-07-06 13:50:37
Temat: Re: Co może robić konstruktor i dlaczego nie?
Od: Edek Pienkowski <e...@g...com>
Dnia Fri, 06 Jul 2012 13:42:37 +0200, AK napisal:
> Użytkownik "Paweł Kierski" <n...@p...net> napisał:
>
>> RFC z 1.04 w różnych latach też są fajne 8-)
>
> Ale ten wyjatkowo udany :)
Ba, kreatywność w programowaniu to podstawa...
Edek
-
44. Data: 2012-07-06 15:08:55
Temat: Re: Co może robić konstruktor i dlaczego nie?
Od: Paweł Kierski <n...@p...net>
W dniu 2012-07-06 13:27, Jacek pisze:
> Dnia Fri, 6 Jul 2012 07:09:49 +0000 (UTC), Edek Pienkowski napisał(a):
>
>> Dnia Fri, 06 Jul 2012 08:17:23 +0200, slawek napisal:
>>
>>> Użytkownik "Edek Pienkowski" napisał w wiadomości grup
>>> dyskusyjnych:jt51ta$7u5$...@m...internetia.pl...
>>>
>>>> Mam nadzieję, że to lżejsze od Higgsa.
>>>
>>> Ibidem jest opisany sposób zapisu pliku binarnego w postaci XML, ot po
>>> prostu 01101 itd. powinno się zapisywać jako<zero/><one/><one/> etc.
>>>
>>> Może wywołać oplucie monitora, zakrztuszenie się kanapką, rozlanie
>>> kawy/czekolady/piwa na klawiaturę etc. (Przecież pisałem o odprężeniu?!)
>>>
>>> Formalnie wygląda na "normalny" dokument nt. XML - np. ma uzasadnienie
>>> dla i18n dla takiego zapisu - itp. itd.
>>
>> <dobre/><przecinek/><calkiem/><niezle/> ;)
>>
>> Edek
>
> Nie tak, Panie Edek.
> <d/><o/><b/><r/><e/> itd.;)
Ja bym poszedł
<LATIN_SMALL_LETTER_D/><LATIN_SMALL_LETTER_A/><LATIN
_SMALL_LETTER_L/><LATIN_SMALL_LETTER_E/><LATIN_SMALL
_LETTER_J/>
--
Paweł Kierski
n...@p...net
-
45. Data: 2012-07-06 15:24:48
Temat: Re: Co może robić konstruktor i dlaczego nie?
Od: "AK" <n...@n...com>
Użytkownik "Paweł Kierski" <n...@p...net> napisał:
> Ja bym poszedł
> <LATIN_SMALL_LETTER_D/><LATIN_SMALL_LETTER_A/><LATIN
_SMALL_LETTER_L/><LATIN_SMALL_LETTER_E/><LATIN_SMALL
_LETTER_J/>
W wersji japonskiej:
<HGS_HEISEI_KAKU_GOTHIC_TAI_W3_SMALL_LETER_D>
<HGS_HEISEI_KAKU_GOTHIC_TAI_W3_SMALL_LETER_A>
<HGS_HEISEI_KAKU_GOTHIC_TAI_W3_SMALL_LETER_L>
<HGS_HEISEI_KAKU_GOTHIC_TAI_W3_SMALL_LETER_E>
<HGS_HEISEI_KAKU_GOTHIC_TAI_W3_SMALL_LETER_J>
AK
-
46. Data: 2012-07-06 15:36:52
Temat: Re: Co może robić konstruktor i dlaczego nie?
Od: "slawek" <h...@s...pl>
Użytkownik "AK" napisał w wiadomości grup
dyskusyjnych:jt6ovf$i67$...@i...gazeta.pl...
> W wersji japonskiej:
> <HGS_HEISEI_KAKU_GOTHIC_TAI_W3_SMALL_LETER_D>
> <HGS_HEISEI_KAKU_GOTHIC_TAI_W3_SMALL_LETER_A>
> <HGS_HEISEI_KAKU_GOTHIC_TAI_W3_SMALL_LETER_L>
> <HGS_HEISEI_KAKU_GOTHIC_TAI_W3_SMALL_LETER_E>
> <HGS_HEISEI_KAKU_GOTHIC_TAI_W3_SMALL_LETER_J>
A gdzie deklaracja XML, DTD lub schemat XML ? Gdzie encoding="UTF-8" ? ;)
-
47. Data: 2012-07-06 16:01:34
Temat: Re: Co może robić konstruktor i dlaczego nie?
Od: "slawek" <h...@s...pl>
Użytkownik "Andrzej Jarzabek" napisał w wiadomości grup
dyskusyjnych:1e74e8d1-f280-479f-96a7-fa085ecea990@n1
6g2000vbn.googlegroups.com...
>konstruowany. Czyli jeśli masz klasę B, która wywołuje swój 'run' w
>konstruktorze, tworzysz dziedziczącą po niej klasę D, która nadpisuje
>funkcje wirtualne klasy B, to wywołania tych funkcji w 'run' nadal
>wywołują funkcje zdediniowane dla B, nie te dla D. Nie mówiąc już o
To jest chore.
Ale czas na PODSUMOWANIE...
Pomysł, aby w duchu RAII odpalać np. wątek itp. przez wywołanie
konstruktora, tj. przez samo skonstruowanie obiektu pewnej klasy (w dalszej
dyskusji nazywanej Foo) może być kłopotliwy... bardziej niż np. wywoływanie
dodatkowej publicznej metody run(), a to dlatego że:
1. różne języki w różny sposób rozumieją konstruktor i nie jest on
zupełnie-taką-samą-metodą-jak-inne (vtable, wyjątki), problemy z
dziedziczeniem;
2. możliwe jest przypadkowe stworzenie obiektu tymczasowego (co może w
niezamierzony sposób zrobić coś, czego nie chcielibyśmy);
3. konstruktor powinien zawierać wyłącznie te operacje, które nie mają
efektów ubocznych innych niż tworzenie obiektów powiązanych z daną klasą.
Punkt 3. można tak rozwinąć: konstruktor może tworzyć obiekty zagregowanie,
lecz konsekwentne stosowanie reguły będzie chronić przed nieodwracalnymi
efektami ubocznymi i w tym przypadku. Zawsze należy dążyć do tego, aby para
wywołań konstruktor-destruktor (bez jakichkolwiek innych pomiędzy) była bez
znaczenia dla działania programu. (A ten postulat nie jest spełniony, gdy
konstruktor zawiera nietrywialny run(), tj. wywołanie
procedury/funkcji/metody/czegokolwiek co niesie ze sobą nieodwracalne skutki
np. otwarcie pliku do zapisu i skasowanie w nim "starych" danych.)
-
48. Data: 2012-07-06 16:13:23
Temat: Re: Co może robić konstruktor i dlaczego nie?
Od: "AK" <n...@n...com>
Użytkownik "slawek" <h...@s...pl> napisał:
> 2. możliwe jest przypadkowe stworzenie obiektu tymczasowego (co może w
niezamierzony sposób zrobić
> coś, czego nie chcielibyśmy);
To jest generalnie problem w C++ i dlatego w nietrywialnych przypadkach
do tworzenai obiektow z upodobaniem stosuję fabryki zamiast konstruktorow
(konstruktory sa prywatne).
No tak, czyli to znow taka Java w C++. Prawda.
PS: Nadstawiam klate na koeljne razy Ayatollahow C++ ;)
PS1: Przeciez duza czesc Qt to tez jest taka Java w C++.
AK
-
49. Data: 2012-07-06 16:33:58
Temat: Re: Co może robić konstruktor i dlaczego nie?
Od: Edek Pienkowski <e...@g...com>
Dnia Fri, 06 Jul 2012 16:01:34 +0200, slawek napisal:
> Użytkownik "Andrzej Jarzabek" napisał w wiadomości grup
> dyskusyjnych:1e74e8d1-f280-479f-96a7-
f...@n...googlegroups.com...
>
>>konstruowany. Czyli jeśli masz klasę B, która wywołuje swój 'run' w
>>konstruktorze, tworzysz dziedziczącą po niej klasę D, która nadpisuje
>>funkcje wirtualne klasy B, to wywołania tych funkcji w 'run' nadal
>>wywołują funkcje zdediniowane dla B, nie te dla D. Nie mówiąc już o
>
> To jest chore.
>
> Ale czas na PODSUMOWANIE...
>
> Pomysł, aby w duchu RAII odpalać np. wątek itp. przez wywołanie
> konstruktora, tj. przez samo skonstruowanie obiektu pewnej klasy (w
> dalszej dyskusji nazywanej Foo) może być kłopotliwy...
Czekaj, mówisz o future<> może? Zawsze implementowałem future tak,
że po skonstruowaniu już działa.
Edek
-
50. Data: 2012-07-06 19:11:39
Temat: Re: Co może robić konstruktor i dlaczego nie?
Od: Bogusław Szczepanowski <n...@i...net>
Dnia 06-07-2012 o 11:10:35 Andrzej Jarzabek <a...@g...com>
napisał(a):
> Powody mogłyby być, natomiast np. w C++ będzie to vtable dla aktualnie
> konstruowanej klasy, a nie dla końcowego typu obiektu, który jest
> konstruowany. Czyli jeśli masz klasę B, która wywołuje swój 'run' w
> konstruktorze, tworzysz dziedziczącą po niej klasę D, która nadpisuje
> funkcje wirtualne klasy B, to wywołania tych funkcji w 'run' nadal
> wywołują funkcje zdediniowane dla B, nie te dla D. Nie mówiąc już o
> pięknej okazji do wprowadzenia UB jeśli klasa jest abstrakcyjna.
>
> W Javie jest inaczej, ale niekoniecznie lepiej: cała klasa
> inicjalizowana jest przed konstrukcją i metody są wywoływane dla
> ostatecznego typu, ale to znaczy, że trzeba przewidzieć
> 'nieskonstruowany' stan klasy: nie możesz np. założyć, że jakas
> referencja jest nie-null, jeśli ustawiasz jej wartość w konstruktorze.
A czy ktoś widział gdzieś odpowiednik z Delphi AfterConstruction i
BeforeDestruction?
--
Boguś