Informatik II – Übung 6

Werbung
Informatik II – Übung 6
Gruppe 7
Leyna Sadamori
[email protected]
DEBRIEFING
Übung 5
11. April 2013
Informatik II – Gruppe 7 – Übung 6
2
U5A1-4
§  Im Prinzip alles richtig.
§  Falls am Ende noch Zeit, dann Einsicht in die Best Of’s…
11. April 2013
Informatik II – Gruppe 7 – Übung 6
3
THEORIE
Java – Vererbung, Polymorphie, abstrakte Klassen, Interfaces
Fabrikmethode
11. April 2013
Informatik II – Gruppe 7 – Übung 6
4
Java Beispiel"
Java – Vererbung
§  Warum braucht/verwendet man Vererbung?
§  Code Reuse
§  Besseres Code Design (Modularisierung)
Basisklasse §  Schlüsselwörter
§  extends (SubClass extends SuperClass)
§  super erlaubt Zugriff auf die Basisklasse
§  Konstruktor: super()!
§  Methoden: super.method()!
§  http://docs.oracle.com/javase/tutorial/java/IandI/super.html
§  private, protected, public!
Abgeleitete (speziellere) Klasse §  http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
11. April 2013
Informatik II – Gruppe 7 – Übung 6
5
Java Beispiel"
Java – Polymorphie
§  Statischer Typ vs. Dynamischer Typ
§  Vererbung è SubClass hat alle Felder und Methoden von SuperClass (kann aber
noch zusätzliche haben)
§  Eine abgeleitete Klasse darf sich hinter einer Basisklasse “verstecken”, aber nicht
umgekehrt!
§  Beispiel:
§  Ein Potentiometer ist ein variabler Widerstand, somit verhält sich jeder Poti wie ein
Widerstand
§  Aber: Ein Widerstand kann sich nicht wie ein Poti verhalten!
§  Vorsicht bei Type Casts!
§  instanceof testet auf dynamischen Typ
11. April 2013
Informatik II – Gruppe 7 – Übung 6
6
Java – Abstrakte Klassen
Java Beispiel"
§  Abstrakte Klassen
§  Manchmal ist es sinnvoll, eine Methode zu definieren, aber nicht zu implementieren.
§  Warum? Polymorphie! Man kann “der Welt” über die abstrakte Methodendefinition
eine Funktionalität zur Verfügung stellen, dessen Implementierung unter den
abgeleiteten Klassen variiert.
§  Warum nutzt man nicht einfach “normale” Vererbung und überschreibt die Methoden
der Basisklasse? Weil es dann schwieriger wird, nachzuvollziehen, welche
Implementierung gerade “aktiv” ist.
§  Wichtige Merkmale
§  Schlüsselwort abstract
§  Man kann sowohl Methoden implementieren, als auch nur deklarieren
§  Man kann keine Objekte einer abstrakten Klasse instanziieren (Polymorphie!)
11. April 2013
Informatik II – Gruppe 7 – Übung 6
7
Java Beispiel"
Java – Interfaces
§  Vom Prinzip her ähnlich zu abstrakten Klassen, aber: Nur Methoden deklarieren, nicht
implementieren
§  Vorteil: Eine Klasse kann mehrere Interfaces implementieren, aber nur von einer
Klassen erben
§  Wann nutzt man Interfaces?
§  Wenn man als Entwickler eine Schnittstelle anbieten will (wie das Wort schon sagt)
§  Beispiel: Ich implementiere ein Netzwerk Simulationsprogramm, was mir Strom und
Spannung in einer Schaltung simuliert. Ich definiere in einem Interface, dass ich von
allen Komponenten die Impedanz für eine gegebene Frequenz benötige. Wie die
Impedanz berechnet wird, darum muss sich jeder kümmern, der seine Bauteile
implementiert.
§  Wichtig
§  Gute Dokumentation! Da keine Implementierung vorhanden ist, muss der JavaDoc
Kommentar aussagekräftig sein, damit klar ist, was implementiert werden muss!
§  Schlüsselwörter: interface, implements!
11. April 2013
Informatik II – Gruppe 7 – Übung 6
8
Fabrikmethode
§  Szenario:
§  Ein Interface IStack spezifiziert die Funktionsweise (push, pop, etc.) eines Stacks.
§  Programmierer A implementiert dieses Interface auf unterschiedliche Weise, zuerst
mit ArrayStack, später mit ListStack.
§  Programmierer B braucht für sein Programm einen Stack. Es wird derzeit nur
ArrayStack angeboten. Jetzt ersetzt Programmierer A ArrayStack durch
ListStack. Programmierer B muss nun alle Zeilen im Code von new
ArrayStack() auf new ListStack() ändern.
§  Lösung: Fabrikmethoden! Programmierer A stellt eine Factory zur Verfügung.
Programmierer B ruft Factory.createStack() auf, und bekommt ein Objekt vom
statischen Typ IStack. Der tatsächliche (dynamische) Typ des Objekts kann
ArrayStack oder ListStack sein.
11. April 2013
Informatik II – Gruppe 7 – Übung 6
9
BRIEFING
Übung 6
11. April 2013
Informatik II – Gruppe 7 – Übung 6
10
U6A1 – Klassen, Schnittstellen, Casting
§  U6A1a
§  UML Klassendiagramm (vereinfacht, ohne Felder und Methoden)
§  U6A1c/d
§  Für die cleveren: Denkt daran, in der Klausur gibt’s nur Stift und Papier!
§  Kommentiert die Zeilen aus, die zu Fehlern führen
11. April 2013
Informatik II – Gruppe 7 – Übung 6
11
U6A2 – Fabrikmethode
§  U6A2c – JUnit Tests
§  Assert.assertTrue(boolean condition)
§  Assert.assertFalse(boolean condition)!
§  http://junit.sourceforge.net/javadoc/
11. April 2013
Informatik II – Gruppe 7 – Übung 6
12
U6A3 – Polymorphie
§  U6A3a
§  Ähnliche Implementierung wie U5A1+2
§  U6A3c
§  Ähnliche Implementierung wie U5A3
§  Tipp: Nutzt die Hilfe von Eclipse!
11. April 2013
Eclipse Beispiel"
Informatik II – Gruppe 7 – Übung 6
13
U6A4 – Stack (schon wieder)
§  Freiwillig
§  Bei Fragen, an mich wenden
11. April 2013
Informatik II – Gruppe 7 – Übung 6
14
TIPPS UND TRICKS
11. April 2013
Informatik II – Gruppe 7 – Übung 6
15
…viel Spass!
11. April 2013
Informatik II – Gruppe 7 – Übung 6
16
Herunterladen