Klassen Zusammenspiel zwischen 2 Klassen

OSbOoL

Mitglied
Moin aus dem Norden,
ich habe immer noch Probleme mit mehreren klassen zu arbeiten.
Wenn ich meine kleinen Programme in meiner Main-Klasse programmiere, habe ich immer keine probleme, aber wenn ich es so schön aufgeräumt versuche, wie es sich gehört, dann treten immer wieder Probleme auf.
Aktuell habe ich eine Main-Klasse, die eine grafische Benutzeroberfläche hat. Alles gut, nun möchte ich auf dieser Oberfläche eine Digitaluhr ausgeben. Funktioniert auch soweit.
Jetzt möchte ich aber gerne, dass jede Sekunde aus der Klasse "Digitaluhr" eine Methode in der Klasse Main ausgeführt wird und gleichzeitig sollen die Stunden sowie die Minuten als Int übergeben werden. Ich weiß aber nicht wie ich das bewerkstelligen soll.

Hier meine Klasse:
Java:
import java.awt.Color;
import java.awt.Font;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Digitaluhr extends JPanel implements Runnable {

private static final long serialVersionUID = 1L;

private JLabel label;


private Font font = new Font("Verdana", Font.PLAIN, 20);

private Thread thread;

public Digitaluhr() {
    label = new JLabel();
    label.setFont(font);
    label.setOpaque(true);
    label.setBackground(Color.LIGHT_GRAY);
    this.add(label);
    start();
}

 

private void gibDate() {
      LocalDateTime now = LocalDateTime.now();
      DateTimeFormatter df;
      df = DateTimeFormatter.ofPattern("dd.MM.yyyy kk:mm");     // 31.01.2016 20:07
    
    label.setText(now.format(df));
}



public void start() {
    if (thread == null) {
        thread = new Thread(this);
        thread.start();
    }
}

public void run() {

    while (true) {
      
        gibDate();
      
   //     setTime();
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
                e.printStackTrace();
        }
    }
}


}

Um die Stunde oder Minute als Int umzuwandeln ist für mich kein Problem. Ich möchte gerne zu einer bestimmten Uhrzeit in der anderen Klasse ein Relais schalten, daher möchte ich gerne die Werte als Int rüber geben.


Vielen Dank
 

mihe7

Top Contributor
ich habe immer noch Probleme mit mehreren klassen zu arbeiten.
Das liegt daran, dass Du zu sehr auf das UI fokussiert bist.

Du willst eine Art Zeitschaltuhr programmieren. Woraus besteht so ein Teil? Sagen wir mal, es gibt etwas wie ein "Uhrwerk". Das Uhrwerk misst die Zeit. Das ist schön, nur hilft das wenig, wenn das kein "sichtbares" Ergebnis liefert. Daher gibt es an diesem Uhrwerk eine Schnittstelle, über die das Ergebnis zur Verfügung gestellt wird. An dieser Schnittstelle kann man dann beliebige Komponenten anstöpseln.

Bei einem analogen Uhrwerk wäre diese Schnittstelle z. B. eine Achse, die sich jede Sekunde ein wenig dreht. Daran lässt sich dann ein Zeiger befestigen, um die Sekunden anzuzeigen. Man könnte aber auch einen weiteren "Zeiger" befestigen, der nicht zur Anzeige dient sondern der nach jeder Umdrehung einen Mechanismus auslöst (z. B. ein Glöckchen klingeln lässt). Was alles an so eine Achse betrieben werden kann, ist nahezu grenzenlos.

Zurück zur Zeitschaltuhr. Es gibt also eine Schnittstelle, über die das Uhrwerk die aktuelle Zeit zur Verfügung stellt. An diese Schnittstelle kann man ein Display anschließen, das die Zeit anzeigt oder ein Relais, das zu einem Zeitpunkt schaltet völlig egal.

Wie lässt sich das nun in Code realisieren? Wir wollen ein Uhrwerk haben, das die Möglichkeit bietet, beliebige "Beobachter" (s. Observer-Pattern) über Änderungen zu informieren. Wir brauchen also eine Schnittstelle für "Uhrwerkbeobachter":

Java:
interface Uhrwerkbeobachter {
    void zeitAktualisiert(Uhrwerk werk, LocalDateTime neuerZeitpunkt);
}

Das Uhrwerk bietet die Möglichkeit, derlei Beobachter zu registrieren und zu informieren:
Code:
class Uhrwerk {
    private List<Uhrwerkbeobachter> alleBeobachter = new LinkedList<>();

    public void registriere(Uhrwerkbeobachter beobachter) {
        alleBeobachter.add(beobachter);
    }

    private void informiereBeobachter(LocalDateTime zeitpunkt) {
        for (Uhrwerkbeobachter beobachter : alleBeobachter) {
            beobachter.zeitAktualisiert(this, zeitpunkt);
        }
    }
}

Das Display registriert nun einfach einen Beobachter, z. B. sich selbst:
Java:
class Display extends JPanel implements Uhrwerkbeobachter {
    @Override
    public void zeitAktualisiert(Uhrwerk werk, LocalDateTime zeitpunkt) {
        zeigeNeueUhrzeit(zeitpunkt);
    }
}

Das gleiche kannst Du mit einem Relais machen:
Java:
class Relais implements Uhrwerkbeobachter {
    @Override
    public void zeitAktualisiert(Uhrwerk werk, LocalDateTime zeitpunkt) {
        // tu irgendwas, z. B. schalte, wenn der Schaltzeitpunkt überschritten wurde
    }
}

Natürlich brauchst Du Code, der alles zusammenfügt, z. B.
Java:
class Zeitschaltuhr {
    public void run() {
        Uhrwerk uhrwerk = new Uhrwerk();
        Display display = new Display();
        Relais relais = new Relais();

        // zusammenstöpseln
        uhrwerk.registriere(display);
        uhrwerk.registriere(relais);

        // jetzt noch Display anzeigen und das Uhrwerk starten
    }
}

Die Namen sind nicht besonders schön gewählt und der Code ist nur eine Skizze. Ich hoffe, dass das Prinzip trotzdem rübergekommen ist.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L OOP Optimales Zusammenspiel von 3 Klassen? Java Basics - Anfänger-Themen 4
G JSP, HTML und JavaScript im Zusammenspiel Java Basics - Anfänger-Themen 5
G HTML JavaScript und JSP im Zusammenspiel Java Basics - Anfänger-Themen 3
B Zusammenspiel zweier JFrames Java Basics - Anfänger-Themen 2
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 9
Distanz zwischen zwei Zeichenfolgen in einem String bestimmen Java Basics - Anfänger-Themen 5
S Unterschied zwischen Denkweisen Java Basics - Anfänger-Themen 13
Ras Unterschied zwischen parser xml and api xml Java Basics - Anfänger-Themen 7
X Was ist der Unterschied zwischen materialisierten und nichtmaterialisierten Attributen einer Klasse? Java Basics - Anfänger-Themen 1
F Abstand zwischen zwei Objekten berechnen wie? Java Basics - Anfänger-Themen 1
S Längster Pfad zwischen zwei Vertices in einem Graph Java Basics - Anfänger-Themen 3
U Erste Schritte nextGaussian zwischen zwei Werten Java Basics - Anfänger-Themen 19
jhCDtGVjcZGcfzug Was ist der Unterschied zwischen diesen Quellcodes? Java Basics - Anfänger-Themen 3
rafi072001 Assoziation zwischen Musiker und Label Java Basics - Anfänger-Themen 1
I Best Practice Saubere Verbindung zwischen API und Business Layer mit DTO's Java Basics - Anfänger-Themen 2
A Parametar übergabe zwischen Methoden Java Basics - Anfänger-Themen 26
W User zwischen Optionen wählen lassen Java Basics - Anfänger-Themen 1
I Differenz zwischen LocalDateTime Java Basics - Anfänger-Themen 4
Leo_1789 Differenz ausrechnen zwischen denn idealgewicht und denn echten Gewicht Java Basics - Anfänger-Themen 7
E Wie gebe ich alle Daten zwischen zwei Zeitpunkten aus? Java Basics - Anfänger-Themen 2
P Methode die ausgibt wie viele Primzahlen es zwischen 2 und n gibt Java Basics - Anfänger-Themen 10
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 3
marcooooo Separator zwischen allen Zeichen eines Strings einfügen Java Basics - Anfänger-Themen 29
NeoLexx Zuweisungskompatibilität zwischen Vererbungsbeziehungen (Polymorphie) Java Basics - Anfänger-Themen 18
L Threads Synchronisierung zwischen threads Java Basics - Anfänger-Themen 4
N Berührung zwischen Rechtecken Java Basics - Anfänger-Themen 5
Y Unterschied zwischen WindowBuilder und herkömmlichen erstellen des GUI´s? Java Basics - Anfänger-Themen 9
J Wert zwischen JFrames übergeben Java Basics - Anfänger-Themen 2
U Worin besteht der Unterschied zwischen call by reference und call by value? Java Basics - Anfänger-Themen 14
E Unterschied zwischen new und import Java Basics - Anfänger-Themen 5
J Punkt auf,über,unter oder zwischen 2 Geraden Java Basics - Anfänger-Themen 14
A Kommunikation zwischen nebenläufigen Threads Java Basics - Anfänger-Themen 4
B Unterschied zwischen (List<T> a) und (T[] a) Java Basics - Anfänger-Themen 7
Dilara_K Abstand zwischen den Doppelwerten in einem Array herausfinden Java Basics - Anfänger-Themen 20
S Nach dem Herüberschieben eines Arrays zwischen 2 Frames öffnet sich das Frame nicht mehr Java Basics - Anfänger-Themen 12
D Zufallszahl zwischen 10 und 99? Java Basics - Anfänger-Themen 5
J Objektzugriff zwischen disjunkten Klassen Java Basics - Anfänger-Themen 1
L Den Winkel zwischen zwei Vektoren berechnen! Java Basics - Anfänger-Themen 2
A Methoden Unterscheid zwischen public und ohne Java Basics - Anfänger-Themen 9
X Input/Output Höchste Temperaturschwankung zwischen 2 Tagen Java Basics - Anfänger-Themen 2
Bluedaishi der Monat zwischen zwei Datumsangaben Java Basics - Anfänger-Themen 15
R Threads Pause zwischen zwei Schleifen Java Basics - Anfänger-Themen 1
Aprendiendo Unterschied zwischen Referenzvariable und Instanzvariable. Java Basics - Anfänger-Themen 2
N Unterschied zwischen Checked und Unchecked Exceptions Java Basics - Anfänger-Themen 12
S Parameterübergabe zwischen zwei Programme Java Basics - Anfänger-Themen 4
S Erste Schritte Zwischen zwei Punkten ein Minimumpkt./Maxima finden Java Basics - Anfänger-Themen 1
K Klassen Array zwischen Klassen übergeben Java Basics - Anfänger-Themen 2
Arif OOP Die Bindung zwischen einem äußeren und einem inneren Objekt Java Basics - Anfänger-Themen 2
schoenosrockos Unterschied zwischen Objekten und vererbungen Java Basics - Anfänger-Themen 1
S OOP Variablen zwischen mehreren Klassen Java Basics - Anfänger-Themen 11
H Klassen Konstruktor Parameter als Instanzvariablen zwischen speichern... Java Basics - Anfänger-Themen 11
F Klassen Kommunikation zwischen Klassen Java Basics - Anfänger-Themen 4
J Variablen Unterschied zwischen lokalen-, Instanz-, Klassenvariablen Java Basics - Anfänger-Themen 6
N Dauer zwischen zwei LocalDateTime Objekten berechnen? Java Basics - Anfänger-Themen 4
P Ungerade Zahlen ausgeben lassen zwischen Spannweite zweier eingegeben zahlen Java Basics - Anfänger-Themen 6
V Zufallswert zwischen zwei Zahlen a und b Java Basics - Anfänger-Themen 12
H Datentypen Tage zwischen zwei Datums berechnen Java Basics - Anfänger-Themen 4
M Variable zwischen Klassen übergeben Java Basics - Anfänger-Themen 5
A attach source: Zusammenhang zwischen JAR und .class/.java Dateien? Java Basics - Anfänger-Themen 2
L Unterschied zwischen Klassen - und Instanzvarbiablen Java Basics - Anfänger-Themen 1
F Vererbung von Attributen zwischen zwei Klassen Java Basics - Anfänger-Themen 6
F Referenzen zwischen Methoden Java Basics - Anfänger-Themen 5
B Distanz zwischen zwei Punkten Java Basics - Anfänger-Themen 4
D Suche nach der Anzahl von Zonen zwischen zwei Punkten Java Basics - Anfänger-Themen 2
G Zugriff zwischen Klassen Java Basics - Anfänger-Themen 15
S Funktion die mir fuer einen String eine Zahl zwischen 0.0 und 1.0 zurueckliefert..? Java Basics - Anfänger-Themen 9
S Unterschiede zwischen equals und contains Java Basics - Anfänger-Themen 2
S Leerzeichen zwischen zwei Zeichen im String entfernen Java Basics - Anfänger-Themen 19
N Werte zwischen Klassen austauschen Java Basics - Anfänger-Themen 1
M Unterschied zwischen Classpath eines Eclipse Projektes und dem CLASSPATH? Java Basics - Anfänger-Themen 3
Thallius Best Practice Events zwischen eigenen Klassen Java Basics - Anfänger-Themen 2
A if-Anweisung zwischen zwei Punkten Java Basics - Anfänger-Themen 1
S Erste Schritte TAB-Wechsel zwischen TextFields Java Basics - Anfänger-Themen 1
B Relativer Pfad zwischen zwei Files Java Basics - Anfänger-Themen 2
M Drag & Drop - Interaktion zwischen Java und dem OS Java Basics - Anfänger-Themen 1
S Erste Schritte Tage zwischen 2 Daten berechnen Java Basics - Anfänger-Themen 6
Z Differenz zwischen 2 Daten berechnen, ohne importiere Funktionen! Java Basics - Anfänger-Themen 10
A Datum zwischen zwei Daten berechnen und in Tagen anzeigen Java Basics - Anfänger-Themen 4
D Unterschied zwischen double und Double Java Basics - Anfänger-Themen 4
Q Unterschied zwischen static und keinem Modifier Java Basics - Anfänger-Themen 15
K Unterschied zwischen Jar, war und ear Dateien Java Basics - Anfänger-Themen 3
S Problem bei Kollision zwischen Array-objekten! Java Basics - Anfänger-Themen 2
M Länge der Strecke zwischen zwei Punkten Java Basics - Anfänger-Themen 10
T Unterschied zwischen Integrationstest und JUnit test? Java Basics - Anfänger-Themen 12
T zwischen den Strings soll ein plus(+) stehen Java Basics - Anfänger-Themen 5
S Methoden Tage zwischen 2 Daten Java Basics - Anfänger-Themen 19
M Typcasting zwischen ganzen Zahlen Java Basics - Anfänger-Themen 7
K Unterschied zwischen break und continue in einer Schleife Java Basics - Anfänger-Themen 14
A Exakte Unterschied zwischen Java EE und Java SE? Java Basics - Anfänger-Themen 4
J Unterschied zwischen statische und nicht statische Methoden? Java Basics - Anfänger-Themen 14
N Winckel zwischen zwei Punkten Java Basics - Anfänger-Themen 9
O Java unterschied zwischen Interface und Interface_Referenzen!!?? Java Basics - Anfänger-Themen 7
J Regex um Inhalte zwischen Tags zu ignorieren Java Basics - Anfänger-Themen 2
F Info zwischen verschiedene Klassen austauschen Java Basics - Anfänger-Themen 4
W Variablen zwischen Klassen übertragen Java Basics - Anfänger-Themen 8
jueki Präzision bei Typumwandlung zwischen double und String Java Basics - Anfänger-Themen 14
B Text zwischen geschweiften klammern Java Basics - Anfänger-Themen 11
T Abstand zwischen zwei Zeitstempeln errechnen. Java Basics - Anfänger-Themen 3
c_sidi90 Zeitberechnung zwischen 2 Daten und Zeitangaben Java Basics - Anfänger-Themen 9
E Inhalt zwischen zwei String auslesen? Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben