OOP Neues Objekt bei jeder Eingabe erstellen (Objekte speichern?)

lidija_25

Mitglied
Hallo :)

ich habe mal wieder eine Anfänger-Frage und wollte mich direkt an euch Experten hier wenden :)

Ein Objekt wird ja durch eine Referenzvariable referenziert ( Object obj = new Object()).

Ich versuche ein Programm zu schreiben in dem Termine verwaltet werden. Der Benutzer soll über die Console ein Termin erzeugen, dies kann beliebig oft passieren. Die einzelnen Termin-Objekte sollen dann in eine ArrayList abgelegt werden und anschließend sortiert sein. Die einzelnen Termine können dann auch miteinander verglichen werden. Ich hab nur den vereinfachten Code-Ausschnitt hier eingefügt damit es übersichtlicher ist:

Java:
....
....
private ArrayList<Termin> termine=new ArrayList<>();

public static void main(String args[])
{
     int zahl=0;
     System.out.println("Bitte 1 eingeben um einen neuen Termin anzulegen");
     zahl=Console.readInt();

    switch(zahl)
   {
      case 1: Termin einTermin=new Termin(); //  wie kann ich sicherstellen, dass bei jeder Eingabe ein neues Objekt erzeugt wird, da ja die Referenzvariable "einTermin" nicht verändert wird...:rtfm:
      default: "System.out.println("Abbruch");


    }

Danke euch!!






}
 

lidija_25

Mitglied
Hi,

das hab ich vergessen reinzuschreiben im Beispiel, danke dir. Allerdings ist meine Frage eine andere, wie kann ich sicherstellen, dass jedes mal wenn ein Benutzer eine 1 eingibt ein neues(!) Objekt erstellt wird? Es gibt ja nur eine Referenzvariable (einTermin) die ja jedes mal in der ArrayList überschrieben wird wenn der Benutzer 1 eingibt..
 

strußi

Top Contributor
du kannst es auch anders schreiben, dann hast du für jeden Termin einen neuen Termin, desen referenz in der ArrayList gespeichert wird.
Java:
switch ( Console.readInt()){
 case 1: 
   System.out.println( "Parameter für neuen abfragen");
   termine.add( new Termin( Parameterliste));
   break;
 default: ...
}
ich persönlich würde einen parametrisierten Konstruktor von Termin mit new Termin( Datum, Uhrzeit, Ort, Titel); aufrufen, dann hast du die informationen schon in deinem Objekt drin, ohne dass du es später ändern musst
 
Zuletzt bearbeitet:

InfectedBytes

Top Contributor
Es gibt ja nur eine Referenzvariable (einTermin) die ja jedes mal in der ArrayList überschrieben wird wenn der Benutzer 1 eingibt..
Lokale Variablen von Objekten speichern nur eine Referenz auf diese Objekte.
Wenn du der ArrayList ein Objekt hinzufügst, übergibst du die Referenz:
Java:
termine.add(einTermin);
Wenn du dann wieder einTermin=new Termin() machst, ändert das rein gar nichts an der ArrayListe. Die hat ja die Referenz gespeichert, welche in der lokalen Variable stand.
einTermin erhält nun eine neue Referenz auf ein weiteres Termin Objekt.
 

lidija_25

Mitglied
Danke dir für die Antwort! Das ist schon mal ein guter Anfang. Das Problem ist aber, dass wenn das Programm durchgelaufen ist, der Termineintrag ja nicht mehr weiter gespeichert ist in der ArrayListe. Es ist also nicht möglich bereits erstellte Termine mit neuen zu vergleichen... Gibt es hierfür eine Möglichkeit?
 
Zuletzt bearbeitet:

InfectedBytes

Top Contributor
Bisher läuft dein Program halt einmal durch und beendet sich.
Du könntest das ganze in eine Schleife packen, sodass man beliebig viele einträge eintragen kann.

Falls du die Termine auch über das Programmende hinaus behalten möchtest, dann musst du diese eben in eine Datei speichern und beim Programmstart wieder einlesen
 

lidija_25

Mitglied
Hey,

danke dir für die Antwort! Ich hab das jetzt auch so umgesetzt an einem anderen Beispiel mit String-Objekten. Ich schreibe den String in eine Datei und beim neuen Druchlauf wird dieser einer String ArrayListe hinzugefügt. Das funktioniert auch, allerdings nur für den aktuellen und den beim vorherigen Druchlauf erzeugten String-Objekt.

Java:
import java.io.*;
import java.util.ArrayList;

public class Serialisierung implements Serializable
{

    static ArrayList<String> serie=new ArrayList<>();
    
    public static void main(String args[])
    {
        int zahl=1;
        String str="Test6";
        
       try
       {
          FileInputStream fileStream=new FileInputStream("MeinFile.txt");
          ObjectInputStream objectStream=new ObjectInputStream(fileStream);
          String gelesenerString=(String) objectStream.readObject();
          serie.add(gelesenerString);
          objectStream.close();
        }
        catch (Exception ex)
        {
            System.out.println("Fehler");
        }
       
       switch(zahl)
       {
          case 1: try
                    {
                       FileOutputStream fs=new FileOutputStream("MeinFile.txt");
                       ObjectOutputStream os=new ObjectOutputStream(fs);
                       os.writeObject(str);
                       serie.add(str);
                       os.close();   
                    }
                    catch(Exception ex)
                    {
                        System.out.println("Error");
                    }
                  break;
          default: System.out.println("Fehler");
        }
        
        
        for(String strings:serie)
            System.out.println(strings);
        
        
        
    }
    
}

Was könnte ich da machen damit wirklich nach n-Durchläufen auch alle erzeugten Objekte angezeigt werden? Danke für die Tipps! :))
 

InfectedBytes

Top Contributor
Du liest halt immer nur exakt einen String aus der Datei.
Sinnvollerweise solltest du aber alle Strings auslesen.
Hier mal in Pseudocode
Java:
while(Ende der Datei nicht erreicht) {
  String gelesen = read();
  serie.add(gelesen);
}
 

lidija_25

Mitglied
Hey,

ich bin ein bisschen verwundert von der ganzen Sache, da die Serialisierung paar EInheiten nach dieser Übung die ich gerade bearbeite kommt...Hm, wie kann ich denn durch die Datei iterieren? Also wie kann ich sicherstellen, dass das Ende der Datei erreicht wurde? Hast du vll da einen Tipp für mich? :oops:
 

InfectedBytes

Top Contributor
ich denke mal du sollst das gar nicht serialisieren, sondern nur in einer schleife immer neue termine abfragen und vergleichen:
Java:
while(...) {
  //termin erstellen 
  Termin t = new Termin();
  termine.add(t);
}

ansonsten kannst du prüfen ob nach daten vorhanden sind:
Java:
while(stream.available() >0 ) {
  //daten einlesen
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Neues Objekt mit Beziehung zu bereits bestehendem Objekt Java Basics - Anfänger-Themen 4
F Verweis oder neues Objekt? Java Basics - Anfänger-Themen 8
F Neues Objekt oder nur ein Verweis? Java Basics - Anfänger-Themen 5
I Innerhalb einer Methode suchen und hinzufügen. Neues Objekt in Suche dann? Java Basics - Anfänger-Themen 8
P Vererbung Neues Objekt aus Vorlage erzeugen Java Basics - Anfänger-Themen 1
M Neues Objekt erzeugen mit Klassennamen oder ohne Java Basics - Anfänger-Themen 5
M Neues Objekt? Java Basics - Anfänger-Themen 6
D aus einem einzeiligen String ein neues Objekt erstellen Java Basics - Anfänger-Themen 5
M Neues Objekt erstellen Java Basics - Anfänger-Themen 3
P neues Objekt Java Basics - Anfänger-Themen 4
D Neues Objekt in Methode erstellen möglich? Java Basics - Anfänger-Themen 5
B neues Objekt erzeugen Java Basics - Anfänger-Themen 7
S neues Objekt benennen Java Basics - Anfänger-Themen 3
T Möchte ein neues Objekt erzeugen mit Wert von anderem Objekt Java Basics - Anfänger-Themen 9
G neues Objekt der Klasse eines anderen Objekts Java Basics - Anfänger-Themen 3
S Methode soll ein neues Objekt vom Typ Class XYZ Java Basics - Anfänger-Themen 7
S Problem neues Objekt erzeugen Java Basics - Anfänger-Themen 4
A neues Objekt in main methode erstellen Java Basics - Anfänger-Themen 2
M [SOLVED]private Daten head - neues objekt? Java Basics - Anfänger-Themen 12
J neues Object (JLabel) vorab zum Layout hinzufügen , Location setzen, etc? Java Basics - Anfänger-Themen 2
Lena_2611 Vergleich von Array1 Index mit Array2 Wert und erzeugen eines neues Arrays Java Basics - Anfänger-Themen 8
J Array vertauschen ohne ein neues anzulegen?! Java Basics - Anfänger-Themen 10
W Neues Lern-Projekt gesucht Java Basics - Anfänger-Themen 8
B Erste Schritte nio oder io für neues Projekt Java Basics - Anfänger-Themen 1
AnnaBauer21 org.w3c.dom.Element - Neues Element hinzufügen Java Basics - Anfänger-Themen 4
T Erste Schritte Totaler Noob in Java will was neues lernen Java Basics - Anfänger-Themen 22
E Knopfdruck neues Fenster öffnen Java Basics - Anfänger-Themen 5
J Variablen Strings mit Zeilenumbrüchen in neues Array Element Java Basics - Anfänger-Themen 1
K Erste Schritte Neues Fenster mit Textinhalt öffnen Java Basics - Anfänger-Themen 6
M Code um per jButton ein neues Fenster zu öffnen Java Basics - Anfänger-Themen 3
A altes JPanel entfernen und neues öffnen Java Basics - Anfänger-Themen 5
J char-Array rückwärts ausgeben und in neues Char-Array speichern Java Basics - Anfänger-Themen 3
P Array reversed in ein neues Array Java Basics - Anfänger-Themen 5
F Neues Panel und Button unsichtbar Java Basics - Anfänger-Themen 10
M Beim Klicken auf X neues Fenster Java Basics - Anfänger-Themen 4
S Neues Fenster auf Knopfdruck Java Basics - Anfänger-Themen 12
J Button drücken neues Fenster?! Java Basics - Anfänger-Themen 5
I Neues Klassenobjekt nicht "ansprechbar" Java Basics - Anfänger-Themen 5
C Button - neues Fenster - Bestellung anzeigen Java Basics - Anfänger-Themen 10
K Neues Bild bei eingabe bestätigung erscheinen Java Basics - Anfänger-Themen 21
M Timer-Thread in Swing öffnet jedes Mal ein neues Fenster Java Basics - Anfänger-Themen 6
D Design-Tipps für neues Programm (Excel-Charts-...) Java Basics - Anfänger-Themen 3
M Neues Fenster Java Basics - Anfänger-Themen 2
S Innerhalb eines Fensters ein neues erschaffen Java Basics - Anfänger-Themen 7
K neues Fenster mit Button öffnen Java Basics - Anfänger-Themen 17
D Neues Frame öffnen Java Basics - Anfänger-Themen 7
J Neues Forum Thema erstellen mit java(httpclient) Java Basics - Anfänger-Themen 11
M Neues Fenster öffnen altes schützen Java Basics - Anfänger-Themen 10
S mit clickevent neues formular öffnen Java Basics - Anfänger-Themen 2
K Neues Fenster Öffnen? Java Basics - Anfänger-Themen 18
F jTable - neues Element vorher auf existenz Prüfen Java Basics - Anfänger-Themen 7
E Neues Java Fenster öffnen Java Basics - Anfänger-Themen 4
D Neues ContentPane öffnen Java Basics - Anfänger-Themen 3
B neues Problem! Java Basics - Anfänger-Themen 14
G JSP ohne neues Fenster aufrufen. Java Basics - Anfänger-Themen 8
I Probleme bei "Neues Spiel" Java Basics - Anfänger-Themen 3
P Neues Fenster ueber Hauptfenster Java Basics - Anfänger-Themen 4
L Wie kann ich auch in einem ActionListener ein neues java Pro Java Basics - Anfänger-Themen 8
gurgi mit button neues Frame öffnen Java Basics - Anfänger-Themen 7
G Neues File mit vorgegebenen Einstellungen erstellen? Java Basics - Anfänger-Themen 7
T Panel entfernen, neues hinzufügen Java Basics - Anfänger-Themen 2
D neues Fenster in GUI Java Basics - Anfänger-Themen 2
G neues String Array in super() übergeben Java Basics - Anfänger-Themen 3
S vom button ein neues fenster öffnen Java Basics - Anfänger-Themen 1
L neues Fenster und Hauptfenster sperren Java Basics - Anfänger-Themen 11
N Open Source für Anfänger, neues Projekt-> Interesse? Java Basics - Anfänger-Themen 36
I Neues Spiel starten Java Basics - Anfänger-Themen 9
K Neues Fenster per Buttonklick, Texteingabe speichern Java Basics - Anfänger-Themen 9
M removeAll() und neues Hinzufügen Java Basics - Anfänger-Themen 2
N Wie öffne ich ein neues Applet? Java Basics - Anfänger-Themen 4
G neues Paket importieren Java Basics - Anfänger-Themen 2
R Spieleprogrammierung Menüeintrag "Neues Spiel" Java Basics - Anfänger-Themen 2
G Neues Bild bei MouseOver Java Basics - Anfänger-Themen 2
X GUI: neues Panel in einer Applikation anzeigen lassen Java Basics - Anfänger-Themen 2
R Gui + neues Fenster Java Basics - Anfänger-Themen 8
bernd Neues JFrame erzeugen? Java Basics - Anfänger-Themen 8
S Neues Fenster/Panel nach Knopfdruck Java Basics - Anfänger-Themen 2
M Kann neues Servlet nicht hinzufügen Java Basics - Anfänger-Themen 5
S in einem PopUp ein neues Popup erzeugen? Java Basics - Anfänger-Themen 5
J neues gui hinzugefügt .... jetzt gehts nicht mehr Java Basics - Anfänger-Themen 10
krgewb Über Objekt, das Objekte desselben Typs enthält iterieren Java Basics - Anfänger-Themen 5
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
Rxiiz Objekt aus ComboBox entfernen Java Basics - Anfänger-Themen 4
I JSON in Objekt umwandeln Java Basics - Anfänger-Themen 3
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
B Objekt aus generalisierter Liste entfernen Java Basics - Anfänger-Themen 11
Soranix Erste Schritte Struktur als Anfänger // Von einer Klasse auf ein Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 6
Say Objekt Java Basics - Anfänger-Themen 4
Say abstract class und Objekt erzeugen - Dringend Hilfe Java Basics - Anfänger-Themen 10
T Wie kann man es machen das ein Objekt nicht übermalt wird Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
I Entity Objekt nicht gefunden -> Webhook empfangen in der gleichen Methode (Transaktion) Java Basics - Anfänger-Themen 37
K warum kann ich das Objekt nicht erstellen ? Java Basics - Anfänger-Themen 2
K wie kann ich alle Attribute von dem Objekt(pagode) ausgeben lassen ? Java Basics - Anfänger-Themen 3
H Ein übergegebenes Objekt auf null setzen Java Basics - Anfänger-Themen 9
M BlueJ Objekt in Objektliste Java Basics - Anfänger-Themen 2
B Objekt in Klassendiagramm an fremdes Objekt weiterreichen? Java Basics - Anfänger-Themen 6
Fodoboo131 RegEx- Umwandlung von String in ausführbares Objekt/ Befehl Java Basics - Anfänger-Themen 9
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2

Ähnliche Java Themen


Oben