/***************************************************************/
/* Prof. Dr. Carsten Vogt                                      */
/* FH Koeln, Fak. 07 / Nachrichtentechnik                      */
/* http://www.nt.fh-koeln.de/vogt                              */
/*                                                             */
/* Das Programm demonstriert Operationen auf Objektvariablen.  */
/***************************************************************/

import java.io.*;

/* Definition einer Klasse fuer Bankkonten */

class Konto {
 String inhaber;
 double stand;
 boolean gesperrt;
}

public class ObjVarOp {

 public static void main(String args[]) {

  /* Deklaration und Initialisierung zweier Objektvariablen */

  Konto meinKonto = new Konto(),
        deinKonto = new Konto();

  meinKonto.inhaber = new String("Ich");
  deinKonto.inhaber = new String("Du");

  System.out.println();
  System.out.println("Werte nach Initialisierung:");
  System.out.println();
  System.out.println(" meinKonto.inhaber = " + meinKonto.inhaber);
  System.out.println(" deinKonto.inhaber = " + deinKonto.inhaber);

  /* Vergleich der Objektvariablen, d.h. Test, ob sie auf dasselbe Objekt verweisen */

  System.out.println();
  if (meinKonto == deinKonto)
    System.out.println(" meinKonto und deinKonto verweisen auf dasselbe Objekt.");
   else
    System.out.println(" meinKonto und deinKonto verweisen auf verschiedene Objekte.");

  /* Zuweisung von meinKonto an deinKonto: Kopiert wird nicht der Objektinhalt,
     sondern der Objektverweis. deinKonto verweist also anschliessend auf dasselbe
     Objekt wie meinKonto. Das Objekt, auf das zuvor deinKonto verwiesen hatte, ist
     dann nicht mehr zugreifbar. */

  deinKonto = meinKonto;

  System.out.println();
  System.out.println("Nach der Zuweisung deinKonto = meinKonto:");
  System.out.println();  
  if (meinKonto == deinKonto)
    System.out.println(" meinKonto und deinKonto verweisen auf dasselbe Objekt.");
   else
    System.out.println(" meinKonto und deinKonto verweisen verschiedene Objekte.");

  /* Das inhaber-Attribut des gemeinsamen Objekts wird geaendert: Zugriff ueber
     meinKonto.inhaber, damit aber auch Aenderung von deinKonto.inhaber. */

  meinKonto.inhaber = new String("Wir");

  System.out.println();
  System.out.println("Werte nach Zuweisung meinKonto.inhaber = new String(\"Wir\"):");
  System.out.println();
  System.out.println(" meinKonto.inhaber = " + meinKonto.inhaber);
  System.out.println(" deinKonto.inhaber = " + deinKonto.inhaber);
  
  

 }

}

