/***************************************************************/ /* Prof. Dr. Carsten Vogt */ /* FH Koeln, Fak. 07 / Nachrichtentechnik */ /* http://www.nt.fh-koeln.de/vogt */ /* */ /* Das Programm zeigt am Beispiel von Bankkonten die Benutzung */ /* des Klassenkonzepts, insbesondere */ /* - Definition von Klassen mit klassen- und objektbezogenen */ /* Attributen / Methoden sowie oeffentlichen und privaten */ /* Attributen, (siehe auch Datei KontoTest.java) */ /* - Erzeugung und Loeschung von Objekten */ /* (siehe auch Datei KontoTest.java) und */ /* - Vererbung mit Nutzung und Ueberschreiben von Methoden der */ /* Superklasse. */ /* Eine fensterorientierte Testumgebung befindet sich in der */ /* Datei KontoTestGraf.java. */ /***************************************************************/ /**************************************************************** Die Klasse 'GeschuetztesKonto' erweitert die Klasse 'Konto' (siehe Datei Konto.java) um Kontrollmechanismen. Sie enthaelt als Attribute - eine SuperPIN (klassenbezogen), die gebraucht wird, um die PIN eines Konto aendern zu koennen (aehnlich der Legitimation eines Bankangestellten) und - eine PIN (objektbezogen) fuer das Abheben. Sie ermöglicht mit ihren Methoden - das Erzeugen eines Kontos mit Ersteinzahlung, - das Setzen der PIN eines Kontos (sofern SuperPIN korrekt angegeben) und - das Abheben (sofern ausreichend Deckung vorhanden und PIN korrekt angegeben). ****************************************************************/ class GeschuetztesKonto extends Konto { /* superPin (klassenbezogene Variable): Die PIN eines Kontos kann nur geaendert werden, wenn 'superPin' korrekt angeben wird. */ static private int superPin = 4711; /* pin: Abheben ist nur bei Angabe der korrekten PIN moeglich */ private int pin; /* Konstruktor 'GeschuetztesKonto()' */ GeschuetztesKonto(double stand, int pin) { super(stand); this.pin = pin; } /* 'pinSetzen()' setzt die PIN eines Kontos auf 'p'. Dazu muss ueber 'sup' die korrekte SuperPIN eingegeben werden. Liefert 0 bei Erfolg und -1 sonst. */ public int pinSetzen(int sup, int p){ if (sup==superPin) { pin = p; return 0; } else return -1; } /* 'abheben(betrag,p)' versucht, den Betrag 'betrag' vom Konto abzuheben. Voraussetzung ist die Angabe der korrekten PIN ueber 'p' und ein ausreichender Kontostand. Liefert den abgehobenen Betrag bei Erfolg und -1 sonst. */ public double abheben(double betrag, int p) { if (pin!=p) return -1; return super.abheben(betrag); } /* 'abheben(betrag)' ueberschreibt die entsprechende Methode der Superklasse Konto. Die abheben()-Methode der Klasse Konto ist damit bei einem Objekt der Klasse GeschuetztesKonto nicht mehr aufrufbar, so dass ohne PIN kein Geld abgehoben werden kann. */ public double abheben(double betrag) { System.out.println("Abheben nur mit PIN!"); return -1; } }