Teil 2 -

Werbung
Teil 2
3. Vorlesung
Modul: Programmierung B-PRG
Grundlagen der Programmierung II
Professur für Datenbanken und Informationssysteme
Dr. Karsten Tolle
[email protected]
1
Wrapper-Klassen
Alle primitive Datentypen haben eine
korrespondierende Klasse.
Z.B. kapselt die Klasse Integer einen int Wert:
int a = 5;
Integer intOb = new Integer(a);
siehe API: java.lang.Integer
2
Grundlagen der Programmierung II
DBIS - SS2011
Vergleich
int a=1, b=1;
String x=“abc“, y=“abc“;
if(a==b) …
if(x==y) …
3
Sollte false sein, ist
aber nicht immer sicher!
if(x.equals(y)) …
// besser!
Grundlagen der Programmierung II
DBIS - SS2011
Bestimmte Schleifen (for)
for (double x=0; x !=10; x=x+0.01) {
….
}
4
Grundlagen der Programmierung II
DBIS - SS2011
Vererbung Syntax
Syntax:
ZugriffsSpezifikator class NameDerKlasse
extends Oberklasse
{
// erbt automatisch Attribute und
// Methoden der Oberklasse
}
5
Grundlagen der Programmierung II
DBIS - SS2011
Überschreiben von Methoden
Wird in einer Unterklasse eine Methode mit gleicher Signatur wie in
einer Oberklasse definiert, so wird dies Überschreiben genannt.
Oberklasse
methodeX()
Unterklasse1
...
methodeX()
6
Grundlagen der Programmierung II
DBIS - SS2011
Überschreiben von Methoden – Bsp.
Fahrzeug
kmh: int
sitzplaetze: int
fahren()
plaetze ()
Omnibus
stehplaetze: int
plaetze ()
...
• Die Unterklasse Omnibus erbt alle Attribute und Methoden der
Oberklasse Fahrzeug.
• Zusätzlich erhält die Unterklasse Omnibus das Attribut
stehplaetze.
• Die Methode plaetze () der Oberklasse Fahrzeug wird
in der Unterklasse Omnibus durch eine „neue Version“
überschrieben.
7
Grundlagen der Programmierung II
DBIS - SS2011
this und super
super: Ermöglicht den Zugriff auf die Methoden der Oberklasse.
this: “Zeigt” auf das aktuelle Objekt.
Beispiel:
public class Omnibus extends Fahrzeug {
int stehplaetze;
public int plaetze() {
int plaetze = super.plaetze();
//Aufruf der Methode in Fahrzeug
return plaetze + this.stehplaetze;
}
}
8
Grundlagen der Programmierung II
DBIS - SS2011
Polymorphy – in Java
Polymorphy in Java heißt:
Wird für ein Objekt eine Methode aufgerufen,
wird in Abhängigkeit des Kontextes die
„passende“ Methode ausgeführt.
z.B.: meinFahrzeug.plaetze();
9
Grundlagen der Programmierung II
DBIS - SS2011
Polymorphie in der Natur
Das Pantherchamäleon
Das Chamäleon ändert seine Farbe in Abhängigkeit seiner Stimmung.
Ärger
10
Grundlagen der Programmierung II
DBIS - SS2011
Polymorphie und „Late Binding“
Bei final-Methoden
kann der Compiler
„Early Binding“ verwenden!
GeoObjekt
berechneFlaeche()
Kreis
Rechteck
radius
berechneFlaeche()
laenge
breite
berechneFlaeche()
• Klasse von geometrischen Formen GeoObjekt
• Unterklassen Rechteck und Kreis, jeweils mit
einer Methode zur Flächenberechnung berechneFlaeche()
• unterschiedliche Berechungsvorschriften
• aber gleich benannte Methoden
11
Grundlagen der Programmierung II
DBIS - SS2011
Innere Klassen
class Haus {
String s = "Haus";
public static void main(String[] args) {
Haus h1 = new Haus();
Zimmer z1 = h1.new Zimmer();
Zimmer z2 = new Haus().new Zimmer(); // in 1er Zeile
}
class Zimmer {
String s = "Zimmer";
}
}
12
Grundlagen der Programmierung II
DBIS - SS2011
instanceof
Mit instanceof kann die Klassenzugehörigkeit
geprüft werden.
...
Object o = xyz.get();
if (o instanceof Student)
int i =
((Student)o).getAge();
...
Beachte: Ein Objekt ist immer auch Element seiner
Oberklassen.
13
Grundlagen der Programmierung II
DBIS - SS2011
Übungs-Aufgabe
class A{
public void foo(){ System.out.println("A"); }
}
class B extends A {
public void foo(){ System.out.println("B");}
public static void main(String[] args){
A aobject = new B();
aobject.foo();
}
AUSGABE: B
}
14
Grundlagen der Programmierung II
DBIS - SS2011
Übungs-Aufgabe
class A{
public A(){
super();
System.out.println("A erzeugt");}
}
public class B extends A{
public B(){
System.out.println("B erzeugt");}
}
AUSGABE:
A erzeugt
B erzeugt
super() in class
A redundant
public class Test{
public static void main(String[] args){
A aobject = new B();}
}
15
Grundlagen der Programmierung II
DBIS - SS2011
Anzahl der Personen in
Modernisierungs-Projekten
Persons involved (on average during the duration time)
6-10 Persons
19%
4-5 Persons
20%
11-50 Persons
24%
above 50 Persons
12%
3 Persons
12%
2 Persons
11%
1 Person
2%
*Quelle: MOMOCS Consortium - Modernization Project Evaluation – http://www.viewzone.org/momocs/evaluation.pdf
16
Grundlagen der Programmierung II
DBIS - SS2011
Abstract
17
Grundlagen der Programmierung II
DBIS - SS2011
Abstrakte Klassen
Eine Exemplarmethode heißt abstract, wenn
sie keinen Rumpfinhalt hat, d.h. wenn nur Ihr Kopf
(Signatur), nicht aber eine Implementation
angegeben wird.
Der Konstruktor einer abstrakten Klasse kann
nicht aufgerufen werden, d.h. es kann kein
Exemplar erzeugt werden.
Ein Klasse, die mindestens eine abstrakte
Methode erbt und diese nicht implementiert,
ist zwangsläufig abstrakt.
18
Grundlagen der Programmierung II
DBIS - SS2011
Beispiel „Abstract Class“
public abstract class Person {
String name;
public Person(String name) {
this.name = name;
}
public abstract String getName();
protected void setName(String name) {
this.name = name;
}
}
19
Grundlagen der Programmierung II
DBIS - SS2011
Vererbung
Die Methoden (Prozeduren/Funktionen) der
Elternklasse können beibehalten oder
überschrieben werden, müssen aber denselben
Rückgabetyp haben.
In Java darf eine Klasse nur eine direkte
Elternklasse haben
Einfachvererbung.
20
Grundlagen der Programmierung II
DBIS - SS2011
Mehrfachvererbung (Multiple Inheritance)
In manchen objektorientierten Programmiersprachen
(C++, Smalltalk usw.) kann eine Klasse mehrere direkte
Oberklassen haben (Mehrfachvererbung)
gute Modellierung mancher realen Gegebenheiten:
21
Grundlagen der Programmierung II
DBIS - SS2011
Schnittstellen (Interfaces)
Interfaces enthalten nur die "Signaturen" von
Methoden. Statt der Definition des MethodenInhalts zwischen { und } enthalten sie nur ein
Semikolon:
interface InterfaceName {
void methode1(parameterListe) ;
}
Interfaces enthalten keine Konstruktoren!
22
Grundlagen der Programmierung II
DBIS - SS2011
Schnittstellen (Interfaces)
Wofür:
• Definition der Interaktion zwischen Komponenten
• Trennung von Spezifikation und Realisierung
• Um wenigstens eine eingeschränkte
Mehrfachvererbung darstellen zu können.
23
Grundlagen der Programmierung II
DBIS - SS2011
Schnittstellen (Interfaces)
Die Klasse, die ein Interface implementiert, muss alle
darin skizzierten Methoden enthalten, mit der
richtigen Signatur (Typ, Name und Parameterliste):
class ClassName implements InterfaceName {
...
void methode1 (parameterListe) {
... // Statements;
}
}
… die Klasse kann weitere Methoden, die nicht im Interface enthalten sind
besitzen!
24
Grundlagen der Programmierung II
DBIS - SS2011
Eine Klasse kann mehrere Schnittstellen
implementieren!
class ClassName implements Interface1, Interface2 {
...
Kombination mit Vererbung möglich:
class ClassName implements Interface1, Interface2
extends Class3 {
...
25
Grundlagen der Programmierung II
DBIS - SS2011
Vergleich Interface – Abstrakte Klasse
Interface == keine Implementierung, alles abstrakt
Abstrakte Klasse == kann Implementierung enthalten
Abstrakt Klassen, die keine Implementierung
enthalten sollten als Interface deklariert werden.
… beide können nicht instanziiert werden!
26
Grundlagen der Programmierung II
DBIS - SS2011
Datenstrukturen
27
Grundlagen der Programmierung II
DBIS - SS2011
Felder (Arrays)
Felder werden benötigt, um temporäre Listen von primitiven Typen
oder Objekten zu verwalten.
z.B.: Eine Liste der Mitarbeiter…
Von jedem Typ lassen sich Felder definieren.
Deklaration:
int[] i;
// ein Integer-Feld
Mitarbeiter[] m; //Mitarbeiterfeld
Instanzierung:
i = new int[10];
m = new Mitarbeiter[100];
28
Grundlagen der Programmierung II
DBIS - SS2011
Arrays
Zuweisung
i[0] = 100;
i[1] = 258;
...
i[9] = 300;
int zahl = i[9];
//zahl = 300
int zahl2 = i[10]; //
exception!
Numerierung beginnt bei 0!
int[] myArray = {1,2}; // alles zusammen
29
Grundlagen der Programmierung II
DBIS - SS2011
Arrays
• Es gibt vorgefertigte Methoden, um Felder zu
kopieren, zu sortieren, auszugeben etc.:
Klasse java.util.Arrays
• Mehrdimensionale Felder:
int[][] i = new int[5][10]
/* Matrix */
30
Grundlagen der Programmierung II
DBIS - SS2011
Arrays
• Hinweis: auch unregelmäßige Felder sind möglich
(z.B. Pyramide)
int[][] intFeld = new int[5][];
for (int i=0; i<5; i++)
{
intFeld[i]= new int[i+1];
}
31
Grundlagen der Programmierung II
DBIS - SS2011
Arrays
intFeld
0
0
1
0
1
2
0
1
2
3
0
1
2
3
4
0
1
2
3
4
Ansprechbar mit intFeld[3][2]
32
Grundlagen der Programmierung II
DBIS - SS2011
Java Collections Framework
• Im Package java.util enthalten.
• Übersicht:
java.sun.com/j2se/1.5.0/docs/guide/collections/index.html
Collection
List
Map
Set
SortedMap
SortedSet
Set: Menge ohne Duplikate
List: Jedes Element hat einen Index
Map: Jedes Element hat einen Schlüssel
• Weitere Datenstrukturen:
http://commons.apache.org/collections/apidocs/index.html
33
Grundlagen der Programmierung II
DBIS - SS2011
Übersicht Collections Framework
Quelle: TIJ3 –
Bruce Eckel
34
Grundlagen der Programmierung II
DBIS - SS2011
Java Collections Framework
• Definiert „Collections“ von Objekten, die über
einheitliche Schnittstellen manipuliert werden können.
• Implementiert Datenstrukturen und Algorithmen.
Beispiel: Durchgehen einer ArrayList
List list = new ArrayList();
list.add("Hello");
list.add("World");
for (Iterator i = list.iterator(); i.hasNext();){
System.out.println(i.next());
}
35
Grundlagen der Programmierung II
DBIS - SS2011
Java 5 - Generics
Beispiel: Map (Wörterbuch)
Zuordnung von Elementen zu Schlüsseln.
Jetzt ist aber der Typ vorgegeben!
Map<Integer,String> map =
new HashMap<Integer,String>();
map.put(2, "Hello");
… hier muss man die Wrapper-Klassen
für primitive Datentypen verwenden!
36
Grundlagen der Programmierung II
DBIS - SS2011
Erst ab Java 5 !
for (<Element>:<Kollektion>)
Anweisung;
---------------------List <String>list = new ArrayList<String>();
list.add("Hello");
list.add("World");
for (String s : list){
System.out.println(s);
}
List list = new ArrayList();
list.add("Hello");
list.add("World");
for (Iterator i = list.iterator(); i.hasNext();){
System.out.println(i.next());
}
37
Grundlagen der Programmierung II
DBIS - SS2011
Herunterladen