🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.objects
8 messages
8 total messages Started by Henryk Brys Fri, 15 Oct 2004 11:16
problem projektowy.
#11791
Author: Henryk Brys
Date: Fri, 15 Oct 2004 11:16
42 lines
2553 bytes
Witam,

Zaczalem wlasnie projektowac czesc pewnego systemu do obrobki danych.
Do systemu trafiac beda zestawy danych, nieco sie od siebie rozniace
typem informacji ktore zawieraja. Jednak kazdy typ danych bedzie
posiadal pewne wspolne atrybuty, na ktorych zalezy mi najbardziej i
na podstawie ktorych przeprowadzane beda obliczenia. Wszystkie jednak
atrybuty (zarowno wspolne jak i rozbiezne) powinny byc przechowywane
i dostepne.

Zalozmy wiec, ze definiuje klase 'dane', ktora zawierac bedzie
podstawowe akcesory i pozostale funkcje operujacych na podstawowych
(czyli wylacznie tych wspolnych) danych.

Definiuje takze dwie klasy specjalizowane: 'daneA' i 'daneB', ktore
dziedzicza z klasy 'dane', definiujac dodatkowe metody obslugujace
niestandardowe dane.

Chcialbym takze stworzyc mechanizm dostepu do roznych zrodel zawierajacych
te dane. Powiedzmy, ze na poczatek bede pobieral dane z pliku CSV oraz
z jakiejs bazy SQL. Tworze glowna klase (lub w sumie interfejs) 'zrodlo',
w ktorym definiuje puste metody dostepu do danych. Tworze dwie klasy
specjalizowane - 'zrodloCSV' i 'zrodloSQL', ktorych metody beda potrafily
dostac sie odpowiednio do danych.

I teraz rodzi sie pytanie - jak zaimplementowac klasy dostepu do danych
w taki sposob, zeby korzystaly jedynie z interfejsu dostarczonego przez
klase 'dane', a nie wyspecjalizowane klasy, a mimo wszystko wrzucaly do
odpowiednich obiektow dane wykraczajace poza standard.

Do glowy przychodzi mi jedynie zaimplementowanie w klasie 'dane' metody
pobierajacej slownik z pozostalymi elementami - wtedy specjalizowane klasy
odpowiadalyby za zinterpretowanie dodatkowych wartosci.

Moze jednak jest sposob, zeby zrobic to bardziej poprawnie?

(Mam wrazenie, ze to typowy problem i odpowiedz powinna byc prosta,
jednak nie znam jej)

-- 
Henryk Brys
Re: problem projektowy.
#11792
Author: Wojciech Jakóbczyk
Date: Fri, 15 Oct 2004 11:26
16 lines
1585 bytes
> Do glowy przychodzi mi jedynie zaimplementowanie w klasie 'dane' metody
> pobierajacej slownik z pozostalymi elementami - wtedy specjalizowane klasy
> odpowiadalyby za zinterpretowanie dodatkowych wartosci.

to jest najprostsze rozwiazanie.

'dane' moglyby tez zwracac metadane, czyli w jakiejs formie zapisane 
informacje o wlasnej wewnetrznej strukturze i metodach dostepu do niej. 
korzystajac z tego 'zrodlo' zrealizuje transfer do/z trwalego nosnika.

w jeszcze innym rozwiazaniu 'zrodlo' moze definiowac interfejs do 
mechanizmu transformujacego do/z ogolnego opakowania. wowczas 'dane' 
dostarczaly by implementacje tego mechanizmu i z niej korzystajac zrodlo 
  realizowaloby zapis/odczyt.

wojtek
Re: problem projektowy.
#11793
Author: macko42
Date: Fri, 15 Oct 2004 13:44
16 lines
1470 bytes
Wojciech Jakóbczyk <jesion_list@USUNTO.gazeta.pl> napisał(a): 

> w jeszcze innym rozwiazaniu 'zrodlo' moze definiowac interfejs do 
> mechanizmu transformujacego do/z ogolnego opakowania. wowczas 'dane' 
> dostarczaly by implementacje tego mechanizmu i z niej korzystajac zrodlo 
>   realizowaloby zapis/odczyt.
> 

