Komunikacja międzyobiektowa

0

Witam,
w programie "wyświetlanym" posiadam 3 obiekty.
A i B to obiekty przechowujące informacje o produkcji materiałów oraz produkujące obiekty: ilość, szybkość, obciążenie, algorytmy obliczające ilość wyprodukowanych materiałów lub ustalające obciążenie produkcji wywołane np. pogodą.
Obiekt C to obiekt zajmujący się wyświetlaniem m.in. statystyk. Właśnie obiekt C posiada funkcję, która we wnętrzu posiada inną funkcję tego samego obiektu do wyświetlania ilości materiałów A i B.
Obiekty A i B posiadają gettery i settery.

A mój problem to nie wiem jak mam zadeklarować te funkcje. Może to złe podejście, błędne. Chciałbym, aby obiekt C wyświetlił parametry obiektu A i B.

Dla ułatwienia wklejam kod na jakim został opisany problem.

public class A {
    private int quantity;
    private float percentProduction;
    private float burden;

    //konstruktory
   //gettery i settery

  //algorytmy produkcji
}

public class B {
    private int quantity;
    private float percentProduction;
    private float burden;

    //konstruktory
   //gettery i settery

  //algorytmy produkcji
}

public class C {
    public void viewStatistics() {   
         //wyświetla "quantity" z A i B
    }

    public void viewBurden() {   
         //wyświetla "burden" z A i B
    }

//i tak dalej
//później są jeszcze switch'e do przełączania między menu i wybierania opcji z menu
// właśnie w jednym z tych switch zawarta jest funkcja "viewStatistics()"

}

PS. Kiedy najlepiej przerzucić się na programy z grafiką? Konsolowe stają się "mało poręczne".

1

Cześć,

Po utworzeniu w programie obiektów A, B i C, do funkcji obiektu C musisz przekazać referencje obiektu A i B, dzieki temu będziesz mógł wywołać getter'y tych obiektów i wyświetlić ich parametry.

public class C {
    public void viewStatistics(A obiektA, B obiektB) {  
         System.out.printf(obiektA.getQuantity());
         System.out.printf(obiektB.getQuantity())   
         //wyświetla "quantity" z A i B
    }
 
    public void viewBurden() {   
         System.out.printf(obiektA.getBurden());
         System.out.printf(obiektB.getBurden())
         //wyświetla "burden" z A i B
           
    }

Na grafikę przerzuć sie jak dobrze opanujesz programowanie obiektowe.

0

@bogdans nie do końca.

@donkiller ok, to mam tylko w programie, w obiekcie C występuje jeszcze 3 funkcja, która w zależności od wybranego numerka wywołuje właśnie funkcje "viewStatistics()". I tu jest problem bo muszą dać argumenty. A chciałbym uniknąć przekazywania obiektów do funkcji, w której jest zaimplementowana funkcja wyświetlają statystki.

0

@tomasztopolewski, jednak pytasz o to samo.
W czym problem, konstruując obiekt klasy C, przekaż referencje do obiektów klasy A i klasy B.

0

Komplikujesz niepotrzebnie... doczytaj o obiektówce w JAVA. Najprawdopodobniej chodzi Ci o coś takiego:

public class C {
    private A obiektA;
    private B obiektB;
    
    // w konstruktorze przekazujesz referencje tylko raz przy tworzeniu obiektu klasy C i przypisujesz te referencje do zmiennych klasowych W swojej funkcji korzystasz z obiektow lokalnych klasy C tj obiektA oraz obiektB tak jak jest to pokazane w metodach ponizej.
    public C(A obiektA, B obiektB){
           this.obiektA=obiektA;
           this.obiektB=obiektB
    }
    public void viewStatistics() {
  
         System.out.printf(obiektA.getQuantity());
         System.out.printf(obiektB.getQuantity())   
         //wyświetla "quantity" z A i B
    }
 
    public void viewBurden() {   
         System.out.printf(obiektA.getBurden());
         System.out.printf(obiektB.getBurden())
         //wyświetla "burden" z A i B
 
    }

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