Wpis z mikrobloga

#java #programowanie
Cześć (na wstępie powiem, że projekt akademicki, więc może być dziwnie).

Tworzę sobie w Javie klasy dla przedmiotów w sklepie online i:
1. Mam klasę abstract Product z polami wspólnymi dla wszystkich produktóœ + getterami i setterami.
2. Chciałbym stworzyć teraz 5 różnych produktów, tak żeby każdy był w innej klasie. Tworzę np. Klasę "Biurko" która rozszerza klasę Product i ma swój konstruktor.
Wreszcie pytanie:
Czy jest sposób żeby tak skonstruowany kod rozszerzać "automatycznie" o 200 kolejnych produktów? Pisanie ręcznie każdej klasy chyba nie ma sensu. Może konstrukcja klasa abstrakcyjna -> klasa produktu jest bez sensu?

Jak Wy byście się do tego zabrali na poziomie meta?
  • 23
@Godziu73: @przewygryw: @csmth: jak już pisałem na początku, projekt akademicki a nie komercyjny ( ͡° ͜ʖ ͡°)

ale zakładając że jednak mamy dodatkowe pola (które docelowo będziemy mapować na bazę danych) i chcemy uniknąć akademickiej "nadmiarowości" pustych pól w tabelach.
No i do niektórych produktów możemy dodać akcesoria (jest na to metoda), a do niektórych nie możemy (nie ma metody)... To pewnie stworzyć dwie /
@buntuubuntu: zdarzają się przypadki, że klasy abstrakcyjne mają uzasadnienie, ale warto mieć z tyłu głowy świadomość, że zawsze jest więcej niż 1 sposób na rozwiązanie danego problemu. W tym konkretnym prawie na pewno sam sobie zrobiłbyś krzywdę, bo w projekcie komercyjnym zaraz by doszło, że klient zapomniał Ci powiedzieć, że te produkty jeszcze mają jakieś tam kategorie, jeszcze jakieś tam np. zależności, że produkt może być połączeniem kilku innych (np. pakiet
@buntuubuntu: Nie zastanawiaj się nad "komercyjnym" lub "akademickim" uzasadnieniem dopóki nie ogarnąłeś jeszcze programowania. To trochę tak jakbyś był uczniem podstawówki i chciał się dowiedzieć, czy dla fizyka teoretycznego istnieje sens liczenia pola figury określonej kilkoma krzywymi całkami skoro sam liczysz pola prostych figur przez podstawienie wartości do gotowego wzoru. Akurat fizyk teoretyczny będzie wiedział, kiedy policzyć pole prostej figury znając gotowy wzór, a kiedy zastosować skomplikowany aparat matematyczny do trudnego
@buntuubuntu trochę bez sensu. Musisz użyć polimorfizmu czy poprostu chcesz się pochwalić że wiesz o czymś takim?

Produkty co najwyżej powinien mieć typ i listę atrybutów. W ten sposób aplikacji jest niezależna od danych. Jeśli musisz modyfikować kod, żeby dodać krzesło to pozdro xd Mając taki generyczny model będziesz mógł ładować wszystko z pliku i zadziała jeśli dobrze to przemyślisz.

Jeśli już chcesz koniecznie użyć dziedziczenia to może w jakimś wzorcu, np.