Java: Dynamische Datentypen

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
Objektorientierte Programmierung
Imperative Programmierung
der Universität Oldenburg
der Universität Oldenburg
Klassen - Verkettete Liste -
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Kapselung , toString , equals , Java API
3 Sprachelemente und Anweisungen JavaHS Merseburg (FH) WS 06/07 Strings (Zeichenketten)
Sortieren mit Binären Bäumen
Java: Objektorientierte Programmierung
Sortierverfahren Richard Göbel.
Listen Richard Göbel.
Sortierverfahren Richard Göbel.
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Grundlagen der Sprache
Motivation Richard Göbel.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
Konstruktoren.
Polymorphie (Vielgestaltigkeit)
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 9. Vorlesung WS 2002/2003.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Programmieren mit JAVA
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Listen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
DVG Klassen und Objekte
Einführung in die Programmierung Datensammlung
Informatikunterricht mit Java
Kollektionstypen (1) Es sind polymorphe Typkonstruktoren, jeweils als Sorten- und als Klassenkonstruktor (t,v beliebige Typen): –set, Set :Ungeordnete.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sitzung 3: Klassen, Objekte, Arrays und Kontrollstrukturen
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Grundlagen der Programmierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Informatik 1 Letzte Übung.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Dynamische Datentypen
Objektorientiertes Konstruieren
Variablenkonzept Klassisch, in Java Basistyp
Die Klasse String und ihre Methoden
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
EPROG Tutorium #3 Philipp Effenberger
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Einführung in die Programmierung mit Java
Java-Kurs Übung Besprechung der Hausaufgabe
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 10. Vorlesung WS 2002/2003.
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
 Präsentation transkript:

Java: Dynamische Datentypen Richard Göbel Seite 1

Dynamische Datentypen - Inhalt Referenzen Zeichenketten Mengen und Listen Maps Seite 2

Student s = new Student(); Referenzen - Konzept Alle Variablen und Argumente für intrinsische Datentypen enthalten direkt einen Wert. Alle Variablen und Argumente für Objekte enthalten eine Referenz. Operationen auf Objekten: Zuweisungen erzeugen nur eine Kopie der Referenz und keine Kopie des Objekts. Vergleichsoperationen vergleichen in der Regel nur die Referenzen und nicht die Objekte. int x = 17; x: 17 Student s = new Student(); x: Student name: “Meier“ alter: 19 Seite 3

Referenzen - Beispiel liefert den Wert 1 . . . int v1; C v2 = new C(); public class C { int v; } public class T static void RefFunc (C c) c.v = 2; static void ValFunc (int v) v = 2; . . . int v1; C v2 = new C(); v1 = 1; T.ValFunc(v1); System.out.println(v1); v2.v = 1; T.RefFunc(v2); System.out.println(v2.v); liefert den Wert 2 Seite 4

Referenzen - Eigenschaften dieses Konzepts Java stellt sicher, dass jede Referenz nur auf eine Instanz der zugehörigen Klasse verweist: Der Compiler überprüft das Programm auf falsche Zuweisungen und Aufrufe. Cast-Operatoren überprüfen während der Laufzeit den Typ der zugehörigen Objekte. Der benötigte Speicherplatz für alle referenzierten Objekte wird automatisch belegt und wieder freigegeben. Fehler des Programmierers bei der Speicherverwaltung sind damit ausgeschlossen! Seite 5

Zeichenketten - Basisoperationen Erzeugen von Zeichenketten: String s = “Test“; String t = new String(“Test2“); Vergleich von Zeichenketten: s.equals(t); Zugriff auf Zeichenketten einzelnes Zeichen: s.charAt(2) // ‘s‘ Teilzeichenkette: s.subString(1,3) // “es“ Weitere Operationen Zusammenhängen: s + t // “TestTest2“ Länge der Zeichenkette: s.length() // 4 Seite 6

Zeichenketten - Eigenschaften von Operationen Operationen auf Zeichenketten ändern die Ausgangswerte nicht. Bei einigen Operationen auf Zeichenketten werden Teile der Ausgangswerte oder sogar vollständige Ausgangswerte kopiert. In einigen Situationen kann die Laufzeit eines Java-Programms durch häufiges Benutzen von Operationen auf Zeichenketten und dem damit verbundenen Kopieraufwand erheblich verlängert werden. while ( . . . ) { c = str.read(); s = s + c; } Seite 7

Zeichenketten - Effiziente Datenstruktur StringBuffer char c; StringBuffer sb; String s; sb=new StringBuffer(1000); while ( . . . ) { . . . c = str.read(); sb = sb.append(c)l; } s = new String(sb); Erzeugen eines Stringbuffer mit initialer Größe. Anhängen von Zeichenketten an den aktuellen Wert mit der Methode append. Konvertieren des endgültigen Werts mit dem Konstruktur String in ein Objekt vom Typ String. Seite 8

Zeichenkette - Methode toString public class Person { String name; int alter; . . . public String toString() return “Person: “ + name + “, “ + alter; } Mit der Methode toString wird eine Zeichenkette für ein Objekt erzeugt. Die Funktion toString wird von verschiedenen anderen Funktionen in Java automatisch aufgerufen, z.B.: println für die Ausgabe von Objekten append für das ‚Anhängen‘ eines Objekts an eine Zeichenkette Für eigene Klassen sollte jeweils eine eigene Methode toString definiert werden. Seite 9

Übung 4.1 Seite 10

Mengen und Listen - Eigenschaften Eine Liste enthält eine praktisch beliebig große Anzahl von Objekten. Ein Objekt darf mehrfach in einer Liste enthalten sein. Jedes Objekt hat eine Position und kann mit Hilfe dieser Position gelesen oder geändert werden. Alternativen für eine Implementierung: schneller Zugriff auf eine Position? oder effiziente Verlängerung der Liste? Eine Menge enthält eine praktisch beliebig große Anzahl von Objekten. Ein Objekt darf nur einmal in einer Menge enthalten sein. Objekte haben keine Position. Alternativen für eine Implementierung: Vermeidung von Duplikaten Ein Array enthält eine feste Anzahl von Objekten! Seite 11

Mengen und Listen - Basisoperationen Objekt o einfügen: coll.add(o); Objekt o löschen: coll.remove(o); Alle Objekte löschen: coll.clear(); Objekt o enthalten? coll.contains(o); Anzahl der Objekte: coll.size(); Die Methoden remove und contains vergleichen die Objekte mit der Methode equals. Seite 12

Mengen und Listen - Spezielle Operationen für Listen Objekt o an Position i einfügen: list.add(i,o); Objekt an Position i löschen: list.remove(i); Objekt an Position i: list.get(i); Objekt an Position i durch o ersetzen: list.set(i,o); Teilliste von Position i bis j-1: list.sublist(i,j); Seite 13

Listen und Mengen - Alternative Implementierungen Liste auf Array-Basis: ArrayList l = new ArrayList(100); Verkettete Liste LinkedList l = new LinkedList(); Vektor: Vector v = new Vector(); Menge (Baumstruktur): TreeSet s = new TreeSet(); Menge (Hashfunktion): HashSet s = new HashSet(200); Seite 14

Listen und Mengen - Beispiel: Menge aller Vorlesungen Import-Anweisung für Package ‚io‘ import java.util.*; public class Vorlesung { public static HashSet alle = new HashSet(100); public String name; . . . public Vorlesung(String na) name = na; alle.add(this); } Referenz auf aktuelles Objekt Seite 15

Listen und Mengen - Beispiel: Funktion equals für Vorlesung public class Vorlesung { public String name; . . . public boolean equals (Object o) { if (o != null && o.getClass().equals(this.getClass())) { return o.name == this.name;} else { return false;}} } Seite 16

Listen und Mengen - Iteratoren Vorlesung v; Iterator it; it = Vorlesung.alle.iterator(); while (it.hasNext()) { v = (Vorlesung) it.next(); v.stunden = 4; } Mit einem Iterator lassen sich schrittweise alle Elemente einer Liste oder eine Menge bearbeiten. Die Methode iterator() liefert ein Objekt der Klasse Iterator für eine Liste oder Menge. Mit der Methode hasNext() wird überprüft, ob es noch weitere Elemente in dem Iterator gibt. Die Methode next() liefert das nächste Element eines Iterators. Seite 17

Maps - Konzept Schlüssel Wert Mit einer Map lassen sich Objekte nicht nur über Zahlen, sondern auch über beliebige Objekte indizieren. Es existieren zwei unterschiedliche Implementierungen von Maps: TreeMap HashMap Basisoperatoren: put(key,value), get(key) Vorlesung1 Dozent1 Vorlesung2 Dozent2 Vorlesungn Dozentn Seite 18

Übung 4.2 Seite 19