Article View: pl.comp.lang.c
Article #267705Re: Ciemna strona C++
From: Maciej Sobczak
Date: Thu, 22 Nov 2007 21:46
Date: Thu, 22 Nov 2007 21:46
76 lines
4620 bytes
4620 bytes
On 22 Lis, 20:59, Seweryn Habdank-Wojewódzki <shw_m...@wp.pl> wrote:
> > Ps. Chętnie wrócę do tematu kasowania metod w Pythonowych klasach.
> > To jest ficzer bardzo rzadko przydatny, ale też i rzadko
> > używany i dla newbies przykryty -- grzebanie w __dict__ to zagadnienia dla
> > zaawansowanych.
> > Kiedy może się przydać? Jak masz logicznie podzieloną aplikację na czas
> > inicjalizacji (gdy np. wczytujesz pliki konfiguracyjne, inicjujesz obiekty
> > mające życ do końca itd) i czas właściwego wykonania. Wówczas użycie
> > niektórych metod wskazane w czasie inicjalizaji jest złym pomeysłem w
> > czasie właściwego wykonania -- i można je wywalić.
>
> Ale super, miałem nadzieję, że potrafisz myśleć konstruktywnie, nawet nie
> wiesz jak się cieszę, że potrafisz znajdować plusy tam gdzie można mówić o
> minusach.
Etam, Seweryn, dałeś się wkręcić. To jest Naciąganie Gaci Przez Głowę
(tm).
class ClassForNormalUse
{
public:
void doThis();
void doThat();
};
class ClassWithAdditionalFeaturesForInitialization : public
ClassForNormalUse
{
public:
void readConfigFiles();
void doSomethingSpecialAtTheBeginning();
};
ClassForNormalUse & getIt()
{
static ClassWithAdditionalFeaturesForInitialization x;
x.readConfigFiles();
x.doSomethingSpecialAtTheBeginning();
// ok, object is ready for normal use:
return x;
}
// ...
ClassForNormalUse & x = getIt();
x.doThis();
x.doThat();
x.readConfigFiles(); // WTF? no such method (in compile-time!)
Nie trzeba kasować metod ze słownika, żeby podzielić funkcjonalność
czegoś na etapy.
Wieloetapowość można naturalnie wyrazić ze statycznym systemem typów
posługując się różnymi widokami na ten sam obiekt w różnych chwilach
jego życia. W powyższym przykładzie *jeden* obiekt ma *dwa* różne
widoki: jeden dostępny w funkcji factory a drugi dostępny dla klienta
(tu oczywiście nie chodzi o samą formę factory, bo można to
zorganizować dowolnie). Widok w factory ma większą funkcjonalność,
która nie jest dostępna w czasie używania obiektu przez klienta.
Żadna metoda nie została tu skasowana z żadnego słownika, po prostu
niepotrzebne metody nie istnieją w widoku, którego używa klient. To,
że te metody tam nie istenieją, jest statyczną cechą tego widoku.
I nie, nie trzeba tego opisywać jako "zagadnienie dla zaawansowanych",
bo już samo to określenie pokazuje, że kasowanie metod to zwykłe
Naciąganie Gaci Przez Głowę (tm).
--
Maciej Sobczak * www.msobczak.com * www.inspirel.com
Technical Details
Message-ID:
<f15afef5-4a21-4ac2-8e62-cc0d9c5f71d1@b15g2000hsa.googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!newsfeed00.sul.t-online.de!t-online.de!border2.nntp.dca.giganews.com!nntp.giganews.com!out02a.usenetserver.com!news.usenetserver.com!in02.usenetserver.com!news.usenetserver.com!postnews.google.com!b15g2000hsa.googlegroups.com!not-for-mailReferences:
<fghgeo$spf$1@nemesis.news.tpi.pl> <fgo4c7$mtu$1@news.vectranet.pl> <20071106073039.433f4934@Vorago> <fgqn9m$74j$2@news.vectranet.pl> <618565031.20071107113041@pkierski.net> <fgt6sh$jov$1@news.vectranet.pl> <fgtb6j$nur$1@news.vectranet.pl> <fgv6ba$k14$1@bozon2.softax.pl> <fgvkne$u3b$1@news.vectranet.pl> <fh1tjd$dtt$1@bozon2.softax.pl> <fh206f$2d6$1@news.supermedia.pl> <fh2ma2$rd0$1@news.vectranet.pl> <fh2po8$d0c$1@news.dialog.net.pl> <fh9v4k$mss$2@bozon2.softax.pl> <fhaest$9or$1@news.vectranet.pl> <fheq5d$iot$1@bozon2.softax.pl> <fhhfae$bj$1@news.vectranet.pl> <fi1ot2$24s$1@bozon2.softax.pl> <fi20va$5ud$1@news.vectranet.pl> <fi45ok$g39$1@bozon2.softax.pl> <fi4m84$nme$1@news.vectranet.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!newsfeed00.sul.t-online.de!t-online.de!border2.nntp.dca.giganews.com!nntp.giganews.com!out02a.usenetserver.com!news.usenetserver.com!in02.usenetserver.com!news.usenetserver.com!postnews.google.com!b15g2000hsa.googlegroups.com!not-for-mail From: Maciej Sobczak <see.my.homepage@gmail.com> Newsgroups: pl.comp.lang.c Subject: Re: Ciemna strona C++ Date: Thu, 22 Nov 2007 13:46:59 -0800 (PST) Organization: http://groups.google.com Lines: 89 Message-ID: <f15afef5-4a21-4ac2-8e62-cc0d9c5f71d1@b15g2000hsa.googlegroups.com> References: <fghgeo$spf$1@nemesis.news.tpi.pl> <fgo4c7$mtu$1@news.vectranet.pl> <20071106073039.433f4934@Vorago> <fgqn9m$74j$2@news.vectranet.pl> <618565031.20071107113041@pkierski.net> <fgt6sh$jov$1@news.vectranet.pl> <fgtb6j$nur$1@news.vectranet.pl> <fgv6ba$k14$1@bozon2.softax.pl> <fgvkne$u3b$1@news.vectranet.pl> <fh1tjd$dtt$1@bozon2.softax.pl> <fh206f$2d6$1@news.supermedia.pl> <fh2ma2$rd0$1@news.vectranet.pl> <fh2po8$d0c$1@news.dialog.net.pl> <fh9v4k$mss$2@bozon2.softax.pl> <fhaest$9or$1@news.vectranet.pl> <fheq5d$iot$1@bozon2.softax.pl> <fhhfae$bj$1@news.vectranet.pl> <fi1ot2$24s$1@bozon2.softax.pl> <fi20va$5ud$1@news.vectranet.pl> <fi45ok$g39$1@bozon2.softax.pl> <fi4m84$nme$1@news.vectranet.pl> NNTP-Posting-Host: 85.3.203.41 Mime-Version: 1.0 X-Trace: posting.google.com 1195768019 9354 127.0.0.1 (22 Nov 2007 21:46:59 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Thu, 22 Nov 2007 21:46:59 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: b15g2000hsa.googlegroups.com; posting-host=85.3.203.41; posting-account=bMuEOQoAAACUUr_ghL3RBIi5neBZ5w_S User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9,gzip(gfe),gzip(gfe) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit