Thread View: pl.comp.objects
8 messages
8 total messages
Started by Henryk Brys
Fri, 15 Oct 2004 11:16
problem projektowy.
Author: Henryk Brys
Date: Fri, 15 Oct 2004 11:16
Date: Fri, 15 Oct 2004 11:16
42 lines
2553 bytes
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.
Author: Wojciech Jakóbczyk
Date: Fri, 15 Oct 2004 11:26
Date: Fri, 15 Oct 2004 11:26
16 lines
1585 bytes
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.
Author: macko42
Date: Fri, 15 Oct 2004 13:44
Date: Fri, 15 Oct 2004 13:44
16 lines
1470 bytes
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.
Author: Wojciech Jakóbczyk
Date: Fri, 15 Oct 2004 14:04
Date: Fri, 15 Oct 2004 14:04
14 lines
1664 bytes
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.
Author: weletek
Date: Mon, 25 Oct 2004 09:38
Date: Mon, 25 Oct 2004 09:38
55 lines
3616 bytes
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.
Author: macko42
Date: Mon, 25 Oct 2004 13:06
Date: Mon, 25 Oct 2004 13:06
17 lines
1385 bytes
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.
Author: LeSio^
Date: Wed, 27 Oct 2004 06:26
Date: Wed, 27 Oct 2004 06:26
19 lines
1790 bytes
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.
Author: macko42
Date: Fri, 29 Oct 2004 12:56
Date: Fri, 29 Oct 2004 12:56
20 lines
1558 bytes
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