🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #16903

Re: Groovy

#16903
From: Piotr Kobzda
Date: Wed, 16 May 2007 12:59
76 lines
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-mail
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>

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