Objektorientierung:Javakurs

Aus Info-Theke
Zur Navigation springen Zur Suche springen


Übersicht

Theorie

Objektorientierung zeichnet durch folgende Eigenschaften aus:

  • Kapselung
  • Vererbung
  • Polymorphie

In der Programmierung wird dies alles in Klassen realisiert.

Eine Java-Klasse ist ein komplexer Datentyp, der Variablen und Methoden enthält.

Variablen einer Klasse können Objekte mit einfachem Datentyp (int, long, bool, char, float und double) oder mit komplexem Datentyp (Klasse) sein.

Methoden sind benannte Ansammlungen von Anweisungen.

Variablen und Methoden haben Namen.

Kapselung

Kapselung bedeutet, dass Informationen nur dort vorhanden sind, wo sie wirklich gebraucht werden.

Vorteil: Änderungen bleiben lokal begrenzt

Technisch wird das durch Zugriffsrechte geregelt.

Eine Variable/Methode kann folgende Zugriffsrechte haben:

  • public: die Variable/Methode ist außerhalb der Klasse bekannt und darf "von jedem" benutzt werden.
  • protected: Die Variable/Methode ist nur innerhalb der Klasse und in abgeleiteten Klassen bekannt.
  • private: Die Variable/Methode ist nur innerhalb der Klasse bekannt.

Ferner bieten Interfaces (siehe später) eine Möglickeit der Kapselung an.

Vererbung

Eine Klasse kann von einer anderen Klasse (Basisklasse genannt) abgeleitet werden. Das bedeutet, dass alle Variablen/Methoden dieser Basisklasse auch in der Oberklasse vorhanden sind. Allerdings sind private Variablen/Methoden nicht nutzbar.

Der Vorteil: Wiederverwendung von Code. Reduzierung von Komplexität.

Polymorphie

Das bedeutet, dass es mehrere Methoden mit gleichem Namen und verschiedenen Parameterdefinitionen geben kann. Der Compiler findet die passende Methode beim Aufruf selber heraus.

Beispiel: Berechnung eines Teilstrings eines Strings.

  • String substr(String source, int from);
  • String substr(String source, int from, int to);

Wird die Methode mit 2 Parametern aufgerufen, wird der String ab Position from zurückgegeben, bei 3 Parametern der String von from bis to.

Vorteil: Bessere Verständlichkeit.

Beispiel einer Klassenhierarchie

class Article {
   // Preis in Cent
   protected long price;
   String asEuro(){
      return String.format("%d.%02d", price / 100, price % 100);
   }
}
class PieceGoods : extends Article {
   int number
}
class Fluid : extends Article {
  public int amount;
}
class Beer : extends Fluid {
}
class Cookie : extends PieceGoods {
}
class Meat : extends PieceGoods {
   public int weight;
}