zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

Ja. Die Idee der Kapselung ist es, Details eines Objekts vor anderen Bereichen der Software zu verbergen. Einige der Details können Methoden sein.

Private Methoden

class Bankkonto
{
  // Instanzvariablen
  private String kontonummer;
  private String kontoinhaber;
  private int    kontostand;
  private int    zaehler = 0; //zaehlt wie oft das Bankkonto verwendet wird

  //Konstruktor
  Bankkonto( String ktoNummer, String ktoInhaber, int start )
  {
    kontonummer  = ktoNummer;
    kontoinhaber = ktoInhaber;
    kontostand   = start;
  }

  private void inkrementZaehler()
  {
     ;
  }

  void  verarbeiteEinzahlung( int betrag )
  {
    inkrementZaehler();
    kontostand = kontostand + betrag ;
  }

  void verarbeiteAuszahlung( int betrag )
  {
    int gebuehr;
    inkrementZaehler();
    if ( kontostand < 100000 )
      gebuehr = 15;
    else
      gebuehr = 0;

    kontostand =  kontostand - betrag - gebuehr  ;
  }
}

Eine private Methode ist eine Methode, die nur von anderen Methoden des Objekts verwendet werden kann. Teile eines Programms außerhalb des Objekts können private Methoden des Objekts nicht direkt aufrufen (verwenden).

Angenommen, die Bank möchte aufzeichnen wie oft ein Bankkonto verwendet wird. (Das könnte als Sicherheitsmaßnahme geschehen.) Die "Verwendung" eines Bankkontos ist die Verarbeitung eines Guthabens oder eines Schecks. Um das zu erreichen, wird den Daten der Bankkonto-Klasse ein "Zähler" hinzugefügt. (Teile der Klasse wurden vorübergehend ausgelassen.)

Die Methoden verarbeiteEinzahlung() und verarbeiteAuszahlung() rufen inkrementZaehler() auf, um die Variable zaehler jedes Mal dann zu erhöhen, wenn sie verwendet wurden. Wir wollen die Variable zaehler nur aus diesen zwei Gründen ändern, also wird die Methode inkrementZaehler() als private deklariert (und die Variable zaehler wird ebenfalls als private deklariert.)

FRAGE 8:

Wir füllen die Lücken aus, so dass die neue private Methode die Variable zaehler inkrementiert.