to mi sie chyba najbardziej podoba. Moze jednak z drobna roznica, 
ze mechanizm transformujacy z/do ogolnego opakowania proponowalbym
wrzucic do osobnej klasy (klas). Rodzaj 'adaptera'. 
Dzieki temu dostalibysmy troche luzniejsze powiazania miedzy klasami. 


-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: problem projektowy.
#11794
Author: Wojciech Jakóbczyk
Date: Fri, 15 Oct 2004 14:04
14 lines
1664 bytes
>>w jeszcze innym rozwiazaniu 'zrodlo' moze definiowac interfejs do 
>>mechanizmu transformujacego do/z ogolnego opakowania. wowczas 'dane' 
>>dostarczaly by implementacje tego mechanizmu i z niej korzystajac zrodlo 
>>  realizowaloby zapis/odczyt.
> to mi sie chyba najbardziej podoba. Moze jednak z drobna roznica, 
> ze mechanizm transformujacy z/do ogolnego opakowania proponowalbym
> wrzucic do osobnej klasy (klas). Rodzaj 'adaptera'. 
> Dzieki temu dostalibysmy troche luzniejsze powiazania miedzy klasami. 

oczywiscie. piszac "dane dostarczalyby implementacje" mialem na mysli to 
ze dostarczalyby (posrednio albo bezposrednio) osobny obiekt 
implementujacy ten interfejs, a nie ze same go implementowaly.

wojtek
Re: problem projektowy.
#11796
Author: weletek
Date: Mon, 25 Oct 2004 09:38
55 lines
3616 bytes
> 
> Witam,
> 
> Zaczalem wlasnie projektowac czesc pewnego systemu do obrobki danych.
> Do systemu trafiac beda zestawy danych, nieco sie od siebie rozniace
> typem informacji ktore zawieraja. Jednak kazdy typ danych bedzie
> posiadal pewne wspolne atrybuty, na ktorych zalezy mi najbardziej i
> na podstawie ktorych przeprowadzane beda obliczenia. Wszystkie jednak
> atrybuty (zarowno wspolne jak i rozbiezne) powinny byc przechowywane
> i dostepne.
> 
> Zalozmy wiec, ze definiuje klase 'dane', ktora zawierac bedzie
> podstawowe akcesory i pozostale funkcje operujacych na podstawowych
> (czyli wylacznie tych wspolnych) danych.
> 
> Definiuje takze dwie klasy specjalizowane: 'daneA' i 'daneB', ktore
> dziedzicza z klasy 'dane', definiujac dodatkowe metody obslugujace
> niestandardowe dane.
> 
> Chcialbym takze stworzyc mechanizm dostepu do roznych zrodel zawierajacych
> te dane. Powiedzmy, ze na poczatek bede pobieral dane z pliku CSV oraz
> z jakiejs bazy SQL. Tworze glowna klase (lub w sumie interfejs) 'zrodlo',
> w ktorym definiuje puste metody dostepu do danych. Tworze dwie klasy
> specjalizowane - 'zrodloCSV' i 'zrodloSQL', ktorych metody beda potrafily
> dostac sie odpowiednio do danych.
> 
> I teraz rodzi sie pytanie - jak zaimplementowac klasy dostepu do danych
> w taki sposob, zeby korzystaly jedynie z interfejsu dostarczonego przez
> klase 'dane', a nie wyspecjalizowane klasy, a mimo wszystko wrzucaly do
> odpowiednich obiektow dane wykraczajace poza standard.
> 
> Do glowy przychodzi mi jedynie zaimplementowanie w klasie 'dane' metody
> pobierajacej slownik z pozostalymi elementami - wtedy specjalizowane klasy
> odpowiadalyby za zinterpretowanie dodatkowych wartosci.
> 
> Moze jednak jest sposob, zeby zrobic to bardziej poprawnie?
> 
> (Mam wrazenie, ze to typowy problem i odpowiedz powinna byc prosta,
> jednak nie znam jej)

