-
1. Data: 2009-04-28 09:50:02
Temat: podobna funkcja pochodna
Od: Krzysztof Poc <f...@w...pl>
Witajcie
Mam funkcje Pokaz() w klasie bazowej. W klasie pochodnej chce miec
prawie taka sama funkcje rozniaca sie jedynie malymi kawalkami kodu.
Funkcja Pokaz() jest raczej dluga.
Jak najlepiej zaimplementowac takie rozwiazanie.
Planuje zrobic cos takiego:
class Bazowa
{
public:
void Pokaz ()
{
... sporo wspolnego kodu ...
PokazImie();
... sporo wspolnego kodu ...
PokazNazwisko();
... sporo wspolnego kodu ...
}
virtual void PokazImie()
{
cout << "Imie z bazowej";
}
virtual void PokazNazwisko()
{
cout << "Nazwisko z bazowej";
}
};
class Pochodna : public Bazowa
{
public:
void PokazImie()
{
cout << "Imie z pochodnej";
}
void PokazNazwisko()
{
cout << "Nazwisko z pochodnej";
}
};
int main ( void )
{
Bazowa *ptr = new Bazowa;
ptr -> Pokaz();
ptr = new Pochodna;
ptr -> Pokaz();
}
Czy istnieje jakies bardziej zgrabne/standardowe rozwiazanie tego typu
problemu ?
dzieki za pomoc
-
2. Data: 2009-04-28 11:46:52
Temat: Re: podobna funkcja pochodna
Od: Paweł Kierski <n...@p...net>
Krzysztof Poc wrote:
> Witajcie
>
> Mam funkcje Pokaz() w klasie bazowej. W klasie pochodnej chce miec
> prawie taka sama funkcje rozniaca sie jedynie malymi kawalkami kodu.
> Funkcja Pokaz() jest raczej dluga.
[...]
> Czy istnieje jakies bardziej zgrabne/standardowe rozwiazanie tego typu
> problemu ?
To właśnie jest standardowe rozwiązanie 8-) Nazywa się "Template
Method".
--
Paweł Kierski
n...@p...net
-
3. Data: 2009-04-30 09:36:23
Temat: Re: podobna funkcja pochodna
Od: "Filip Sielimowicz" <s...@t...tez.wp.pl>
Uzytkownik "Krzysztof Poc" <f...@w...pl> napisal w wiadomosci
news:202f3a4d-744a-4085-9939-7ff29e6ab7ae@z8g2000prd
.googlegroups.com...
> Czy istnieje jakies bardziej zgrabne/standardowe rozwiazanie tego typu
> problemu ?
>
> dzieki za pomoc
A co w tym rozwiazaniu jest nie tak ? Gdzie czujesz niedosyt ?
Musialbys opisac 'cel biznesowy' ;), moze rzeczywiscie mozna go
rozwiazac lepiej stosujac inny wzorzec projektowy.