IT I: Heute. Interfaces Interfaces List, Set und Collection HashCode HashSet. Projekt Filialenbelieferung Fehler und Debugging Modularisierung

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

IT I: Heute. Klasse Object. equals, hashcode, tostring. HashSet IT I - VO 6 1

IT I: Heute. Klasse Object. equals, hashcode, tostring. HashSet IT I - VO 6 1

Heute. Organisatorisches Nachbetrachtung Zwischentest

Heute. Nachbetrachtung Wissensüberprüfung. Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

Vorkurs Informatik WiSe 15/16

Algorithmen und Datenstrukturen

Informatik II Übung 6

Weather forecast in Accra

Heute. Algorithmisches Denken. Interface Map. Projekt Scheduling IT I - VO 8 1

Objektorientierung III

12 Abstrakte Klassen, finale Klassen und Interfaces

Polymorphie. 15. Java Objektorientierung II

Java Tools JDK. IDEs. Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation

Programmierkurs Java

Polymorphie. 15. Java Objektorientierung II

4. Vererbung Die Klasse Object. Die Klasse Object

II.4.4 Exceptions - 1 -

Tagesprogramm

Softwaretechnik WS 16/17. Übungsblatt 01

Vererbung und Polymorphie

Propädeutikum Programmierung in der Bioinformatik

Objektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern

Die abstrakte Klasse Expression:

Accelerating Information Technology Innovation

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax

Teil 2-3. Vorlesung. Modul: Programmierung B-PRG Grundlagen der Programmierung II

Wer bin ich - und wenn ja wie viele?: Eine philosophische Reise. Click here if your download doesn"t start automatically

IT I: Heute. Nachbetrachtung Wissensüberprüfung. Einführung Vererbung. Roboter in becker.robots. Filialenbelieferung 4.11.

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

IT I: Heute. Nachbetrachtung Wissensüberprüfungen. Einführung Vererbung. Roboter in becker.robots. falls Zeit: Scheduling 8.11.

Mocking Libraries Shootout

Java I Vorlesung 6 Referenz-Datentypen

Interfaces und Vererbung

Info B VL 14: Java Collections/Reflections

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Übung 3: VHDL Darstellungen (Blockdiagramme)

DIBELS TM. German Translations of Administration Directions

Java Idioms. Basic und Advanced Java Coding Style. Prof. Dr. Nikolaus Wulff

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Java Grundlagen 2 - OOP

Englisch-Grundwortschatz

HTW IMI-B Informatik 1 Kara Worksheet 2 Seite: 1. Variables to store a true/false state: boolean movingright = true;

Magic Figures. We note that in the example magic square the numbers 1 9 are used. All three rows (columns) have equal sum, called the magic number.

Einstieg in die Informatik mit Java

Info B VL 11: Innere Klassen/Collections

Javakurs für Anfänger

1 Klassen anlegen und Objekte erzeugen

Im Fluss der Zeit: Gedanken beim Älterwerden (HERDER spektrum) (German Edition)

Einführung in die Programmierung

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

JAVA KURS COLLECTION

Nachtragstest in Programmkonstruktion 1. Phase. 1. Multiple-Choice-Aufgaben

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Grundlagen der Programmierung in C Klassen

1 Klassen anlegen und Objekte erzeugen

Number of Maximal Partial Clones

14 Abstrakte Klassen, finale Klassen, Interfaces

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50

Organisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

Programmierung Nachklausurtutorium

There are 10 weeks this summer vacation the weeks beginning: June 23, June 30, July 7, July 14, July 21, Jul 28, Aug 4, Aug 11, Aug 18, Aug 25

14 Abstrakte Klassen, finale Klassen, Interfaces

II.4.2 Abstrakte Klassen und Interfaces - 1 -

Mock Exam Behavioral Finance

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

19 Collections Framework

Programmierkurs Java

Funktion der Mindestreserve im Bezug auf die Schlüsselzinssätze der EZB (German Edition)

Javakurs für Anfänger

14. Java Objektorientierung. Klassen, Vererbung, Kapselung

Beispielprüfung CuP WS 2015/2016

6. Globalübung (zu Übungsblatt 8)

Level 1 German, 2014

19 Collections Framework

IT I: Heute. Nachbetrachtung Wissensüberprüfungen. Einführung Vererbung. Roboter in becker.robots IT I - VO 5 1

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

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

Introduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2016

Universität Karlsruhe (TH)

Programmiermethodik 3. Klausur Lösung

Objektorientierte Programmierung

Kapitel zu bearbeitende Aufgaben: 6.1 bis :

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer

Syntax. int a; public A() {...} public void F() {...} }

Objektorientierung (OO)

Organisatorisches. zwei Gruppen Gemeinsame Wissensüberprüfungen Do (HR) Gruppe 1: Do 12:00-13:00 (HS FöT) Gruppe 2: Do 13:00-14:00 (HS FöT)

Java Einführung Vererbung und Polymorphie. Kapitel 13

Tutoraufgabe 1 (Collections):

14. Java Objektorientierung

Transkript:

IT I: Heute Interfaces Interfaces List, Set und Collection HashCode HashSet Projekt Filialenbelieferung Fehler und Debugging Modularisierung 19.11.2015 IT I - VO 7 1

WÜ: Vererbung Attribute aus der Oberklasse werden in Unterklasse nicht nochmals angelegt! Zum Aufruf super(...); im Konstruktor der Unterklasse muss es in der Oberklasse passenden Konstruktor geben! 19.11.2015 IT I - VO 7 2

Abstrakte Methoden und Klassen Eine abstrakte Methode ist die Definition einer Methode ohne Implementierung: abstract String getdetails(); Eine Klasse mit einer abstrakten Methode muss selbst abstrakt sein: abstract class Disk { } Von einer abstrakten Klasse können keine Objekte erzeugt werden (da u.u. manche Methoden nicht implementiert sind). In einer nicht-abstrakten Unterklasse einer abstrakten Klasse muss es für alle abstrakten Methoden Implementierungen geben. 19.11.2015 IT I - VO 7 3

Java interfaces Interfaces sind eine besondere Form von abstrakten Klassen: Alle Methoden sind public und abstract. Es gibt keine Konstruktoren. Es gibt keine Attribute außer Konstantendefinitionen, die public, static und final sind. D.h., dass eine nicht-abstrakte Unterklasse eines Interfaces alle Methoden des Interfaces implementieren muss. Insofern ist ein Interface eine Spezifikation, die angibt, über welche Methoden eine Objekt dieses Typs verfügt. 19.11.2015 IT I - VO 7 4

Syntax von Java interfaces (1) interface Interfacename { } class Klassenname implements Interfacename { } 19.11.2015 IT I - VO 7 5

ArrayList implementiert Interface List 19.11.2015 IT I - VO 7 6

List Gegeben: List<Anlage> liste; kann alle Methoden aus dem Interface List verwenden: - get(i) - for each Schleife - size() - etc. 19.11.2015 IT I - VO 7 7

List Rückgabewert List<Anlage>: muss Objekt einer Klasse zurückgeben, das List implementiert, z.b. ArrayList List<Anlage> = new ArrayList<Anlage>(); oder ArrayList<Anlage> = new ArrayList<Anlage>(); 19.11.2015 IT I - VO 7 8

Interfaces Interfaces können ganz normal als Datentyp eingesetzt werden, s. Bspe. mit Interface List! Weiteres Beispiel: interface eininterface { public boolean istdoof(); } eininterface x =...; if(x.istdoof()){...} NB: Konkrete Objekte (z.b. rechte Seite der Zuweisung x=...;) sind immer von einer Klasse, die das Interface implementiert! 19.11.2015 IT I - VO 7 9

Mehrfachvererbung 19.11.2015 IT I - VO 7 10

Mehrfachvererbung Wenn eine Klasse von mehreren Oberklassen erbt, kann es zu Konflikten kommen, wenn dieselbe Methode in mehreren Oberklassen unterschiedlich implementiert ist. Welche Methode wird ausgeführt? In Java wird dieser Konflikt vermieden, indem es nur eine echte Oberklasse geben kann, alle anderen Oberklassen müssen Interfaces sein. Da es in Interfaces keine Implementierung gibt, kommt es zu keinen Konflikten. 19.11.2015 IT I - VO 7 11

Syntax von Java interfaces (2) interface Interfacename implements Interface1,, InterfaceK { } class Klassenname extends Oberklasse implements Interface1,, InterfaceK { } 19.11.2015 IT I - VO 7 12

Collections (1) Hold groups of objects. Increase their capacity as necessary. Keep the objects in (some) order. Details of how all this is done are hidden. We specify: the type of a collection: e.g. ArrayList the type of the objects it will contain: e.g. <String> Collections are defined in java.util. 19.11.2015 IT I - VO 7 13

Collections (2) Die Gemeinsamkeiten von Collections sind im Interface Collection definiert. Wichtige Sub-Interfaces von Collection sind List und Set. Konkrete (nicht-abstrakte) Unterklassen von List sind ArrayList und LinkedList, sowie HashSet und TreeSet von Set. Die wesentlichen Methoden für eine Liste sind im Interface List definiert, und daher für ArrayList und LinkedList gleich. 19.11.2015 IT I - VO 7 14

Sets Sets sind Collections: add() size() for each Schleife Achtung: Für Set gibt's keine get-methode! (Zugriff nur über for each Schleife!) 19.11.2015 IT I - VO 7 15

Sets Unterschiede zwischen List und Set: List enthält eine Sequenz von Objekten. Objekte können öfters vorkommen. Set enthält Objekte in keiner bestimmten Reihenfolge (keine get-methode!) Spez. Implementierungen existieren, die eine spezielle Reihenfolge der Objekte einhalten. In Set kommt ein Objekt nur einmal vor. 19.11.2015 IT I - VO 7 16

HashSet Benötigt eine korrekte Implementierung der Methode public int hashcode() in java.lang.object. Die Methode hashcode() gibt im wesentlichen an, wo ein Objekt in einem HashSet gespeichert wird. 19.11.2015 IT I - VO 7 17

hashcode() Um sicherzustellen, dass gleiche Objekte korrekt aufgefunden werden, müssen zwei gleiche Objekte, d.h. x.equals(y) == true, auch den gleichen Hashcode haben, x.hashcode() == y.hashcode(). (Die Umkehrung muss/kann i.a. nicht gelten!!!) 19.11.2015 IT I - VO 7 18

hashcode() Auch für andere Bibliotheksklassen muss hashcode() korrekt implementiert sein. Überschreiben von equals() erfordert das Überschreiben von hashcode()! Eine neue hashcode()-methode verwendet in der Regel die Attribute, die von equals() verwendet werden. z.b.: Kombination der Hashcodes der Attribute mit XOR(^): a1.hashcode() ^ a2.hashcode() ^ a3.hashcode() für Attribute a1, a2, a3. 19.11.2015 IT I - VO 7 19

public boolean equals(object obj) Eine weitere Methode, die in Object definiert (und implementiert) ist. equals() soll true liefern, wenn das Objekt, für das equals() aufgerufen, gleich dem übergebenen Objekt obj ist. Daher sollte equals() die folgenden Eigenschaften haben: obj.equals(obj) == true obj1.equals(obj2) == obj2.equals(obj1) Wenn obj1.equals(obj2)==true und obj2.equals(obj3)==true dann auch obj1.equals(obj3)==true. Das Ergebnis von obj1.equals(obj2) sollte sich nicht verändern, wenn obj1 und obj2 unverändert bleiben. obj.equals(null) == false 19.11.2015 IT I - VO 7 20

Überschreiben von equals() equals(object obj) ist für beliebige Objekte als Argumente definiert. In einer überschreibenden equals()-methode ist in der Regel ein Überprüfen der Klasse von obj und ein Casting notwendig. obj instanceof eineklasse Liefert true, wenn obj ein Objekt von eineklasse ist. 19.11.2015 IT I - VO 7 21

Testing and debugging Eliminate errors by avoiding them in the first place. Carefully design classes, algorithms and methods. Carefully code everything into Java. Test your program with appropriate test cases (some where the answer is known), discover and fix any errors, then retest. 19.11.2015 IT I - VO 7 22

Errors Eliminating errors is called debugging. An error in a program is called a bug. Three kinds or errors Compile errors Runtime errors Logical errors 19.11.2015 IT I - VO 7 23

Compile Errors/Syntax errors Grammatical mistakes in a program. The grammatical rules for writing a program are very strict. The compiler catches such errors and prints an error message. Examples: Using a period instead of a comma. Calling a method which is not defined. 19.11.2015 IT I - VO 7 24

Runtime Errors Errors that are detected when your program is running, but not during compilation. When the computer detects an error, it terminates the program and prints an error message. Examples: Division by 0 Null pointer reference Index out of bounds 19.11.2015 IT I - VO 7 25

Logical Errors Errors that are not detected during compilation or while running, but which cause the program to produce incorrect results. These are the errors which are hard to find. Programs need to be tested to find such errors. 19.11.2015 IT I - VO 7 26

Unit testing Each unit (class, method, constructor) of a program may (and should!) be tested. Finding and fixing errors in units early is much easier than debugging a whole program. For testing you need to understand what the unit should do. You will be looking for violations. One typical kind of error is the incorrect handling of boundary cases: First/last iteration of a loop First/last element of an array Minimal/maximal values Empty/full list 19.11.2015 IT I - VO 7 27

The art and craft of testing Errors are a fact of life in programs. Testing and debugging skills are essential. Make testing a habit. Practice debugging skills. Good testing is a creative process: Which test cases? Build a set of test cases for your units. Rerun the test when the unit is changed (regression testing). Automate testing where possible. Use of test units/test classes. Creativity is focused on creating the test classes. 19.11.2015 IT I - VO 7 28

Specific testing and debugging techniques Use the debugger to view the program execution. Add extra print statements to your program to get information about the execution. Manual walkthrough Verbal walkthrough 19.11.2015 IT I - VO 7 29

Manual walkthrough Get away from the computer and run the program by hand. Tabulate object states (attribute values) An object s behavior is usually determined by its state. Incorrect behavior is often the result of an incorrect state. Document state changes after method calls. 19.11.2015 IT I - VO 7 30

Verbal walkthroughs Explain to someone else what the code is doing. They might spot the error. The process of explaining might help you to spot it for yourself. 19.11.2015 IT I - VO 7 31

clock-display 19.11.2015 IT I - VO 7 32

Spezifikation eines Moduls NumberDisplay Ein Konstruktor, der die Obergrenze für den Zähler definiert, bei der der Zähler wieder auf 0 springt. Eine Methode void increment(), die den Zähler um eins erhöht. Eine Methode int getvalue(), die den Wert des Zählers zurückliefert. Eine Methode void setvalue(int replacementvalue), die den Zähler auf einen bestimmten Wert setzt. Eine Methode String getdisplayvalue(), die den Wert des Zählers als 2-stelligen String zurückliefert. 19.11.2015 IT I - VO 7 33

clock-display Spezifikation Stellt die Uhrzeit in digitaler Form dar. Es gibt eine Methode void settime(int hour, int minute), zum Einstellen der Uhrzeit. Es gibt eine Methode void timetick(), die die Uhr um eine Minute vorrückt. 19.11.2015 IT I - VO 7 34

Abstraktion Abstraktion sieht über Details hinweg und konzentriert sich auf die Gemeinsamkeiten, die dann sichtbar werden. Projekt clock-display: Die Minutenanzeige zählt von 0 59. Die Stundenanzeige zählt von 0 23. Gemeinsamkeit: Ein Zähler, der von 0 bis zu einem Höchstwert zählt, und dann wieder auf 0 springt. 19.11.2015 IT I - VO 7 35

Modularisierung clock-display One four-digit display? Or two two-digit displays? 19.11.2015 IT I - VO 7 36

clock-display Objektdiagramm 19.11.2015 IT I - VO 7 37