#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?
@buntuubuntu: jeśli te poszczególne produkty nie mają żadnego specjalnego zachowania to niech Product nie będzie klasą abstrakcyjną, dodaj po prostu nowe pole żeby trzymać tam jego nazwę i tyle
@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
@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.
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.
@buntuubuntu: to mniej szkodliwe niż klasowa biegunka.
@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
@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,
Eh przegapiłem info, że znowu była podwyżka minimalnej. I znowu zarabiam tylko 500zł więcej od sprzątaczki. 10 lat nabijania doświadczenia, 10 lat pracy jako grafik z czego 6 lat wypruwania sobie żył w agencji reklamowej i wszystko c---a warte.
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?
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
@buntuubuntu: to mniej szkodliwe niż klasowa biegunka.
@Godziu73: public class BlackDesk extends Desk implements Colorable
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,
Napisz se jakiś skrypt w Pythonie czy innym Bashu, który będzie przyjmował jakieś parametry i tworzył ci pliki w odpowiedniej ścieżce.
1. jeżeli dodanie nowych danych np. nowego typu produktu wymaga dodania nowych klas i rekompilacji projektu to jest to bardzo zła droga
2. Atrybuty specyficzne dla konkretnego produktu można zamodelować w postaci zesłownikowanej (lub nie) kolekcji klucz-wartość
Komentarz usunięty przez autora