Jak zrobić aby połączyć 3 klasy w 1 objekcie

0

Witam, mam taki problem. Posiadam 3 klasy, każda z nich ma inne pola( jednak każda składa się z intów). Aby lepiej zobrazowac opiszę je tak.
Te 3 klasy to 3 różne owoce:

  • Jabłko z polem objętość
  • Pomaranćz z polem wysokość.
  • Gruszka z polem przekątna i waga;

Opisane wyżej klasy muszę połączyć aby móc dodać je do 1 bazy danych jako 1 klasa(H2) żeby zwracać wszystkie w 1 momencie jako 1 lista albo oddzielnie. Myslałem żeby zrobić 1 klasę Owoc ale nwm jak to połączyć aby potem zwracać wszystkie jablka i jednocześnie wszystkie Owocy. Z góry dziękuje za porady. Pozdrawiam

1

@NowyAleDlugoKodujacy: nowy na forum? Być może. Ale co do tego długiego kodowania to mam pewne wątpliwości :p

Napisz proszę pytanie jeszcze raz- tak, żeby dało się z niego cokolwiek zrozumiec. Bo na razie to totalnie się zgadzam z @KamilAdam - na trzeźwo nie da się załapać, o co Tobie chodzi.

3
interface Fruit
{
}

class Apple implements Fruit
{
}

class Orange implements Fruit
{
}

class Pear implements Fruit
{
}

ArrayList<Fruit> arr=new ArrayList<Fruit>() { new Apple(), new Orange(), new Pear() };
for(Fruit fruit:arr)
{
  if(fruit instanceof Apple) {}
  else if(fruit instanceof Orange) {}
  else if(fruit instanceof Pear) {}
}

Z tym że totalnie zgadzam się z poprzednikami, dopiero po Cannabis COLA dało się jakoś zrozumieć pytanie, no przynajmniej mi tak się wydaje :D

0

Ogólnie to ma chyba wyglądać tak:

class Jabłko {

}

class Pomarańcz {

}

class Gruszka {

}

class User {

}

class Owoc {

User user;
ArrayList<Jabłko> jabłka = new ArrayList<>();
ArrayList<Pomarańcze> jabłka = new ArrayList<>();
ArrayList<Gruszki> jabłka = new ArrayList<>();

}

I klasa owoc żeby była mapowana do bazy danych ?

1

Ale co ma baza do klas jakie masz wewnętrznie? Zrób sobie tabelkę zawierająca pola:
int: id
string: nazwa klasy
json: data

I ogarnij w modelu zapis tego i odczyt.

3

Zastanów się co jest najszerszą wspólną częścią / funkcją tych owoców. Z tego co napisałeś, wszystko da się jakoś zmierzyć. Czyli każdy z tych owoców może zwracać jedną lub więcej wartości mianowanych, które go opisują.
Obiektowo, można to zamodelować tak:

interface Mierzalne{
  List<Pomiar> getPomiary();
}

public class Pomiar {
  private final MierzonaWartość mierzonaWartość;
  private final JednostkaMiary jednostkaMiary;
  private final int wartość;

  //tutaj cała getteroza i kontruktoroza
}

public enum MierzonaWartość{
  PRZEKĄTNA, WAGA, WYSOKOŚĆ, OBJĘTOŚĆ
}

public enum JesnostkaMiary{
  KG, M, M3
}

public class Gruszka implements Mierzalne{
  @Override
  List<Pomiar> getPomiary(){
    return Arrays.asList(new Pomiar(PRZEKĄTNA, M, 1), new Pomiar(WAGA, KG, 2));
  }
}

Relacyjnie też w to będzie działać, alternatywą jest zrobienie interface'u, który będzie zwracał osobnymi metodami każdą z przewidzianych wartości i jak czegoś nie ma, to zwraca pustego Optional, czy tam null'a.

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