Cześć,
ucząc się c++ stworzyłem w QT prostą aplikację. Robiłem ją strukturalnie ale najwyższa pora przejść poziom wyżej i chciałbym przerobić ją na obiektową.
Będę wdzięczny za podpowiedź czy to co zrobiłem do tej pory ma jakiś sens bo jak uruchomiłem program zacząłem mieć wątpliwości :)

Aplikacja pobiera rekordy z bazy z takiej tabeli:

data(data)
sklepNr(int)
h06(String)
h07(String)
h08(String)
...
h22(String)

Wszystkie pola od h06 do h24 to godziny otwarcia sklepów i w bazie zapis w tej kolumnie wygląda tak:
pracownik,stanowisko,stawka zl/h,kiedy zatrudniony.
Zwykły string oddzielony przenikami

Utworzyłem klasę rekordSklepDzien w której są wszystkie pola powyżej.
Utworzyłem tez klasę rekordGodzina. Klasa ta obsługuje to co mamy w każdej godzinie czyli pracownik,stanowisko,stawka zl/h,kiedy zatrudniony

Pobieram rekord z bazy i w konstruktorze rekordSklepDzien robię coś takiego:

rekordSklepDzien::rekordSklepDzien(QList<QString> dataBaseRecord)
{
                  
        this->setData(dataBaseRecord[1]);
        this->setSklepNr(dataBaseRecord[2].toInt());
        this->setH06(dataBaseRecord[5]);
        this->setH07(dataBaseRecord[6]);
        this->setH08(dataBaseRecord[7]);
        ...
}

Metody set poszczególnych godzin w klasie powyżej (setH06) wyglądają tak:
void setH06(rekordGodzina data){ h06 = data;}

Czyli tworze obiekt rekordSklepDzien składający się z obiektów rekordGodzina czyli jeśli dobrze rozumiem jest to kompozycja

rekordGodzina w konstruktorze dzieli stringa po przecinku i przypisuje konkretne wartości do zmiennych:

rekordGodzina::rekordGodzina(QString record)
{
    QList<QString> podziel;
    podziel = record.split(",");
    setPracownik(podziel.at(1));
    setStanowisko(podziel.at(2));
    ...
}

Często robię coś takiego ze pobieram z bazy rekordy dla kilku sklepów i zakres dat powiedzmy 200 dni. Czy generalnie mam kolo 1000
rekordów i we wszystkich zmieniam od godz. h06 do h11 pracownika

for(z=1;z<=wszystkieRekordy.count();z++)
{
    rekordSklepDzien record = rekordSklepDzien(wszystkieRekordy[z]);

    this->zmienPracownika(&record, godz_od, godz_do, dane);
}

Metoda zmienPracownika przyjmuje wskaźnik do aktualnie zmienianego rekordu, godziny w jakich będzie nowy pracownik i QList<QString> z niezbędnymi danymi

i robi w skrócie coś takiego:

record->getH06().setPracownik(danePracownika);

Rekordy zmienione zapisuje w kontenerze i jak pętla zamieni wszystkie tworzone jest jedno duże zapytanie aktualizujące rekordy w bazie.

Generalnie to co zrobiłem działa wygląda dużo czytelniej niż wcześniej strukturalnie i łatwiej będzie dodać nowe możliwości ale po uruchomieniu zmiana takiej samej ilości rekordów wcześniej zajmowała ok 1 sekundy teraz zajmuje 7 sekund :/

Dlatego zastanawiam się czy to co zrobiłem ma jakiś sens. Może zamiast tworzyć tylu klas rekordGodzina wszystko zapakować w jedną klasę rekordSklepDzien?