Klassenmethoden Flashcards
Klassen und Objekte - revisited
° Klassen sind die Einheiten des statischen
° Objekte sind die Einheiten des laufenden Programms
° Wenn Klassen selbst vollständig im Laufzeitsystem verfügbar sind, verschiebt sich diese klare Unterteilung:
- Über den Zugriff auf eine Klasse kann zur Laufzeit das Verhalten ihrer Objekte verändert werden
- Klassen werden zu eigenständgen Objekten mit einem eigenen Zustandsraum
Klassen in Java
° existieren auch selbst als Objekte zur Laufzeit
-> Klassenobjekt
-> kann einen Zustand haben (über Klassenvariablen) und Methoden anbieten (Klassenmethoden)
° Klassenvariablen und -methoden werden mit dem Modifikator static deklariert
° Klassenvariablen sollten privat deklariert werden
class Konto { private static int exemplarzaehler = 0; // Klassenvariable public Konto () { exemplarzaehler++; } public static int anzahlErzugterExemplare() // Klassenmethode { return exemplarzaehler; } }
Klassenmethoden
° öffentliche Klassenmethoden bilden die Operationen eines Klassenobjektes
° Operationen eines Klassenobjektes sind für Klienten in der Punktnotation aufrufbar:
.();
class Kontoverwalter { public void statusPruefen() { int anzahlKnoten = Konto.anzahlErzeugteExemplare(); ... } }
Klassenoperationen als Dienstleistungen
° Statische Methoden beziehen sich nicht auf dem Zustand des gerufenen Klassenobjekts, sonderen ausschließlich auf die übergebenen Parameter
° Für das Abrufen dieser Dienstleistungen muss kein Exemplar erzeugt werden; das Klassenobjekt steht unmittelbar zur Verfügung
Die main-Methode
° Eine Klasse kann eine Klassenmethode mit einer ganz speziellen Signatur anbieten:
public static void main (String[] args)
° Diese Klassenoperation wird n der Laufzeitumgebung von Java gesondert behandelt (Schnittstelle zum Betriebssystem)
° Einstiegspunkt für Java-Programme: In dieser Methode werden üblicherweise die ersten Exemplare erzeugt, mit denen eine Java-Anwendung gestartet wird
° Interaktive Objekterzeugung ist eine Besonderheit von BlueJ
° Andere IDEs beiten einen Startknopf, mit dem eine main-Methode aufgerufen wird
System.out
° Ausgaben auf die Konsole mit der Anweisung:
System.out.println(“Hello World!”);
° Die Klasse java.lang.System verfügt über eine öffentliche Klassenkonstante out
° Diese Konstante ist vom Typ PrintStream und somit eine konstante Referenz auf ein Exemplar der Klasse java.io.Printstream
° Ein Printstream ermöglicht mit seinen Operationen (u.a. println) die Ausgabe von Zeichenströmen
Initialisierung von Klassenobjekten
° Jede Klasse in Java definiert nur genau ein Klassenobjekt
° Diesse Klassenobjekt wird automatisch erzeugt, sobald eine Klasse in die Virtual Machine geladen wird
° Keine aufrufbaren Konstruktoren für Klassenobjekte
° In einer Klassendefinition können aber Klassen-Initialisierer angegeben werden, die nach dem Laden der Klasse ausgeführt werden
class Konto { static { exemplarzaehler = 42; ... } }
Klassenkonstanten
° gekennzeichnet durch den Modifikator final
° können mit dem Modifikator static deklariert werden
° werden öffentlich (public) deklariert
public static final int TAGE_PRO_WOCHE = 7;
public static final float PI = 3.141592654f;
public static final int ANZAHL_SPALTEN = 80;
Nicht alle Objekte sind Exemplare
° Alle Exemplare eienr Klasse sind Objekte
° Klasse ist ein Objek, in Java aber nicht das Exemplar einer weiteren Klasse
° Exemplare werden explizit mit new erzeugt, während Klassen automatisch geladen und initialisiert werden, sobald sie benutzt werden
Klassenemthoden und -variablen in UML
° Klassenvariablen und -methoden werden in den Klassen-Diagrammen der UML unterstrichen, um sie von Exemplarvariablen und -methoden zu unterscheiden
Konto
_saldo : integer // Exemplarvariable
gesamtbestand : integer // Klassenvariable
anzahlErzeugterKontn() : integer // Klassenmethode
einzahlen (wert : integer) // Exemplarmethode