ďťż

Ładny brzuch

Witam wszystkich!

Piszę projekt na zaliczenie z c++. Do napisania mam program pokazujący rozkład ciepła na "płytce". Do tego zadania zaprzegłem Qt (jako gui), Qwt (do rysowania wykresów i spektrogramów). Wszystko ładnie się rysuje tylko rozwiązanie nie jest eleganckie <_< mam klasy:
    lPlot - wykres pokazujący płytke w postaci punktów; dziedziczony po QwtPlot
    l
    lPlotSpek - spektogram; dziedziczony po QwtPlot
    l
    lObliczenia - wszelkie obliczenia potrzebne do obliczania temp i współrzędnych punktów; brak dziedziczenial

problem polega na tym, że robię w konstruktorze obu wykresów
Obliczenia *ob; ob = new Obliczenia();
a chciałbym to zrobić w jak najbardziej elegancki sposób...
Czy wyjściem jest przerobienie klasy na statyczną?



Masz wiele alternatywnych rozwiązań. Jeżeli obliczenia są faktycznie skomplikowane, to twoje jest najgorszym z nich :)
Możesz faktycznie zrobić klasę statyczną i wtedy np wywołać Obliczenia::getObliczenia(). Możesz też zrobić metodę "void setObliczenia(const Obliczenia &obliczenia)", w klasie bazowej po twoich klasach Plot i PlotSpek i dam dodawać utworzony gdzieś na zewnątrz obiekt Obliczenia.

Zawsze można zrobić singletona, lepsze to niz "klasa statyczna". http://en.wikipedia....ngleton_pattern
Użytkownik icek edytował ten post 13 maj 2010, 19:43

Zawsze można zrobić singletona, lepsze to niz "klasa statyczna". http://en.wikipedia....ngleton_pattern
Tylko że singleton to klasa statyczna :)




Tylko że singleton to klasa statyczna :)
To już kwestia implementacji.

@Pravi
Popatrz na to z tej perspektywy, że klasy od rysowania powinny jedynie wiedzieć co i jak narysować, a nie jak to obliczyć wykorzystując klasę Obliczenia. Stąd obliczenia wykonuj poza ploterami, a do nich przekazuj same wyniki.


problem polega na tym, że robię w konstruktorze obu wykresów
+ wypowiedz reVisa
to nie plot powinien liczyc (zadawac zapytanie liczenia innej klasie), powinien tylko dostac dane co narysowac.

eugeniusz: zdefiniuj mi co to klasa statyczna wg Ciebie.


eugeniusz: zdefiniuj mi co to klasa statyczna wg Ciebie.

To wszystko przez wypowiedź autora wątku, bo pisząc "przerobić klasę na statyczną" zrozumiałem to właśnie jako: przerobić klasę na taką, która zwraca swój obiekt statyczny (czyli singleton), choć teraz po krótkim zastanowieniu wpadłem, że mogło mu chodzić o stworzenie obiektu statycznego tej klasy.
Co do pytania - nie wiem. Ale klasa statyczna to może być taka, która ma wszystkie metody i pola statyczne :)
-----------------------------------
Ale żeby nie robić off-topów:

Jakby się zastanowić, to zapewne obiekt klasy Plot nie ma sensu bez obiektu klasy Obliczenia - bo taki plot nic nie narysuje. Może więc dobrym rozwiązaniem by było zrobić konstruktor na przykład:
Plot(const Obliczenia &obliczenia);

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •