Article View: pl.comp.objects
Article #16903Re: Groovy
From: Piotr Kobzda
Date: Wed, 16 May 2007 12:59
Date: Wed, 16 May 2007 12:59
76 lines
3905 bytes
3905 bytes
Seweryn Habdank-Wojewódzki wrote:
>> to nikt mi z zewnątrz nie popsuje obiektu tak:
>>
>> MyClass obj = new MyClass();
>> obj.myData = null;
>
> Piotrze nie przesadzaj. W C++ tak też się nie da. Pan A.K. zrobił o wiele
> więcej. zrobił cos co trudno się robi w Javie.
Ty myślisz o składni, ja o efektach. W moim C++'owym podejściu,
chodziło o wymazanie "wycinka pamięci", w miejscu prywatnego pola
'impl'. Tego faktycznie w Javie nie zrobię -- jednak Javowy ekwiwalent
tego, to właśnie kod powyżej.
> Tak więc to nie jest żadne
> potrówanie.
Moim zdaniem jest.
> To co napisałeś w C++ też nie przejdzie, dostaniesz w czasie kompilacji
> błąd, że próbujesz grzebać w sekcji prywatnej.
Z przedefiniowaniem private na public też nie?
>> czy tak:
>>
>> Filed f = MyClass.class.getDeclaredField("myData");
>> f.setAccessible(true);
>> f.set(obj, null);
>
> A to?
Co, "a to"?
>> Żadnych PIMPLów, czy jak im tam, nie potrzeba.
>
> PIMPL woją drogą jest dobry (używany nie wprost), jak udostępniasz
> interfejs. PIMPL oznacza "Private implementation", tak więc rozszerzając
> ideę np. pisząc gettery i settery właśnie robisz pimpla, tylko tego tak nie
> nazywasz.
Jasne. Zauważ jednak, że nie mówię o "private implementation", a o
łamaniu _dostępu_ do tej.
> Podsumowując. PIMPL służy też do robienia niezależnych ubgrade
> poszczególnych części kodu bez konfliktów. Chyba że zmiany są na tyle duże
> że dotyczą interfejsu publicznego, ale wtedy nie ma rady.
Sewerynie. Nie tłumacz mi proszę po co jest niepubliczna implementacja.
Poza tym, fakt że nie używam C++ od lat wcale nie oznacza, że nie
pamiętam co i po co się robiło.
Ba, robiłem te same myki jeszcze w gołym C, zanim w ogóle C++ zacząłem
używać, udostępniając w headerze modułów np.:
struct MyStruct {
// dane publiczne...
void * myPrivateData; // faktyczny typ znała tylko moja
implementacja
}
Tylko po co ja mam się w to bawić powiedz mi? Mam środowisko, które z
tymi wszystkimi problemami, o których wspomniałeś, radzi sobie dużo
lepiej, niż Twoje wyrzeźbione PIMPLe. Nie szkoda Ci czasu na te
wszystkie chocki klocki, skoro i tak jest to dziurawe?
piotr
Technical Details
Message-ID:
<f2ev7b$n70$1@inews.gazeta.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mailReferences:
<f1tdl6$2s4$1@inews.gazeta.pl><f1todc$8s5$1@inews.gazeta.pl> <f1tss8$iq3$1@inews.gazeta.pl> <f1u2qu$1pm$1@inews.gazeta.pl> <1178922714.630317.141500@y80g2000hsf.googlegroups.com> <f22v79$3gu$1@inews.gazeta.pl> <f246sk$b8s$1@news.vectranet.pl> <f24i4s$6pe$1@inews.gazeta.pl> <f24s89$vs3$1@news.vectranet.pl> <f24u05$nnf$1@inews.gazeta.pl> <f24uor$39e$1@news.vectranet.pl> <f2586r$asf$1@inews.gazeta.pl> <f26fc9$iu6$1@news.vectranet.pl> <f287ie$354$1@inews.gazeta.pl> <f298ag$b63$1@news.vectranet.pl> <f29mdl$m5f$1@inews.gazeta.pl> <f2aa6n$cp8$1@news.vectranet.pl> <f2ad64$auv$1@inews.gazeta.pl> <f2afqc$i98$1@news.vectranet.pl> <f2ahqh$6n8$1@inews.gazeta.pl> <f2ara9$dj2$1@inews.gazeta.pl> <f2bnm3$r8g$1@inews.gazeta.pl> <f2eg7i$ga0$1@inews.gazeta.pl> <f2eku0$501$1@news.vectranet.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail From: Piotr Kobzda <pikob@gazeta.pl> Newsgroups: pl.comp.objects Subject: Re: Groovy Date: Wed, 16 May 2007 14:59:22 +0200 Organization: "Portal Gazeta.pl -> http://www.gazeta.pl" Lines: 76 Message-ID: <f2ev7b$n70$1@inews.gazeta.pl> References: <f1tdl6$2s4$1@inews.gazeta.pl><f1todc$8s5$1@inews.gazeta.pl> <f1tss8$iq3$1@inews.gazeta.pl> <f1u2qu$1pm$1@inews.gazeta.pl> <1178922714.630317.141500@y80g2000hsf.googlegroups.com> <f22v79$3gu$1@inews.gazeta.pl> <f246sk$b8s$1@news.vectranet.pl> <f24i4s$6pe$1@inews.gazeta.pl> <f24s89$vs3$1@news.vectranet.pl> <f24u05$nnf$1@inews.gazeta.pl> <f24uor$39e$1@news.vectranet.pl> <f2586r$asf$1@inews.gazeta.pl> <f26fc9$iu6$1@news.vectranet.pl> <f287ie$354$1@inews.gazeta.pl> <f298ag$b63$1@news.vectranet.pl> <f29mdl$m5f$1@inews.gazeta.pl> <f2aa6n$cp8$1@news.vectranet.pl> <f2ad64$auv$1@inews.gazeta.pl> <f2afqc$i98$1@news.vectranet.pl> <f2ahqh$6n8$1@inews.gazeta.pl> <f2ara9$dj2$1@inews.gazeta.pl> <f2bnm3$r8g$1@inews.gazeta.pl> <f2eg7i$ga0$1@inews.gazeta.pl> <f2eku0$501$1@news.vectranet.pl> NNTP-Posting-Host: xdsl-2179.zgora.dialog.net.pl Mime-Version: 1.0 X-Trace: inews.gazeta.pl 1179320363 23776 81.168.232.131 (16 May 2007 12:59:23 GMT) X-Complaints-To: usenet@agora.pl NNTP-Posting-Date: Wed, 16 May 2007 12:59:23 +0000 (UTC) X-User: pikob In-Reply-To: <f2eku0$501$1@news.vectranet.pl> User-Agent: Thunderbird 1.5.0.10 (Windows/20070221) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit