6. Interfaces Grundlagen der Programmierung 1 (Java)

Ähnliche Dokumente
1. Programmieren gegen Schnittstellen Advanced Programming Techniques

2. Programmieren gegen Schnittstellen Advanced Programming Techniques

3. Dokumentieren und Testen Advanced Programming Techniques Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

JAVA KURS COLLECTION

4. Algorithmen und Datenstrukturen I Grundlagen der Programmierung 1 (Java)

19 Collections Framework

19 Collections Framework

12 Collections Framework. Interfaces Maps and Collections. Collection Interface. Überblick. Collection = Containterklasse, die andere Objekte enthält.

Teil V. Generics und Kollektionen in Java

Einstieg in die Informatik mit Java

Java Schulung. Objektorientierte Programmierung in Java Teil V: Die Java Collection Klassen. Prof. Dr. Nikolaus Wulff

Kapitel 12: Java Collection Teil II

Kapitel 12: Java Collection Teil II

Grundkonzepte java.util.list

Programmiertechnik II

Propädeutikum Programmierung in der Bioinformatik

Programmiertechnik II

OCP Java SE 8. Collections

Programmierkurs Java

Info B VL 14: Java Collections/Reflections

Objektorientiertes Programmieren mit Java

Java Einführung Collections

Collections. Arthur Zaczek. Nov 2015

Wo sind wir? Rudolf Berrendorf FH Bonn-Rhein-Sieg Programmiersprache Java 338

Faulheit professionell: Fertige Datenbehälter. Das Java-Collections-Framework Typsicherheit Generische Klassen

Objektorientierte Programmierung. Kapitel 21: Einführung in die Collection Klassen

java.util. Sebastian Draack Department Informations- und Elektrotechnik Department Informations- und Elektrotechnik JAVA Collection-API

Programmierkurs Java

Lineare Datenstrukturen: Felder, Vektoren, Listen Modelle: math. Folge (a i ) i=1.. mit Basistyp T oder: [T]

Selbststudium OOP7 & ALG2 Auftrag

ADT: Java Collections und ArrayList

II.4.4 Exceptions - 1 -

Programmiertechnik II

8. Generics Grundlagen der Programmierung 1 (Java)

Programmieren 2 16 Java Collections und Generizität

Abstrakte Datentypen und Java

11. Komponenten Grundlagen der Programmierung 1 (Java)

Kapitel 5: Iterierbare Container

Kapitel 6: Java Collection Teil I

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1

Kapitel 14. Das Java Collection Interface. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Objektorientierte Implementierung

Softwaretechnik WS 16/17. Übungsblatt 01

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit

Aufgabe11. Methode test1. import java.util.hashmap; import java.util.arraylist; public class Aufgabe11 {

Rechtsbelehrung. Java und OOP Das Buch Christian Silberbauer 144

Mengen und Multimengen

Collections. Arthur Zaczek

Teilprüfung Software- und Internettechnologie Programmierkurs 1 Wintersemester 2004/2005

Kapitel 7: Java Collection Teil I

Java Generics & Collections

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

Programmieren in Java

Software Entwicklung 1

Collections und Iteratoren ListIterator Sets. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 22

Programmieren II. Hierarchie von Collections. Vorlesung 3. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2010

Teil II) Objektorientierte Implementierung 10) Verfeinern von UML-Assoziationen mit dem Java-2 Collection Framework

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1

4.4.9 Das Java Collection Framework

17. Java Collections. Daten Organisieren. Generische Liste in Java: java.util.list. Typ Parameter (,,Parametrischer Polymorphisums )

Nützliche Utility-Klassen des JDK

Kapitel 4: Bäume i. 1. Einleitung. 2. Ein Datenmodell für Listen. 3. Doppelt-verkettete Listen. 4. Bäume. 5. Das Collections-Framework in Java

Datenstrukturen. Ziele

1. Welches Interface ist nicht von Collection abgeleitet? A. B. C. D. List Set Map SortedSet. 2. Welche Aussagen sind richtig?

Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um. Dynamische Anpassung der Größe

Einführung in die Programmierung mit Java

Software Entwicklung 1

Java Collections Framework (JCF)

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen

Allgemeine Informatik II

II.4.6 Collections - 1 -

Programmieren in Java

Mengen und Multimengen

ALP II Dynamische Datenmengen

JUnit. Software-Tests

Hashmap: Video Erklärung

Programmieren in Java

Listen. Prof. Dr. Christian Böhm. in Zusammenarbeit mit Gefei Zhang. WS 07/08

Sammlungen Listen Mengen Abbildungen Algorithmen Wrapper

Schein-/Bachelorklausur Teil 2 am Zulassung: Mindestens 14 Punkte in Teilklausur 1 und 50% der Übungspunkte aus dem 2. Übungsblock.

Grundlagen der Informatik Generische Klassen

2.2 Spezifikation abstrakter Datentypen. 2.3 Implementierung und Anwendung von ADT. 2.4 Datenabstraktion und Objektorientierung

Programmierzertifikat Objekt-Orientierte Programmierung mit Java

Einführung in die Programmierung

Software Entwicklung 1

Programmieren in Java

Programmieren in Java

5. Dokumentieren und Testen Advanced Programming Techniques. Wintersemester 2009 / 2010 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

7. Pakete Grundlagen der Programmierung 1 (Java)

Probeklausur Software-Entwicklung 1

Programmieren in Java

Fachhochschule Wedel 31. Januar 2004 Prof. Dr. Uwe Schmidt

Algorithmen und Datenstrukturen CS1017

Transkript:

6. Interfaces Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 22. November 2005

Einordnung im Kontext der Vorlesung 1. Einführung 2. Einfache Programme 3. Kontrollstrukturen 4. Objekt-Orientierung I 5. Algorithmen und Datenstrukturen I 6. Interfaces 7. Rekursion 8. Pakete 10. Software-Qualität 11. Algorithmen und Datenstrukturen II 12. Objektorientierung II 13. Komponenten 14. Design 15. Die Java Klassenbibliothek I 16. Die Java Klassenbibliothek II 17. Software-Kategorien 9. Fehler und Ausnahmen 22.11.2005, Seite 2

Agenda Agenda Interfaces Sortieren JUnit 22.11.2005, Seite 3

Interfaces Das Denken in Schnittstellen (Interfaces) ist eines der wichtigsten Konzepte der Programmierung Interface: beschreibt die Außensicht, das heißt die Sicht des Nutzers ist einfach ist vielseitig verwendbar Klasse: enthält die Innensicht, das heißt die Sicht des Programmierers ist komplex ist speziell cd Collections «interface» List + add() : void + get() : void + contains() : void + remove() : void «realize» ArrayList «realize» LinkedList 22.11.2005, Seite 4

Interfaces Deklaration eines Interface Interfaces definieren das Verhalten von Objekten. Interfaces enthalten: Instanzmethoden Konstanten Interfaces haben keine Konstruktoren. Interfaces enthalten keine Implementierung. interface ICustomer { public String getname(); public void setname(string name); } 22.11.2005, Seite 5

Interfaces Verwendung eines Interface Man sagt: Eine Klasse implementiert ein Interface, wenn sie jede einzelne Methode des Interfaces bereitstellt. Eine Klasse kann beliebig viele Interfaces implementieren. Ein Interface kann von beliebig vielen Klassen implementiert werden. Eine Referenz auf ein Interface kann überall dort im Code eingesetzt werden, wo auch eine Referenz auf eine Klasse erlaubt ist. class MyCustomerImpl implements ICustomer { public MyCustomerImpl(String name) {...}; public String getname() {...}; public void setname(string name) {...}; } 22.11.2005, Seite 6

Interfaces Beispiel: Zugriff auf Kundendaten (mit Interface) ICustomer mycustomer = new MyCustomerImpl( Willi );... Map mycustomers = new HashMap(); mycustomers.put( Kunde1234, mycustomer); mycustomer = (ICustomer) mycustomer.get( Kunde1234 ); class SomeOtherClass { } public boolean processcustomer(icustomer cust) {... }; 22.11.2005, Seite 7

Interfaces Übersicht über Collections, Maps und deren Interfaces Collection Map List Set SortedMap HashMap Hashtable ArrayList Vector HashSet SortedSet TreeMap LinkedList Stack TreeSet Interface Class 22.11.2005, Seite 8

Interfaces Interface Collection Allgemeiner Container von Objekten. Objekte dürfen mehrfach vorkommen. Methoden, die ein Element betreffen: boolean add(object o) Ensures that this collection contains the specified element (optional operation). boolean contains(object o) Returns true if this collection contains the specified element. boolean remove(object o) Removes a single instance of the specified element from this collection, if it is present (optional operation). 22.11.2005, Seite 9

Interfaces Interface Collection Methoden, die den ganzen Container betreffen: void clear() Removes all of the elements from this collection (optional operation). boolean isempty() Returns true if this collection contains no elements. Iterator iterator() Returns an iterator over the elements in this collection int size() Returns the number of elements in this collection. Object[] toarray() Returns an array containing all of the elements in this collection. 22.11.2005, Seite 10

Interfaces Iteratoren Mache etwas mit allen Elementen eines Behälters: Iteratoren für Schleifen. Sie zeigen auf ein Element des Behälters, verwalten Schleifen, merken sich die aktuelle Position. Sie werden erzeugt über Methoden des Behälters: iterator(). List list = new ArrayList(); list.add(new Customer( Hans Otto )); list.add(new Customer( Willi Wühlmaus )); Iterator iter = list.iterator(); while ( iter.hasnext() ) { Customer customer = (Customer) iter.next(); System.out.println( customer.getname() ); } 22.11.2005, Seite 11

Interfaces Interface Iterator Wie die Collections so werden Iteratoren normalerweise über ihre Interfaces angesprochen. Jede Collection hat ihre eigene Iterator-Implementierung. Iterator: lesen vorwärts; ListIterator: beide Richtungen public interface Iterator { boolean hasnext(); Object next(); // Dereferenzierung: akt. Element void remove(); // entferne aktuelles Element } 22.11.2005, Seite 12

Interfaces Vereinfachter Zugriff auf Collections (ab JDK 1.5) int[] xs = {1,3,7,11} for (int x : xs) System.out.println(x); Zugriff auf Array List as = new ArrayList(); //as befüllen... for (Object a : as) System.out.println(a); Zugriff auf beliebige Klasse, die Iterable implementiert. So z.b. alle Collections. Map dict = new HashMap(); dict.put( Eins, "Hallo"); for ( Object o : dict.values() ){ System.out.println(o); } //Hallo Zugriff auf Werte einer Map Was steckt hinter dem erweiterten for? Der Compiler macht aus der erweiterten for-schleife die alte Variante mit Schleifenzähler oder Iterator. Darum sind auch keine Performance Probleme zu befürchten. Ein Zugriff auf den Schleifenzähler / Iterator ist nicht möglich. 22.11.2005, Seite 13

Interfaces Interface List extends Collection Container, der die Elemente in einer Reihenfolge vorhält. Methoden, die ein Element betreffen: void add(int index, Object element) Inserts the specified element at the specified position in this list (optional operation). Object remove(int index) Removes the element at the specified position in this list (optional operation). Object get(int index) Returns the element at the specified position in this list. Object set(int index, Object element) Replaces the element at the specified position in this list with the specified element (optional operation). 22.11.2005, Seite 14

Interfaces Interface Map Container, der Schlüssel-Wert (key-value) Paare speichert. Jeder Schlüssel darf höchstens einmal auftreten. Methoden, die einzelne Elemente betreffen: Object get(object key) Returns the value to which this map maps the specified key. Object put(object key, Object value) Associates the specified value with the specified key in this map (optional operation). Object remove(object key) Removes the mapping for this key from this map if it is present (optional operation). 22.11.2005, Seite 15

Interfaces Interface Map Methoden, zur Abfrage von Schlüsseln und Werten: boolean containskey(object key) Returns true if this map contains a mapping for the specified key. boolean containsvalue(object value) Returns true if this map maps one or more keys to the specified value. 22.11.2005, Seite 16

Interfaces Interface Map Methoden, die eine Sicht auf die Abbildung liefern: Set entryset() Returns a set view of the mappings contained in this map. Set keyset() Returns a set view of the keys contained in this map. Collection values() Returns a collection view of the values contained in this map. 22.11.2005, Seite 17

Interfaces Funktionen auf Collections z.b. makehistogram public class Util { public static Map makehistogram(collection collection) { Map result = new HashMap(); Iterator i = collection.iterator(); while (i.hasnext()) { Object x = i.next(); Integer cnt = (Integer) result.get(x); if (null == cnt) result.put(x, new Integer(1)); else result.put(x, new Integer(cnt.intValue() + 1)); } return result; }... } 22.11.2005, Seite 18

Agenda Agenda Interfaces Sortieren JUnit 22.11.2005, Seite 19

Sortieren Sortieren von Objekten Collection mit geordneten Elementen (zum Beispiel List): l = {e 1, e n } l ist sortiert, wenn e i e i+1 (1 i n-1) Aber was heißt eigentlich? Ordnung auf Elementen 22.11.2005, Seite 20

Sortieren Interface Comparable 22.11.2005, Seite 21

Sortieren Sort 22.11.2005, Seite 22

Sortieren Jede Menge *ables Adjustable Appendable Callable Cloneable Comparable Destroyable Externalizable Flushable Formatable Identifyable Iterable Joinable Manageable Printable REadable Referncable Refrehable Runnable Scrollable Serializable Streamable Throwable Timeable Transferable Writeable 22.11.2005, Seite 23

Agenda Agenda Interfaces Sortieren JUnit 22.11.2005, Seite 24

JUnit Überblick JUnit ist ein regressives Testframework Geschrieben von Erich Gamma und Kent Beck Entwicklung von Tests für beliebige Software-Einheiten OpenSource XProgramming www.junit.org 22.11.2005, Seite 25

JUnit Was unterstützt JUnit? Einfache Automatisierung der Tests Ausgabe der Ergebnisse erfolgt graphisch oder textuell Soll/Ist-Vergleich mittels assert()- und fail()-methoden Dokumentation der Testergebnisse 22.11.2005, Seite 26

JUnit Wie funktioniert JUnit? Anlegen einer Subklasse von TestCase (junit.framework.testcase) Definition eines Konstruktors mit Übergabeparameter Testname Öffentliche Methoden die mit test beginnen sind Testfälle Vor jedem Test wird - falls vorhanden - die öffentliche Methode setup() aufgerufen Nach jedem Test wird - falls vorhanden - die öffentliche Methode teardown() aufgerufen Die Testfälle einer Testklasse werden in der Methode suite() zusammengefasst Testklassen werden zu Testpaketen zusammengefasst 22.11.2005, Seite 27

JUnit Beispiel für einen TestCase import junit.framework.testcase; public class StrUtilJUnitTest extends TestCase { String txt; public StrUtilJUnitTest(String testcasemethodname) { super(testcasemethodname); } public void setup() { txt = "otto hugo rudie"; } public void teststr2strarray() { String[] arr1 = StrUtil.str2StrArr(txt); assertequals("otto", arr1[0]); assertequals("hugo", arr1[1]); assertequals("rudi", arr1[2]); } } 22.11.2005, Seite 28

JUnit Auswahl bereitgestellter Assert und Fail Metoden public static void assertequals(boolean expected, boolean actual) public static void assertequals(double expected, double actual, double delta) public static void assertnull(object object) public static void assertnotnull(object object) public static void assertsame(java.lang.object expected, lang.object actual) public static void asserttrue(boolean condition) public static void fail() public static void fail(string message) Alle Methoden werden auch mit einem Message-Parameter angeboten 22.11.2005, Seite 29

JUnit Starten unter Eclipse 22.11.2005, Seite 30

JUnit Ausgabe im TestRunner 22.11.2005, Seite 31