Przekazywanie obiektów

0

Witam

Jak w jave (w ogóle w jakimś języku obiektowym) przekazywać obiekty między poszczególnymi klasami, bez konieczności korzystania ze wzorca Singleton. Chodzi mi o to że np. mam okno wyszukiwania (jedna klasa) które pobiera dane z bazy, a następnie tworzy jakiś obiekt który przechowuje te dane. Następnie chcę przekazać ten obiekt do innego okna (druga klasa) aby wyświetlić jego dane. Jeśli ktoś wie proszę o pomoc. Z góry dzięki.

0

Singleton nie jest rozwiązaniem, bo co jeśli będzie chciał mieć kilka takich okien?. Trzeba trzymać gdzieś referencje do tych obiektów. np:

class SearchResults{...}
class SearchWindow {
    public SearchResults getResults() {return new SearchResults();}
}
class ResultsWindow {
   public void showResults(SearchResults sr) {...}
}
class App {
   public static void main(String[] args) {
       SearchWindow sw = new SearchWindow();
       SearchResults sr = sw.getResults();
       ResultsWindow rw = new ResultsWindow();
       rw.showResults(sr);
   }
}
0

Nie rozumiem tylko jednej rzeczy. W powyższym przykładzie przecież są zadeklarowane 2 obiekty tej samej klasy. Skąd wiadomo do którego obiektu sie odwoływać

public SearchResults getResults() {return new SearchResults();}
SearchWindow sw = new SearchWindow();

I jeszcze jedno pytanie czy te klasy są zdeklarowane w jednym pliku, czy też mogą być w osobnych plikach lub innych pakietach?

0
kapitan bomba napisał(a)

Nie rozumiem tylko jednej rzeczy. W powyższym przykładzie przecież są zadeklarowane 2 obiekty tej samej klasy. Skąd wiadomo do którego obiektu sie odwoływać

public SearchResults getResults() {return new SearchResults();}
SearchWindow sw = new SearchWindow();

Tu nie ma obiektów jednej klasy. Metody getResults() tworzy i zwraca wyniki wyszukiwania poprzez obiekt klasy SearchResults, a w drugie linijce masz tworzony obiekt reprezentujacy okno do pokazywania wynikow.

kapitan bomba napisał(a)

I jeszcze jedno pytanie czy te klasy są zdeklarowane w jednym pliku, czy też mogą być w osobnych plikach lub innych pakietach?

W jednym pliku .java może być tylko jedna klasa publiczna o takiej samej nazwie jak plik. Mogą być dodatkowe klasy o mniejszym zakresie widoczności, ale lepiej tego unikać. Dobrą praktyką jest tworzenie klas w oddzielnych plikach. Jeśli klasy są w takim samym pakiecie można się do nich odwoływać bez dodatkowych zabiegów. Jeśli są w różnych pakietach, to trzeba na górze pliku .java dodać tzw. importy. Np w pliki App.java:

import jakis.pakiet.okno.SearchWindow;
import jakis.inny.pakiet.okno.ResultsWindow;

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