eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingCo może robić konstruktor i dlaczego nie?Re: Co może robić konstruktor i dlaczego nie?
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!plix.pl!newsfeed2.plix.pl!wsisiz.edu.pl
    !newsfeed2.atman.pl!newsfeed.atman.pl!newsfeed.neostrada.pl!unt-exc-01.news.neo
    strada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
    From: "slawek" <h...@s...pl>
    Newsgroups: pl.comp.programming
    References: <4ff4908d$0$1302$65785112@news.neostrada.pl>
    <1...@g...com>
    <b...@g...com>
    In-Reply-To: <b...@g...com>
    Subject: Re: Co może robić konstruktor i dlaczego nie?
    Date: Thu, 5 Jul 2012 16:08:54 +0200
    MIME-Version: 1.0
    Content-Type: text/plain; format=flowed; charset="iso-8859-2"; reply-type=original
    Content-Transfer-Encoding: 8bit
    X-Priority: 3
    X-MSMail-Priority: Normal
    Importance: Normal
    X-Newsreader: Microsoft Windows Live Mail 15.4.3555.308
    X-MimeOLE: Produced By Microsoft MimeOLE V15.4.3555.308
    Lines: 46
    Message-ID: <4ff5a464$1$1221$65785112@news.neostrada.pl>
    Organization: Telekomunikacja Polska
    NNTP-Posting-Host: 62.69.202.124
    X-Trace: 1341498468 unt-rea-b-01.news.neostrada.pl 1221 62.69.202.124:63705
    X-Complaints-To: a...@n...neostrada.pl
    Xref: news-archive.icm.edu.pl pl.comp.programming:198273
    [ ukryj nagłówki ]

    Użytkownik "Roman W" napisał w wiadomości grup
    dyskusyjnych:bd373b26-93c8-4d46-b671-a240746af7af@go
    oglegroups.com...
    >1. przygotuj zmienne lokalne (np. rozpakuj dane wejsciowe, ustaw
    >odpowiednie opcje)
    >2. wykonaj potrzebna operacje
    >3. posprzataj po sobie

    To da się zrobić np. tak

    class Foo
    {
    public:
    Foo()
    {
    prepare_local_variables();
    execute_necessary_operations();
    }
    private:
    prepare_local_variables() ... // etc.
    };

    Oczywiście, nieco przydługawo, jednak ważne jest, iż na zewnątrz widać tylko
    Foo() oraz domyślny destruktor (ew. niedomyślny). Oczywiście
    prepare_local_variables() może być "wewnętrznym standardem de facto", można
    rozbić to na drobniejsze fragmenty, można execute_necessary_operations()
    robić jako:

    void Foo::execute_necessary_operations()
    {
    execute_internal_operations();
    execute_external_operations();
    while( execute_additional_operations() != NO_MORE_BEER_OR_OPS)
    execute_run(get_param(those->this->where->there));
    }

    Zachowana jest jednak zasadnicza "filozofia" RAII - utworzenie obiektu
    uruchamia proces (rozumiany jako "zasób") - skasowanie obiektu proces
    zatrzymuje. Niepotrzebny jest dodatkowy run(), który byłby widoczny na
    zewnątrz i w dodatku wymagał wzmianki dla użytkownika (użytkownika klasy) w
    dokumentacji.

    Innymi słowy - wsiadasz do samochodu na miejsce kierowcy i samochód ciebie
    rozpoznaje sam, sprawdza czy jesteś właścicielem, czy masz prawo jazdy, czy
    jesteś trzeźwy itd. Nawet nie musisz wiedzieć co to jest np. alkoholomat czy
    kluczyki.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: