Referenzen in Java

Status
Nicht offen für weitere Antworten.

Cube

Mitglied
hallo zusammen
kann mir jemand erklären was refernzen in java sind und wofür man sowas genau braucht
 
ich komme bei diesem programm nicht mehr weiter es sollen 5 konten erstellt werden wo jeweils 100€ drauf sind nun soll man von einem konto auf das andere überweisen können ab z22 verstehe ich das programm nicht mehr warum erstellt man da neue objekte?was genau bewiken diese objkete

Java:
import javax.swing.JOptionPane;
class KontoApp{
	public static void main (String args[]) {
		
		//deklaration der variablen
		final int ANZAHL_KONTEN = 5;
		double betrag;
		String eingabe, ausgabe;
		
		//deklaration des array wo die 5 objekte konten gespeichert werden 
		Konto kontoArray[] = new Konto[ANZAHL_KONTEN];
		
		for (int i = 0; i< kontoArray.length;i++)
		{
			// aufruf des Konstruktos
			kontoArray[i] = new Konto(i);
		}
	
		// neue objekte deklariert
		Konto vonKonto, nachKonto;
		
		//??
		eingabe =JOptionPane.showInputDialog("Überweisung von Kontonr.");
		vonKonto = kontoArray[Integer.parseInt(eingabe)];

		eingabe = JOptionPane.showInputDialog("...nach Kontonr.");
		nachKonto = kontoArray[Integer.parseInt(eingabe)];

		eingabe = JOptionPane.showInputDialog("Betrag:");
		betrag = Double.parseDouble(eingabe);

		
		vonKonto.ueberweisen(nachKonto, betrag);

	
		ausgabe = "Kontostand von Kontonr." + vonKonto.getKontoNr()+ ": " +     
                vonKonto.getSaldo() + " Euro \n"+ "Kontostand von Kontonr."+
                nachKonto.getKontoNr()+ ": " + nachKonto.getSaldo() +" Euro";
		JOptionPane.showMessageDialog(null,ausgabe);
		System.exit( 0 );
	}
}
 
wuerdest du keine neuen Objekte erstellen, so haettest du nur ein konto auf dass du immer 100 Euro ueberweist

da du aber 5 verschiedene konten haben willst musst du auch neue Objekte erzeugen...
 
Mit anderen Worten brauchst du eine Klasse Konto:
Java:
public class Konto {

  private int kontoNummer;
  private double betrag;

  public Konto(int kontoNummer) {
     this.kontoNummer = kontoNummer;
     this.betrag = 100.0; //laut Aufgabenstellung 
  }
 
  public int getkontoNummer() { return kontoNummer; }
  public double getBetrag() { return betrag; }

  public void ueberweisen(Konto nachKonto, double ueberweisungsBetrag) {
    //jetzt streng mal *deine* Rübe ein wenig an
  }
}
 
das mit den 5 objekten ist mir klar aber hier
Java:
       // neue objekte deklariert
        Konto vonKonto, nachKonto;
        
        //??
        eingabe =JOptionPane.showInputDialog("Überweisung von Kontonr.");
        vonKonto = kontoArray[Integer.parseInt(eingabe)];
 
        eingabe = JOptionPane.showInputDialog("...nach Kontonr.");
        nachKonto = kontoArray[Integer.parseInt(eingabe)];
 
        eingabe = JOptionPane.showInputDialog("Betrag:");
        betrag = Double.parseDouble(eingabe);
 
        
        vonKonto.ueberweisen(nachKonto, betrag);

komme ich nicht weiter warum brauche ich jetzt 2 neue objekte
(vonKonto ,nachKonto) und setzte diese denn mit den schon vorhandenen objekten gleich ;(
 
Mit anderen Worten brauchst du eine Klasse Konto:
Java:
public class Konto {

  private int kontoNummer;
  private double betrag;

  public Konto(int kontoNummer) {
     this.kontoNummer = kontoNummer;
     this.betrag = 100.0; //laut Aufgabenstellung 
  }
 
  public int getkontoNummer() { return kontoNummer; }
  public double getBetrag() { return betrag; }

  public void ueberweisen(Konto nachKonto, double ueberweisungsBetrag) {
    //jetzt streng mal *deine* Rübe ein wenig an
  }
}

die habe ich schon wollte die nicht hier auch noch rein schreiben damit es nicht zu lang wird
 
komme ich nicht weiter warum brauche ich jetzt 2 neue objekte
(vonKonto ,nachKonto) und setzte diese denn mit den schon vorhandenen objekten gleich ;(
du brauchst ja ein Konto von dem du ueberweist und ein Zielkonto... also 2 versch. Konten...
und du erschaffst ja nicht neue Objekte sondern holst die entsprechenden Konten aus dem Array raus.

Java:
Konto vonKonto, nachKonto;
hier erschaffst du keine neuen Objekte - hier deklarierst du nur zwei Variablen vom Typ Konto
Java:
  vonKonto = kontoArray[Integer.parseInt(eingabe)];
jetzt weist du der Variable ein Konto (also ein Objekt) hinzu.

dann wird ueberwiesen
 
Doch, du sorgst dafür, dass vonKonto und nachKonto auf bereits existierende Kontoobjekte "zeigen", diese also referenzieren.

Am anschaulichsten ist wohl, wenn man sich die Objekte wie Fernsahapparate und die Referenzen wie Fernbedienungen vorstellt. Einen neuen Fernseher gibt es nur über "new" (wie der Name schon sagt). Fernbedienungen für einen Fernseher kannst du so viele haben wie du willst, sie lassen sich auch auf einen anderen Fernseher (vom gleichen Typ) "umprogrammieren". Wenn niemand mehr eine Fernbedienung für einen bestimmten Fernseher hat, ist er nutzlos und kann weggeschmissen werden (Garbage Collection). Es gibt auch Fernbedienungen, die auf gar keinen Fernseher zeigen, das wäre dann eine null-Referenz.
 
habe ich das jetzt so richtig verstanden:
Java:
        //neue Variablen werden vom typ konto deklariert
        Konto vonKonto, nachKonto;
        
       
        eingabe =JOptionPane.showInputDialog("Überweisung von Kontonr.");
        vonKonto = kontoArray[Integer.parseInt(eingabe)];
        //konto array wird ausgelesen und in der variable von konto gespeichert
        //da durch ist vonKonto eine referenz auf eins der 5 Kontoen "zeigt"
        //somit wird also das Konto ausgewählt von dem das geld überwiesen wird
        
        eingabe = JOptionPane.showInputDialog("...nach Kontonr.");
        nachKonto = kontoArray[Integer.parseInt(eingabe)];
        //konto array wird ausgelesen und in der variable von konto gespeichert
        //da durch ist nachKonto eine referenz auf eins der 5 Kontoen "zeigt"
        //somit wird also das Konto ausgewählt von dem das geld eingezahlt wird
 
        eingabe = JOptionPane.showInputDialog("Betrag:");
        betrag = Double.parseDouble(eingabe);
 
        
        vonKonto.ueberweisen(nachKonto, betrag);
        //methode wird aufgerufen über die referenzvariable vonKonto d.h. von eines
        //der 5 Konten wird geld abgezogen und auf das andere das dem übergabe
       // parameter mitgegeben wird auch über eine referenzvariable eingezahlt

ganz schön kompliziert
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben