Daten in einer Klasse "speichern"

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Also ich habe eine Klasse Data in der ich alle Variablen usw. haben und diese über methoden verändern kann usw.

public String get....

public void set....

usw.

Variablen ansich sind private

Jetzt habe ich aber das Problem, dass 2 Klassen auf die Klasse Data zugreifen müssen.

Aber wenn ich in beiden Klassen Data d1 = new ´Data() mache, dann habe ich ja 2 verschiedene Objecte von data und nicht das was ich brauche, denn beide Klassen sollen das Gleiche object verwenden..

Oder bleibt hier nichts anderes übrig als das ganze static zu machen?

Will nicht umbedingt mit static arbeiten, aber wenn das die einzige möglichkeit ist?

Habt ihr ne meinung dazu wie ich das beheben kann, dass ich aus 2 Klassen auf eine zugreifen kann.
 

FelixB

Bekanntes Mitglied
Code:
Data d = new Data();

MyClass c1 = new MyClass(d);
MyClass c2 = new MyClass(d);

oder

Code:
c1.setData(d);
c2.setData(d);
 
S

SlaterB

Gast
die andere Möglichkeit, wie sie etwa bei 99% aller Java-Tätigkeiten eingesetzt wird:
Objekt als Parameter übergeben


wenn du
data.setName(name);
ausführst, dann übergibst du ja auch den Namen und speicherst ihn nicht irgendwo statisch ;)

wenn die beiden Klassen/ Objekte, die das gemeinsame Data-Objekt brauchen,
nicht direkt interagieren, dann wird die Übergabe schwierig, das stimmt,
es ist durchaus denkbar, dann für grundlegende Programm-Daten statische Variablen zu verwenden,
aber machbar ist auch eine Übergabe
 

WieselAc

Top Contributor
Übergib einfach das entsprechende Objekt von Daten den Objekten die damit arbeiten sollen im Konstruktor.


In etw so:

Code:
Daten workData = new Daten();


...

DataWorker worker1 = new DataWorker(workData );
DataWorker worker2 = new DataWorker(workData );
 
G

Guest

Gast
hmm... also ich habe die Klasse GUI und die Klasse Calc.

Beide müssen auf die Klasse Data zugreifen, d.h. beide Klassen rufen eben Methoden der Klasse Data auf.

bisher kenne ich eben es so dass ich in der Klasse GUI und Calc jeweils Data d = new Data() gemacht habe.. nun hatte ich das problem, dass ich ja 2 Objecte der Data hatte...

Will aber nur 1 Object haben.. sry habe die erklärungen oben nicht wirklich verstanden, könnte das jmd. nochmal erklären pls...

Also meine Klassen sind

GUI
Calc
Data

Gui und Calc benutzen beide methoden von Data...

wie kann ich das nun realisieren?
 

Timmah

Bekanntes Mitglied
Schau dir mal in den FAQ das Singleton-Pattern an. Damit kannst du das lösen.

Deine Klasse Data müsste dann in etwa so aussehen:

Code:
public class Data()
{
    private Data data = null;

    private Data()
    {
    }
    
    public static Data getInstance()
    {
        if(data == null)
        {
            data = new Data();
        }
        
        return data;    
    
    }

    public void macheIrgendwas()
    {
    }

}

Zugriff auf die Methoden macheIrgendwas() erhälst du dann so:

Code:
Data.getInstance().macheIrgendwas();

So greifst du immer auf denselben Speicher zu.
 
G

Guest

Gast
Ok vielen Dank,

eine andere möglickeit gibts da nicht oder, also ohne statische sachen.

Na ja es geht zumindest, wäre das auch "guter" code.

Also kein pfusch?

Viiieeeelen dank schonmal
 

Timmah

Bekanntes Mitglied
Das Singleton-Pattern ist sehr weit verbreitet, auch im JDK. Ist kein Pfusch.
Static ist nicht immer schlecht. Was unten im Code fehlt (sehe ich gerade):
Das Klassenobjekt data muss auch als static definiert werden.

Was natürlich auch ginge, um das static zu vermeiden, wäre die Daten in der Klasse Data immer komplett zu serialisieren/deserialisieren, also schön in Dateien wegschreiben und wieder einlesen.
 
G

Guest

Gast
Timmah hat gesagt.:
Was unten im Code fehlt (sehe ich gerade):
Das Klassenobjekt data muss auch als static definiert werden.

Ja danke habe ich auch gemerkt ^^. Danke.

Jetzt habe ich ja ein Object das alle daten enthält, wäre dies nun möglich in eine datei zu schreiben, also quasi speichern?

Will in mein Programm ein save/load funktion einbauen.

Geht soetwas?
 

Timmah

Bekanntes Mitglied
Schau dir dazu die Klassen ObjectInputStream und ObjectOutputStream an.

Klassenobjekte, die nicht gespeichert werden sollen, kannst du als transient definieren.
 

Murray

Top Contributor
Anonymous hat gesagt.:
hmm... also ich habe die Klasse GUI und die Klasse Calc.

Beide müssen auf die Klasse Data zugreifen, d.h. beide Klassen rufen eben Methoden der Klasse Data auf.

Kennt GUI Calc, oder kennt Calc GUI? Oder gibt es eine weitere (Controller-)Klasse, die die beiden anderen Klassen kennt? Wenn das so ist, dann reicht es doch, einmal ein Data-Objet zu erzeugen und das dem anderen Verwender z.B. im Konstruktor zu übergeben.

Wirklich notwendig dürfte der Singleton-Ansatz hier nicht sein. Und eine Serialsierung des Data-Objekts wäre wohl eine Lösung von hinten durch die Brust ins linke Auge...
 

WieselAc

Top Contributor
Anonymous hat gesagt.:
....
Na ja es geht zumindest, wäre das auch "guter" code.
....


Wie bereits erwähnt ist der Code schon OK, wenn man wirklich nur eine Instanz haben will.

Ein Anmerkung hätte ich jedoch noch:

Sowie ich das sehe wird das Daten Objekt in jedem Fall benötigt, von daher würde ich hier von einer "lazy-initialisation" absehen. Soll heißen:

Code:
    private static Data data = new Data();

    private Data() {
    }
   
    public static Data getInstance() {       
        return data;   
   
    }
 
G

Guest

Gast
Timmah hat gesagt.:
Das Singleton-Pattern ist sehr weit verbreitet, auch im JDK. Ist kein Pfusch.
Das Singleton-Pattern ist nun wirklich das letzte, was ich hier empfehlen würde. Wenn Objekte Zugriff auf andere, bereits existierende Objekte benötigen, dann übergibt man sie einfach im Konstruktor. Das Singleton-Pattern ist in 99% der Fälle unangebracht.
 

kleiner_held

Top Contributor
Anonymous hat gesagt.:
Das Singleton-Pattern ist nun wirklich das letzte, was ich hier empfehlen würde. Wenn Objekte Zugriff auf andere, bereits existierende Objekte benötigen, dann übergibt man sie einfach im Konstruktor. Das Singleton-Pattern ist in 99% der Fälle unangebracht.

Zustimmung. Das Pattern sollte man nur verwenden wenn man es wirklich braucht. Wenn in dem hier gebrachten Beispiel ein zweites Calc Objekt mit einer anderen Datenbasis (Data) benoetigt wird, steht man mit Singleton im Regen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Methoden ausgelesene (CSV-) Daten in Liste einer anderen Klasse einlesen Java Basics - Anfänger-Themen 0
B Daten in Instanz einer Klasse ändern / abfragen Java Basics - Anfänger-Themen 12
K daten von jtable auslesen und in einer anderen klasse anzeigen und bearbeiten Java Basics - Anfänger-Themen 7
N Daten von einer Klasse an eine andere übergeben? Java Basics - Anfänger-Themen 4
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8
H Daten aus einer Datei in eine Liste speichern Java Basics - Anfänger-Themen 23
J Daten einer Textdatei in ein JTable importieren. Java Basics - Anfänger-Themen 3
M Junit Tests durchführen, die eine Verbindung zu einer Daten erfordern Java Basics - Anfänger-Themen 3
J Daten von einer PHP Datei ablesen Java Basics - Anfänger-Themen 1
B daten speichern in einer tabelle Java Basics - Anfänger-Themen 5
MiMa Mehrere Daten in einer Variable? Java Basics - Anfänger-Themen 25
M Methoden Daten aus einer SQL-Abfrage in eine mehrdimensionales Array einlesen Java Basics - Anfänger-Themen 7
R Alle Daten einer HashMap ausgeben Java Basics - Anfänger-Themen 17
C Daten einer JTable lassen sich nicht ändern Java Basics - Anfänger-Themen 6
S Frage zum speichern der Daten in einer LinkedList Java Basics - Anfänger-Themen 2
Dit_ Daten vom Server in einer Schleife Java Basics - Anfänger-Themen 4
Z Array mit daten einer datenbankbefüllen und dies an eine tabelle geben Java Basics - Anfänger-Themen 6
A Programm mit Daten einer Datei testen Java Basics - Anfänger-Themen 4
T Speicherprobleme von daten in einer datei Java Basics - Anfänger-Themen 5
S Daten aus einer JTable in eine .doc-word- datei exportieren? Java Basics - Anfänger-Themen 7
R Hilfe! Daten aus einer excelliste auslesen und. Java Basics - Anfänger-Themen 3
U daten aus einer datenbank aus lesen und einfügen Java Basics - Anfänger-Themen 2
J Kann man Daten innerhalb einer Datenstruktur verändern? Java Basics - Anfänger-Themen 4
T Daten in einer Datei überschreiben Java Basics - Anfänger-Themen 13
D ComboBox mit Daten einer Datenenbank Java Basics - Anfänger-Themen 8
P Daten aus Datenbank in einer JComboBox darstellen Java Basics - Anfänger-Themen 4
T Daten aus einer .csv Datei in einen Vector einlesen Java Basics - Anfänger-Themen 3
T Unvollständige Daten in der TableView Java Basics - Anfänger-Themen 8
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
Mady Daten von JList & Combobox in JTable adden Java Basics - Anfänger-Themen 2
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
W Daten in Echtzeit übernehmen Java Basics - Anfänger-Themen 5
Z Java ArrayList speichert falsche Daten ab bzw. gibt falsche Daten aus? Java Basics - Anfänger-Themen 42
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
I H2 Datenbank starten / Daten in File speichern Java Basics - Anfänger-Themen 25
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
E fehlermeldung bei richtigen login daten Java Basics - Anfänger-Themen 7
C Java Funktion: externe Daten vom Internet einbinden Java Basics - Anfänger-Themen 2
P Schiebefix - ArrayList überschreibt Daten Java Basics - Anfänger-Themen 3
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
E Wie gebe ich alle Daten zwischen zwei Zeitpunkten aus? Java Basics - Anfänger-Themen 2
M Tabellen- Daten laden Java Basics - Anfänger-Themen 2
A Klasse um daten zu einlesen Java Basics - Anfänger-Themen 26
A Literale für primitive Daten Typen Java Basics - Anfänger-Themen 4
N Zwei Daten (Datum) miteinander vergleichen, abspeichern, laden Java Basics - Anfänger-Themen 4
A Daten auslesen/vergleichen Java Basics - Anfänger-Themen 3
D Sportwetten Daten Atomatisch analysieren um optimale Strategie zu erhalten Java Basics - Anfänger-Themen 6
S Java Daten in Excel speichern Java Basics - Anfänger-Themen 1
S Daten speichern, ohne Datenbank Java Basics - Anfänger-Themen 8
L Daten aus ArrayList in Datenbank durchsuchen Java Basics - Anfänger-Themen 5
Shallty Daten speichern und ändern? Java Basics - Anfänger-Themen 32
M Sqlite table löschen und daten einfügen Java Basics - Anfänger-Themen 5
S Binäre-Suche bei unsortierten Daten Java Basics - Anfänger-Themen 7
N Was passiert wenn wir Daten auf der Festplatte abspeichern wollen? bzgl. BufferStreams Java Basics - Anfänger-Themen 9
T Daten von Objekten speichern Java Basics - Anfänger-Themen 7
A Minesweeper - Daten Java Basics - Anfänger-Themen 46
A Eingelesene Daten in Array(Liste) abspeichern? Java Basics - Anfänger-Themen 18
S Daten aus zwei Verschiedenen Tabellen in eine ArrayListe Java Basics - Anfänger-Themen 4
WPS1000 Input/Output Wie aktiviere ich den Daten Transfer von der RS232 in meine Java Applikation Java Basics - Anfänger-Themen 2
R Eigenes Protokoll zur Übermittlung von Daten zum Webserver? Java Basics - Anfänger-Themen 4
A Reader wohin werden Daten gespeichert? Java Basics - Anfänger-Themen 7
M Erste Schritte CSV-File einlesen und Daten verarbeiten Java Basics - Anfänger-Themen 5
S Daten aus eigenständiger .class-Datei abrufen Java Basics - Anfänger-Themen 1
E Daten dem Super Aufruf übergeben Java Basics - Anfänger-Themen 3
M jTabel mit Daten Füllen Java Basics - Anfänger-Themen 5
M Wie erzeuge ich die Differenz von zwei Daten in Stunden?? Java Basics - Anfänger-Themen 2
S Daten lesen und speichern Java Basics - Anfänger-Themen 26
S JTable mit Daten füllen Java Basics - Anfänger-Themen 7
L Java Programm zum Auswerten von Daten Java Basics - Anfänger-Themen 11
H Passwortmanager, Sicherheit der Daten Java Basics - Anfänger-Themen 12
G Best Practice Wie große "Tabellen" effizient durchsuchen und Daten händeln? Java Basics - Anfänger-Themen 15
U Daten aus Datei einlesen Java Basics - Anfänger-Themen 4
M Best Practice Daten-Import /Trabsfomration aus Textdatei Java Basics - Anfänger-Themen 12
R JTable Suchfunktion mit SQL Daten Java Basics - Anfänger-Themen 2
E Daten gehen nicht in Datenbank Java Basics - Anfänger-Themen 14
M Erste Schritte Speichern von mehreren Daten Java Basics - Anfänger-Themen 3
F Daten von Thread an den aufrufenden zurückgeben Java Basics - Anfänger-Themen 22
C Endlosschleife bei füllen von Daten im JTable Java Basics - Anfänger-Themen 5
N Erste Schritte Dedicated Server \ Senden und Empfangen von Daten/Befehlen Java Basics - Anfänger-Themen 2
A Probleme beim zykl. aktulisieren von Daten in JTable Java Basics - Anfänger-Themen 3
D NPE beim laden von Daten aus MySQL Java Basics - Anfänger-Themen 9
P Einlesen von Daten via BufferedReader Java Basics - Anfänger-Themen 4
F Daten aus Excel-Tabelle in Java importieren Java Basics - Anfänger-Themen 15
F Http Post von mehreren Daten Java Basics - Anfänger-Themen 5
F Daten auf Webserver laden - wiederholen bei Fehler Java Basics - Anfänger-Themen 0
W Best Practice problemabhängige Persistentmachung von Daten Java Basics - Anfänger-Themen 6
P Daten von Internetseite auslesen Java Basics - Anfänger-Themen 10
N Daten/Formular per POST an Firefox/Browser senden Java Basics - Anfänger-Themen 7
D Daten mit Apache POI in eine Excel Datei schreiben Java Basics - Anfänger-Themen 5
T JTable Daten aus txt datei Java Basics - Anfänger-Themen 3
T printf Daten aus der Tabelle in Excel übernehmen Java Basics - Anfänger-Themen 5
P zweidimensionales Array anlegen und mit DB-Daten füllen Java Basics - Anfänger-Themen 14
V Einlesen von Daten Java Basics - Anfänger-Themen 8
J TableView zeigt keine Daten an Java Basics - Anfänger-Themen 14
J Daten im Programm speichern Java Basics - Anfänger-Themen 14
N Interface Daten einem Implementierten Interface zuweisen Java Basics - Anfänger-Themen 37
O Probleme mit CSV Daten Java Basics - Anfänger-Themen 10
M Arrays: Trennung von Daten und Darstellung Java Basics - Anfänger-Themen 1
S Daten aus Array in Klasse übertragen Java Basics - Anfänger-Themen 12
M Wie sicher sind Daten im Java Programm? Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben