Jak zaprojektować obiektowo?

0

Piszę importer danych z raportu tekstowego. Konkretnie: strukturę katalogów z raportu programu WhereIsIt. Tam raportowane są kolejne katalogi, nazwałem tu "chunks", zawierające kilkanaście do kilkudziesięciu wierszy. Mam klasę readera znającego format tego raportu i gromadzącego wiersze w liście , każdy wiersz przekszałcając do QStringListy w Qt. Następnie po przeczytaniu chunka tworzony jest obiekt MemChunk który otrzymuje wskaźnik na dane readera, takie jak lista stringlisty, MemChunk ma obiekty klasy MemEntry otrzymujące jeden wiersz. MemEntry widzi, np., że rozmiar powinien być tekstowo w kolumnie 5, nazwa - to złożona kolumna 0 i 1 (name i ext), data to przekształcona kolumna 4 itd.
Tylko jest problem: MemChunk i MemEntry to klasy programu, które mają nie wiedzieć o formacie readera, to reader ma przekształcać kolumny tekstu w dane, (albo jakaś pośrednia klasa), ale jeśli zamiast inicjowania w konstruktorze będę wypełniał pola MemEntry w readerze, to też nie jest za bardzo w stylu obiektowym. Jak to zrobić elegancko?

0

Obiektów design nie mówi nic o inicjalizacji w konstruktorze lub setterze. Jasne że czasem znajdą się obiekty które muszą być mutowalne.

A jeśli już koniecznie chcesz się tego pozbyć to Factory albo AbstractFactory.

0

Jak by działała Factory? Chodzi mi głównie o tym , aby klasy nie były współzależne ale dla raportów były tylko pewne klasy a inne nie wiedziały o formacie raportów.

1

Hmmm może inaczej opisz zagadnienie Bracie Borneq - pokaż przykładowy plik z raportem, a potem opisz, co chciałbyś z niego otrzymać już na samym końcu łańcucha przetwarzania go, bo na razie masz jako tako opisany środek tego procesu. Czyli pokrótce mówiąc:

  • w pliku jest to i to.
  • po przetworzeniu w pamięci chcę mieć to i to.
    Nie od rzeczy mogłoby być pokazać deklaracje klas MemChunk i MemEntry.

1 użytkowników online, w tym zalogowanych: 0, gości: 1