mam wrazenie, ze najleprzym rozwiazaniem tego problemu jest odwrocenie 
zaleznosci pomiedzy klasami( tak jak proponuje to wzorzec mostu )
nie lepiej jest rozwiazac problem w ten sposob, ze to dane wiedza jak sie 
zapisac korzystajac z implementacji jakiejs specyficznej "bioblioteki" dostepu 
do danych... w proponowanym rozwiazaniu klasa bazowa "dane"( warstwa 
biznesowa ) oprocz standardowych metod dostepowych posiadala by metode 
np. "zapiszDane", przy czym konkretna instancja tej lub pochodnej od niej( o 
ile klasa ta nie jest klasa czysta ) klasy majac "swiadomosc" jakie dane 
potrzeba zapisac i majac wskaznik na specyficzna biblioteke, potrafila by sie 
zapisac... wg. mnie to typowe zastosowanie wzorca projektowego mostu, ktory 
jest na tyle dobrze przemyslany, ze jest najmniejszym zlem...


-- 
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Re: problem projektowy.
#11797
Author: macko42
Date: Mon, 25 Oct 2004 13:06
17 lines
1385 bytes
weletek@poczta.onet.pl napisał(a): 


> ... w proponowanym rozwiazaniu klasa bazowa "dane"( warstwa 
> biznesowa ) oprocz standardowych metod dostepowych posiadala by metode 
> np. "zapiszDane", przy czym konkretna instancja tej lub pochodnej od niej( 
o 
> ile klasa ta nie jest klasa czysta ) klasy majac "swiadomosc" jakie dane 
> potrzeba zapisac i majac wskaznik na specyficzna biblioteke, potrafila by 
sie 
> zapisac... 

zauwaz, ze autor watku pisal o roznych zrodlach danych. 


-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: problem projektowy.
#11886
Author: LeSio^
Date: Wed, 27 Oct 2004 06:26
19 lines
1790 bytes
i właśnie to miałem na myśli, oddzielenie abstrakcji od implementacji, 
zapraszam serdecznie do przeglądnięcia kodu: http://republika.pl/weletek

Użytkownik "macko42" <macko42.SKASUJ@gazeta.pl> napisał w wiadomości 
news:clitp9$74t$1@inews.gazeta.pl...
> weletek@poczta.onet.pl napisał(a):
>
>
>> ... w proponowanym rozwiazaniu klasa bazowa "dane"( warstwa
>> biznesowa ) oprocz standardowych metod dostepowych posiadala by metode
>> np. "zapiszDane", przy czym konkretna instancja tej lub pochodnej od 
>> niej(
> o
>> ile klasa ta nie jest klasa czysta ) klasy majac "swiadomosc" jakie dane
>> potrzeba zapisac i majac wskaznik na specyficzna biblioteke, potrafila by
> sie
>> zapisac...
>
> zauwaz, ze autor watku pisal o roznych zrodlach danych.
Re: problem projektowy.
#11795
Author: macko42
Date: Fri, 29 Oct 2004 12:56
20 lines
1558 bytes
macko42 <macko42.SKASUJ@gazeta.pl> napisał(a): 

> Wojciech Jakóbczyk <jesion_list@USUNTO.gazeta.pl> napisał(a): 
> 
> > w jeszcze innym rozwiazaniu 'zrodlo' moze definiowac interfejs do 
> > mechanizmu transformujacego do/z ogolnego opakowania. wowczas 'dane' 
> > dostarczaly by implementacje tego mechanizmu i z niej korzystajac zrodlo 
> >   realizowaloby zapis/odczyt.
> > 
> 
> to mi sie chyba najbardziej podoba. Moze jednak z drobna roznica, 
> ze mechanizm transformujacy z/do ogolnego opakowania proponowalbym
> wrzucic do osobnej klasy (klas). Rodzaj 'adaptera'. 

nie 'adaptera', ale 'mostu' rzecz jasna ;) sorry.



-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads