/***************************************************************/
/* Prof. Dr. Carsten Vogt                                      */
/* FH Koeln, Fak. 07 / Nachrichtentechnik                      */
/* http://www.nt.fh-koeln.de/vogt                              */
/*                                                             */
/* Das Programm demonstriert eine Klasse mit Attribut und      */
/* Methoden (einschliesslich Zugriffschutz mit public und      */
/* private) sowie ihre Benutzung in einem Hauptprogramm.       */
/***************************************************************/

// Klassendefinition für Bankkonten

class Konto {

 // Attribut (gegen direkte Zugriffe von aussen gesperrt)
 
 private double stand;

 // Methoden (Zugriffe von aussen moeglich)
 
 public double abfragen() {
  return stand; }
  
 public void einzahlen(double betrag)
  {
  stand += betrag; }
  
 public double abheben(double betrag) {
  if (betrag<=stand)
   { stand -= betrag;
     return betrag; }
  else return -1; }
  
}

// Hauptprogramm (in einer eigenen Klasse!)

public class KontoBenutzung {

  public static void main(String args[]) {

    // Erzeugung eines Objekts
    Konto meinKonto = new Konto();


    // Benutzung des Objekts
    System.out.println("Anfangsstand: " + meinKonto.abfragen());
    
    meinKonto.einzahlen(200.0);
    System.out.println("Stand nach Einzahlen: " + meinKonto.abfragen());
    
    if (meinKonto.abheben(250.0)>=0.0)
      System.out.println("Abheben von 250.0 erfolgreich");
     else System.out.println("Abheben von 250.0 fehlgeschlagen");
     
    System.out.println("Stand nach Abheben: " + meinKonto.abfragen());
    
  }
  
}



