Rodzaje klas - projekt fizyczny

0

Cześć,
od niedawna mam zajęcia z programowania w Javie, wcześniej programowaliśmy w C++. Niestety słabo znam się na Javie i nie wiem gdzie jakiej klasy powinienem użyć.

Szkic projektu nakładania się fal dźwiękowych który wykonuję znajduje się w załączniku.

W klasie A1 wpisuję wartości danej fali, na ich podstawie rysuję wykres w klasie B1. W klasie D1 znajdują się przyciski grający dźwięk danej fali oraz zapisujący ten dźwięk do pliku. Analogicznie sprawa wygląda z A2, B2 oraz D2. W klasie C rysuje się wykres ze złożenia danych dwóch fal. Podsumowując, A1 komunikuje się z B1 i D1; A2 z B2 i D2; A1 oraz A2 z C oraz D3.

Kod interfejsu graficznego mam w zasadzie zrobiony. Problemem jest, że nie wiem jak stworzyć te klasy aby nie powielać własnego kodu. Obecnie mam dane pliki: Main, Schemat (zawierający klasy), Klasa1 (A1, B1 i D1), Klasa2 (A2, B2, D2), Klasa3 (C, D3). Czytałem trochę o klasach abstrakcyjnych ale nie wiem czy to dokładnie to czego potrzebuję.

Wielkie dzięki za jakąkolwiek pomoc,
Pozdrawiam

0

Warto nazywać klasy po imieniu, a nie nic nieznaczącymi A, B, C i D.

A1 i A2 to ta sama klasa, a inna instancja (obiekt).
Podobnie z B1 i B2 oraz C, która jest po prostu odmianą B.
D tak samo jak powyżej.

Zatem potrzebujesz tylko trzech klas A, B i D, które będą reprezentować odpowiednie komponenty graficzne.

0

Dzięki za pomoc, mam nadzieję, że w końcu ruszę dalej z programem.

W kodzie korzystam wszędzie z pełnych nazw w języku angielskim, w temacie użyłem skrótów żeby nakreślić mój problem. W temacie będę się trzymać tej nieintuicyjnej konwencji jeśli to nie problem.

Ten układ o którym mówisz zastosowałem na samym początku tworzenia kodu, jednak prowadzący polecił spiąć to w trzy klasy (tak jak to zrobiłem). Ostatnio dopiero stwierdził, że to nie jest najlepszy pomysł.
Czyli mam zrobić 4 klasy jako rozszerzenia JPaneli?

Mam jeszcze jedno pytanie do Twojego rozwiązania (przypominam, że jestem kompletnie początkujący w Javie) - jak stworzyć połączenia, aby odpowiednie klasy się komunikowały? W zasadzie klasy B, C i D otrzymują wartości z Listenerów klas A (B i C rysują wykresy, D zapisuje lub gra dźwięk).

0

Trzy klasy wystarczą, bo pozwalają na "ogarnięcie" wszystkich elementów GUI. Ważniejsza jest sprawa komunikacji. Metoda z listenerami jest bardzo prosta i intuicyjna, ale też wymaga trochę pracy. Osobiście wprowadziłbym dodatkowe obiekty, które były by odpowiedzialne za przechowywanie danych i to nimi by się wymieniały klasy.

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