🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #4800

Re: Pytanko dla "wiedzaczych w C++"

#4800
From: Sektor van Skijlen
Date: Wed, 27 Jan 1999 17:31
49 lines
3362 bytes
W ostatnim odcinku, A. Hajderek naskrobal:
:>To znaczy, ze normalne metody po dziedziczeniu mozna przeciazac. Ulatwia to
:>tworzenie wielometod (na razie niestety w hierarchii zamknietej).

: Prosze podac przyklad i wyjasnic stosowana terminologie, wzglednie
: podac odnosniki do wlasciwej literatury, poniewaz to co pan pisze ani nie
: wiele wnosi do dyskusji, ani odpowiada na pytanie.

: [Wirtualnosc funkcji nie ma wplywu na fakt przeslaniania nazwy funkcji.
: Program kolegi Mateusza nie skompiluje sie bez wzgledu na to
: czy funkcje beda wirtualne czy nie.]

Nie chce mi sie myslec nad odpowiednim programem, wiec odsylam do literatury:

Bjarne Stroustrup "Projektowanie i rozwoj jezyka C++".

Co do wnoszenia tego do dyskusji - wielometody sa funkcjami wirtualnymi o
roznych parametrach i tych samych nazwach, ale wywolywanymi na podstawie dwoch
obiektow - sadze wiec, ze to dobry przyklad przeciazania metod wirtualnych.

Wyjasnienia moze zadac okreslenie "hierarcha zamknieta". Otoz przy tworzeniu
projektu, zakladamy jakas klase bazowa i jakies klasy pochodne. Jesli w
przyszlosci postanowimy to rozbudowac o dodatkowe klasy pochodne, to trzeba
zrobic rozne modyfikacje.

Hierarchia otwarta jest wtedy, jesli klasa bazowa nic nie wie o klasach
pochodnych. W takiej sytuacji po prostu dopisujemy nowe klasy nie modyfikujac
nic w klasie bazowej; tego uzywa sie najczesciej (na 100% w bibliotekach).
Sytuacja jest o wiele latwiejsza, bo mozemy sobie pewien kod "zaklepac" jako
nie wymagajacy w zadnym przypadku modyfikacji (przy korzystaniu z bibliotek
jest to jedyne wlasciwe podejscie; grzebanie w bibliotece nie jest dobrym
pomyslem, o czym mowilismy).

Hierarcha zamknieta zas, polega na tym, ze klasa bazowa posiada wszystkie
informacje o dziedziczacych po niej klasach pochodnych. Taka klasa bazowa jest
niemozliwa do dalszego dziedziczenia; wszystkie te klasy istnieja w jakby
"zamknietym" srodowisku - dopisanie nowej klasy wymaga zawsze zmodyfikowania
(czesto dosc powaznego) klasy bazowej. Hierarchii zamknietej nalezy mozliwie
unikac, niestety tylko w takiej hierarchii mozna zaimplementowac wielometody
(wszystko, wraz z dobrym przykladem jest pokazane w w/w ksiazce).

Wyjasnilem to wszystko, gdyz w ksiazce nie zostaly uzyte pojecia hierarchii
otwartej i zamknietej.


-- 
[- Ben a dar van dijn vijt -]
Michal 'Sektor' Malecki <mmalecki@technologist.com>
Politechnika Lodzka, Elektrotechnika/Informatyka st.
Technical Details
Message-ID: <78nii4$b23$5@polonez.man.lodz.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.icm.edu.pl!news.man.poznan.pl!news.man.lodz.pl!not-for-mail
References: <36A9BDA9.86C1BB08@polsl.gliwice.pl> <917268718.4807.0.nnrp-09.c2d9616c@news.demon.co.uk> <36AE5059.65664227@polsl.gliwice.pl> <78kasq$3ds$2@polonez.man.lodz.pl> <917356490.28287.0.nnrp-03.c2d9616c@news.demon.co.uk> <78kmau$abm$2@polonez.man.lodz.pl> <917368660.3898.0.nnrp-03.c2d9616c@news.demon.co.uk>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.icm.edu.pl!news.man.poznan.pl!news.man.lodz.pl!not-for-mail
From: Sektor van Skijlen <sektor@spam.org>
Newsgroups: pl.comp.objects
Subject: Re: Pytanko dla "wiedzaczych w C++"
Date: 27 Jan 1999 17:31:48 GMT
Lines: 49
Message-ID: <78nii4$b23$5@polonez.man.lodz.pl>
References: <36A9BDA9.86C1BB08@polsl.gliwice.pl> <917268718.4807.0.nnrp-09.c2d9616c@news.demon.co.uk> <36AE5059.65664227@polsl.gliwice.pl> <78kasq$3ds$2@polonez.man.lodz.pl> <917356490.28287.0.nnrp-03.c2d9616c@news.demon.co.uk> <78kmau$abm$2@polonez.man.lodz.pl> <917368660.3898.0.nnrp-03.c2d9616c@news.demon.co.uk>
NNTP-Posting-Host: zly.kis.p.lodz.pl
User-Agent: tin/pre-1.4-981225 ("Volcane") (UNIX) (SunOS/5.5.1 (i86pc))
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit