Sie sind auf Seite 1von 6

Andreas Frwis

BIBI-Zusammenfassung

Inhalt dieser Zusammenfassung: Objektorientierte Programmierung Exceptions Collections, Autoboxing Entwurfsmuster + Prinzipien

Objektorientierte Programmierung
Prinzipien der objektorientierten Programmierung Abstraktion
Trennung zwischen Konzept und Umsetzung. Beispiel: Bauteil und sein Bauplan Man muss verstehen knnen, was ein Objekt darstellt, ohne seinen genauen Inhalt zu kennen. Das klingt zwar sehr abstrakt (haha Wortwitz, ist aber eigentlich ganz einfach): Eine Klasse beschreibt nur, wie ein Objekt auszusehen hat. Die Klasse Kuh beschreibt, dass eine Kuh ein Fell, ein Gewicht, ein Milchvolumen etc. hat und dass sie z.B. fressen oder Muh! sagen kann. Das Objekt / die Umsetzung selbst (die Kuh) ist von der Klasse (Konzept getrennt!

Kapselung
Zusammenfassung einer Menge von Daten (Attribute) und darauf operierender Funktionen (Methoden). -->Eine Klasse hat, wie oben beschrieben, Attribute (Gewicht etc.) und Methoden (fressen) Dadurch entstehen neue komplexere Datentypen. Die Attribute reprsentieren den Zusand eines Objektes Die Methoden reprsentieren das Verhalten eines Objektes

Wiederverwendung
Wird durch Abstaktion und Kapselung gefrdert Beispiel: Collections. Collections sind in der Regel sehr kompliziert, haben aber eine sehr einfache Schnittstelle. Werden Collections als Klasse implementiert und durch die Kapselung die komplexen Daten wegabstrahiert, knnen sie sehr einfach wiederverwendet werden.

Polymorphismus
ACHTUNG! Nicht zu verwechseln mit Polygamie. Es geht darum, ber einen Funktionsaufruf einer Funktion, fr die es mehrere gleichnamige funktionen gibt, automatisch die richtige (gewnschte) Funktion aufzurufen. Eine Methode ist polymorph, wenn sie in verschiedenen Klassen die

Andreas Frwis

BIBI-Zusammenfassung

gleiche Signtur hat, jedoch erneut implementiert ist.

Begriffe
Klasse: Eine Klasse beschreibt die Attribute (Eigenschaften) und Funktionen / Verhalten (Methoden) eines Objekts. Objekt: Instanz einer Klasse. Ein Objekt ist das, was tatschlich im Speicher ist. Achtung: Es kann zwar nur eine Klasse Kuh geben, aber 1000 KuhObjekte. Attribute: Die Daten einer Klassendefinition. Die Eigenschaften, die ein Objekt hat. Methoden: Das Verhalten einer Klassendefinition - das, was ein Objekt kann. Konstruktor: Spezielle Operationen, die die Erzeugung eines Objektes hervorrufen. Ein Konstruktor besitzt immer den Namen der Klasse. Es gibt immer einen Default-Konstruktor. Destruktor: Wird immer aufgerufen, wenn ein Objekt zerstrt wird. Klassenattribut: Ein Attribut, das zur Klasse selber gehrt. Also Ein Attribut, das bei jedem Objekt der Klasse gleich ist. Beispiel: Alle Khe haben Milch mit 3,5% Fettanteil. Ein Klassenattribut wird mit static definiert.

Vererbung
Vererbung ist so einfach, dass ich es jetzt nicht extra beschreiben werde, weil time is money you know. Durchlesen sollte man das Kapitel (OOP_01_LE_Klassen_Vererbung.pdf) aber schon, wegen den vielen Begriffen...

Sichtbarkeiten (Access Modifier)


Haben Einfluss auf Lebensdauer, Sichtbarkeit und Vernderbarkeit von Programmelementen. Public: Elemente sind in der Klasse selbst, in abgeleiteten Methoden der Klasse und fr den Aufrufer von Instanzen der Klasse sichtbar. Protected: Elemente sind in der Klasse selbst + ihren abgeleiteten Klassen UND in Klassen des selben Packages aufrufbar. Private: Elemente sind nur in der Klasse selbst sichtbar.

Andreas Frwis

BIBI-Zusammenfassung

Exceptions

Eine Ausnahme (Exception) ist ein Signal, das einen auergewhnlichen Zustand kennzeichnet. Frher hat man Exceptions mit Rckgabewerten gehandhabt. Dies hat Nachteile: Fehlerbehandlung ist Teil der normalen Programmierung, wird also nicht voneinander getrennt. Fehlerwert kann verloren gehen Fehlerwert muss richtig interpretiert werden

Arten von Exceptions Error:


weist auf schwerwiegende Fehler in der JVM (Java Virtual Machine) hin, beispielsweise wenn eine Klasse nicht gefunden wird sollte nicht fr eigene Zwecke verwendet werden

RuntimeException:
Eine RuntimeException ist eine ungeprfte Ausnahme Werden bestimmte Ausnahmen (beispielsweise Zugriff auf eine NullReferenz) nicht behandelt, fhrt dies zum Programmabbruch (z.B. durch Auslsung einer NullPointerException).

Ausnahmen abgeleitet von Exception:


Diese Ausnahmen mssen behandelt werden. Nennt man deshalb geprfte Ausnahmen Methoden, die eine Exception aufrufen, mssen speziell deklariert werden: public int machEtwas() throws SomeException throw new SomeException();

Andreas Frwis

BIBI-Zusammenfassung

Ausnahmen mssen mit einem try & catch Block behandelt werden: try { // Code der mglicherweise eine Ausnahme auslst } catch( SomeException e ) { // Behandle die Ausnahme vom Typ SomeException // oder solche die zuweisbar sind (Polymorphismus!) } finally { // Code der immer ausgefhrt wird: // 1) Wenn der try-Block beendet wurde // 2) Wenn eine Ausnahme behandelt wurde // 3) Wenn eine unbehandelte Ausnahme aufgetreten ist }

Vorteile von Exceptions:


Ausnahmen mssen behandelt werden Ausnahmen werden von Niveau zu Niveau weitergeleitet (Eine RuntimeException wird irgendwann zu einer Exception, wenn sie nicht zwischenzeitlich durch einen try & catch Block behandelt wird) Code der Ausnahmebehandlung ist vom normalen Code getrennt Fehler knnen nach Typen organisiert werden

Nachteile von Exceptions:


aufwndig Gefahr von unsauberer Programmierung v.A. Bei geprften Ausnahmen. Beispielsweise wird eine Ausnahme abgefangen, aber nicht behandelt Unsicherheit: Wann verwende ich geprfte oder ungeprfte Ausnahme?

Zusammengefasst:
Es gibt ungeprfte Exceptions und geprfte Exceptions. Ungeprfte Exceptions sind immer RuntimeExceptions, also Sachen, die whrend der Laufzeit auffallen. Sind meistens Denkfehler, zum Beispiel Division durch Null oder Zugriff auf ein nicht vorhandenes Array-Index. Mssen nicht behandelt werden, fhren aber beim Aufruf zum Programmabbruch Geprfte Exceptions mssen immer durch einen try-catch block abgefangen werden

Autoboxing
In Java gibt es primitive Datentypen wie Integer, long und double. Diese Datentypen sind keine Objekte. Das ist aus objektorientierter Sicht keine gute Lsung. Beispielsweise eine Liste kann nur Objekte aufnehmen, und keine primitiven Datentypen.

Andreas Frwis

BIBI-Zusammenfassung

LSUNG: man muss die primitiven Datentypen mit Hilfe von einer WrapperKlasse in ein Objekt umwandeln. Das sah so aus: List<Integer> listOfInteger = new ArrayList<Integer>(); int number = 4; Integer wrappedNumber = new Integer(number); listOfInteger.add(wrappedNumber); Dies ist natrlich zu aufwndig. Seit Java 5 gibt es das Autoboxing: Das bedeutet, dass primitive Datentypen und Wrapper-Objekte bei Bedarf ineinander umgewandelt werden. Das sieht so aus: int number = 4; Integer wrappedNumber = number; int k = wrappedNumber; Boxing: Wenn ein primitiver Datentyp in ein Wrapper-Objekt verpackt wird. Unboxing: Wenn ein Wrapper-Objekt zurck in einen primitiven Datentyp gewandelt wird.

Collections
Collections sind dazu da, um Daten / Objekte in Gruppen zu speichern. Es gibt verschiedene Collections mit verschiedenen Vor & Nachteilen: Set (HashSet, TreeSet): kann Elemente nicht doppelt enthalten schnelle Suche List (ArrayList, LinkedList, Vector, Stack,...) kann Elemente doppelt enthalten Elemente haben eine Reihenfolge variable Lnge, schnelles Einfgen und Lschen

Map (assoziativer Speicher) (Map implementiert Collections nicht!) Bei einer Map wird ein Wert immer mit einem Schlssel (key) gespeichert. Etwa wie bei einem Telefonbuch: Es werden Namen (Schlssel) immer mit Nummern (Werten) verbunden. Eine Map ist unsortiert. Auerdem spielt die Reihenfolge, in der Werte eingefgt werden, keine Rolle.

Entwurfsmuster
Entwurfsmuster tragen dazu bei, dass man das Rad nicht immer wieder neu erfinden muss, sondern hnliche Probleme (der gleichen Problemklassen) immer auf die gleiche Art und Weise lst.

Begriffe:
Kontext: Die Situation, in der das Muster angewandt wird. Sollte wiederkehrend sein, da man fr einzelne / besondere Aufgaben kein Muster macht.

Andreas Frwis

BIBI-Zusammenfassung

Problem: das Ziel, welches erreicht werden soll. Inklusifve smtliche Randbedingungen und einschrnkungen. Lsung: Ein allgemein verwendbarer Entwurf, der das Problem lst.

Beispiel:
Kontext: Die Schlssel sind im geschlossenen Auto. Problem: Wie komme ich zeitgerecht zur Arbeit? Lsung: Zerbreche die Scheibe, steige ins Auto, starte den Motor und fahre zur Arbeit. Entwurfsmuster sind unabhngig von der verwendeten Programmiersprache.

Entwurfsprinzipien
Entwurfsprinzipien sind Erfahrungen, die sich in der Praxis ergeben haben. Kapsle was sich verndert: Immer, wenn etwas gendert werden muss, knnen neue Fehler entstehen. Jene Teile des Codes, die gendert werden, sollten von den statischen Teilen getrennt werden. Bevorzugte Komposition der Vererbung: Vererbung ist zwar toll, aber nicht immer geeignet. Sondern nur dann, wenn smtliche vererbten Funktionalitten fr alle Unterklassen auch zutreffen. Ansonsten entstehen sehr unschne Vererbungshierarchien, da man z.B. stndig Methoden berschreiben muss. Programmiere zu Interfaces und nicht zu Implementierungen: Wenn man mglichst nur mit den Basisklassen arbeitet, dann sind viel weniger Teile der Anwendung betroffen, wenn neue Unterklassen eingefgt werden. Weitere Prinzipien: Strebe nach lose gekoppelten Beziehungen zwischen Objekten die miteinander interagieren. Klassen sollten offen fr Erweiterungen aber geschlossen fr Vernderungen sein. Sei nur von abstrakten Konzepten abhngig. Hnge nicht von konkreten Klassen ab. Das Prinzip des geringsten Wissens - Sprich nur mit deinen engsten Freunden Eine Klasse sollte nur einen Grund haben, warum sie gendert werden muss. Nachzulesen in HOK01_LE_Entwurfsprinzipien.pdf