Enumerationen. Einführung. Probleme. Enumerationen. Wir benötigen in Programmen manchmal vordefinierte Menge von Werten.

Größe: px
Ab Seite anzeigen:

Download "Enumerationen. Einführung. Probleme. Enumerationen. Wir benötigen in Programmen manchmal vordefinierte Menge von Werten."

Transkript

1 Enumerationen Einführung Wir benötigen in Programmen manchmal vordefinierte Menge von Werten Sie können eigene Aufzählungstypen deklarieren Sie verwenden Aufzählungstypen situationsgerecht Beispiele: Wochentage (Montag, Dienstag) Farben (Rot, Grün, Blau,) Geschlecht (männlich, weiblich) Kleidergrösse (S, M, L, XL) Richtung (recht, links, oben, unten) (z.b. für die Ballonsteuerung) Spieler (computer, user) Wie können wir mit den bisher bekannten Mitteln die Aufgabe lösen 2 von 60 Probleme Ein Ballon kann in verschiedene Richtungen fliegen. void fliege(int richtung) { if(richtung == 1) // Richtung durch Integer-Konstanten kodiert // (rechts=1, links =2, ) -> UNÜBERSICHTLICH x = x+10 else. Implementieren wir den Aufzählungswert durch int-konstanten, so müssen wir jedesmal überprüfen, ob der Wert gültig ist. Ausserdem müssen wir irgendwie die Zuordnung zu den eigentlichen Werten kennen -> Lösung int Konstanten in Klasse definieren: Im JDK z.t. so public static final int RECHTS = 1 Im JDK z.t. so Falls mehrere solche Fälle in einer Klasse -> welche Konstanten (Gruppen) sind gültig? oder oder fliege (String richtung) { Wenn wir die Werte als Strings implementieren, müssen wir jedesmal überprüfen, ob ein String- Wert gültig ist UND String-Vergleiche durchführen. Ausserdem müssen wir irgendwie die Zuordnung zu den eigentlichen Werten kennen. z.b. richtung.equals( links ) Enumerationen 3 von 60 4 von 60

2 Enumerations Typen Deklaration und Definition der Werte So genannte Enumerations sind Datentypen für Aufzählungen (Aufzählungstypen) d.h. für eine klar definierte und beschränkte Menge von Werten. Wir können z.b. einen Aufzählungstyp für die Richtungen oder Wochentage definieren Vorteile: Compiler überprüft die Gültigkeit der Werte! nur vorher definierte Menge von Werten zulässig, z.b. als Paramter Die Richtungswerte oder Wochentage sind explizit im Programm verankert, und nicht irgendwelche kryptischen int-werte -> Lesbarkeit Vergleiche mit == -Operator wird möglich -> Lesbarkeit enum Enumtyp { e1_1, e1_2,., e1_n Beispiele: Namen des Typs Namen des Typs Wertebereich Wertebereich enum Richtung {LINKS, RECHTS, OBEN, UNTEN enum Tag { MONTAG, DIENSTAG, MITTWOCH, DONNERSTAG, FREITAG, SAMSTAG, SONNTAG enum Wochentag { MONTAG, DIENSTAG, MITTWOCH, DONNERSTAG, FREITAG enum Geschlecht { MAENNLICH, WEIBLICH enum Kleidergroesse { S, M, L, XL enum-deklarationen werden wie eine eigene Klasse deklariert Enum-Deklarationen können auch innerhalb einer anderen Klasse deklariert werden (eher selten) Sie werden aber immer ausserhalb der Methoden deklariert, wie Instanzvariablen 5 von 60 6 von 60 Deklaration der Variablen Verwendung Nachdem wir den Aufzählungstypen definiert haben, können wir Variablen dieses Typs deklarieren Dies geschieht analog zu Instanzvariablen normaler Klassen: Solche Variablen können wie normale (Referenz-) Variablen verwendet werden Es können aber nur die vordefinierten Werte zugewiesen werden Die Werte werden wie statische Klassenvariablen angesprochen (wie z.b. Math.PI, Color.RED ) Wochentag tag; Geschlecht g = Geschlecht.MAENNLICH; Kleidergroesse size = Kleidergroesse.S; Richtung direction = Richtung.LINKS; Kontrollfrage: welche der Zuweisungen sind gültig Tag tag; tag = Wochentag.DIENSTAG; tag = Tag.DIENSTAG; tag = Tag.dienstag; tag = DIENSTAG; tag = "DIENSTAG"; 7 von 60 8 von 60

3 Vergleich von Werten Bei Enumerationen kann mit dem einfachen Vergleich gearbeitet werden if (tag == Tag.MONTAG) { Implementierung und Methoden 9 von von 60 Implementierung Vordefinierte Methoden Java erzeugt aus dem Aufzählungstyp eine Klasse mit den nötigen Konstanten- Definitionen enum Kleidergroesse {S, M, L, XL class Kleidergroesse { public final static Kleidergroesse S = new Kleidergroesse(); public final static Kleidergroesse M = new Kleidergroesse(); public final static Kleidergroesse L = new Kleidergroesse(); public final static Kleidergroesse XL = new Kleidergroesse(); Die generierte Klasse "Enum" enthält eine Reihe vordefinierter Methoden: static String tostring() gibt den Aufzählungstyp als entsprechenden String zurück. static Enum valueof(string s) gibt den Aufzählungswert zum entsprechenden String zurück. -> tag = Tag.valueOf("MONTAG") setzt MONTAG. static Enum[] values() liefert einen Array mit allen Aufzählungswerten -> tag = Tag.values()[0] setzt MONTAG. int ordinal() Liefert den Index eines Aufzählungswerts (Reihenfolge der Deklaration, startet bei 0). -> tag.ordinal()liefert von von 60

4 Vordefinierte Methoden Eigene Methoden int compareto(enum e) vergleicht zwei Werte: <0 -> kleiner, 0 -> gleich, >0 ->grösser, gemäss Reihenfolge der Deklaration Wie auch bei "normalen" Klassen, kann man eigene Methoden für Aufzählungsklassen schreiben: boolean equals(enum e) vergleicht zwei Enum-Werte. Es kann aber auch == verwendet werden if(tag == TAG.DIENSTAG) { enum Tag { MONTAG, DIENSTAG, MITTWOCH, DONNERSTAG, FREITAG, SAMSTAG, SONNTAG; boolean istwochenende() { return this == SAMSTAG this == SONNTAG; Bleiben Sie beim Einfachen (am Anfang ohne eigene Methoden). Es gibt ein paar subtile Kleinigkeiten zu beachten. Interessierte wenden sich an einschlägige Literatur (Google: java enumerationen problems) 13 von von 60 Verwendung Übung public class EnumSample extends Applet { public void paint(graphics g) { Tag t = Tag.SONNTAG; Für das Spiel benötigt man status-variablen: spielgestartet werbeginnt (user, computer) weristamzug (user, computer) g.drawstring("heute ist " + t.tostring(), 50, 50); if( t.istwochenende()) { Welche Datentypen sind hier sinnvoll-> g.drawstring("es ist Wochenende", 50, 70); g.drawstring("mittwoch ist der " + (Tag.valueOf("MITTWOCH").ordinal()+1) + "te Tag!", 50, 90 ); Wie werden Sie deklariert und verwendet-> spielgestartet: g.drawstring( "Donnerstag kommt vor Freitag-> " + werbeginnt : Tag.DONNERSTAG.compareTo(Tag.FREITAG) < 0, 50, 110 ); amzug: 15 von von 60

5 Lösung: Enumeration mit Methode next next Programmfehler, Ausnahmebehandlung enum Spieler { // Enumeration mit eigener Zusatzmethode USER, COMPUTER; Spieler next () { Spieler r = null; // damit keine Warnung "nicht initialisiert" switch (this) { case USER: r = Spieler.COMPUTER; break; case COMPUTER: r = Spieler.USER; break; default: System.out.println("Fehler" ); return r; Einführung Ausnahmebehandlung in Java Exceptions Beispiele für Ausnahmebehandlungen Neue Sprachelemente: try, catch, finally, throws, throw Anwendung: Spielerwechsel Spieler amzug, werbeginnt = Spieler.COMPUTER; amzug = werbeginnt; amzug = amzug.next(); 17 von 60 Einführung Einführung Beispiel: Öffnen einer Datei Datei kann nicht gefunden werden Ein Programm kann auf verschiedene Arten auf einen Fehler reagieren: Nichts tun, einfach weitermachen Fehlermeldung an Benützer ausgeben Programmabbruch Frage: Welches ist die vernünftigste Reaktion auf einen Fehler-> Antwort: Kann nicht verallgemeinert werden; kommt auf Ausnahmesituation an! Mögliche Ursachen: falscher Dateiname, falscher Pfad, falsche Extension, etc. Generell: diese Ausnahmesituationen heissen Exceptions und deren sinnvolle Behandlung wird als Exceptionhandling bezeichnet 19 von von 60

6 Das Auftreten von Fehlern ist unvermeidlich Reaktion des Computers auf Fehler Arten von Fehler "gute" "gute" Fehler; Fehler; früh früh entdeckt, entdeckt, Syntaxfehler, Tippfehler: merkt der Compiler schnell schnell behoben. behoben. "gute Programmiersprachen" erkennen viele Fehler schon zu Compilationszeit. BASIC, C, PHP, Groovy sind daher heikel Konfigurationsfehler: merkt das Laufzeitsystem; oft schon zur Ladezeit Laufzeitfehler: treten beim laufenden Programm auf Arten von Laufzeitfehler fehlerhafte Benutzereingabe Hardwarefehler Peripheriegerät nicht angeschlossen / nicht bereit Datei nicht vorhanden, nicht lesbar Fehler in der Programmlogik Division durch 0 Zugriff auf nicht existierendes Objekt "schlimme "schlimme Fehler" Fehler" weil weil Benutzer in seiner Arbeit Benutzer in seiner Arbeit behindert wird behindert wird Tragweite des Problems angemessen Behebung des Problems, soweit als möglich falsche Eingabe: Aufforderung zur Korrektur kein Papier: Meldung, dass Papier notwendig keine Diskette im Laufwerk: Diskette anfordern 21 von von 60 Reaktion auf Fehler Behandlung Beispiele nichts tun / nochmals versuchen geht nicht immer Sofortige Programmabbruch ev. Datenverlust Oft einzige Lösung: Meldung an Benutzer was ist Problem, wo aufgetreten, ev. Vorgeschichte ev. Behebungsvorschlag Geben Sie einige Beispiele von Ausnahmesituationen an und überlegen Sie sich, wie das Programm darauf reagieren soll: Ausnahmesituation Massnahme Fehlerhafte Benutzereingabe (Buchstabe Neueingabe ermöglichen statt Zahl) Laden einer Datei, die nicht existiert Drucker hat kein Papier Neuen Namen verlangen Aufforderung an Benutzer Programm fortfahren/beenden ohne Datenverlust Division durch 0 Zugriff auf nicht existierendes Objekt Programmabbruch Evtl. Meldung an Benutzer Arrayindex ausserhalb erlaubten Bereichs Abbruch, ev. Array vergrössern 23 von von 60

7 Ausnahmebehandlung Ziele der Ausnahmebehandlung: Behebung des Problems, soweit als möglich Programm fortfahren (wenn möglich) mit möglichst kleinen Verlusten/Einschränkungen. Die Ausnahmebehandlung eines Programms ist meist komplexer als die eigentliche Funktionalität des Programms! Ausnahmebehandlung, frühere Ansätze Ob ein Fehler lokal innerhalb der Methode behandelt werden kann, ob er weitergegeben werden muss oder das Programm überhaupt abbrechen muss, das hängt von der Art des Fehlers ab Generell: ein sauberes Exceptionhandling erhöht die Benutzbarkeit und Stabilität eines Programms enorm! In der Regel wird ca. die Hälfte des Codes für die Reaktion auf Fehler geschrieben -> ev sogar mehr. 25 von von 60 Frühere Ausnahmebehandlungs-Konzepte Nachteile des alten Ansatzes Zwei früher verbreite Arten der Fehlerbehandlung die Funktion/Methode liefert einen Rückgabewert (0=ok sonst Fehlercode) int err = doa(); die Funktion/Methode setzt eine globale Error Variable public boolean error; void doa () { error =..; Resultierender Programmcode mit Fehlerbehandlung void doa() { void dob() { void doc() { doa(); if (error) { else { dob(); if (error) { Methode kann nur einen Wert zurück geben: somit besetzt durch Fehlercode Die Programmteile zur Fehlerbehandlung sind vermischt mit den Teilen für den normalen Programmablauf Gleiche Fehlerfälle müssen u.u. mehrmals geprüft und behandelt werden Die Fehlerbehandlung kann vergessen werden. Die globale Error Variable muss bei jedem Aufruf gesetzt/abgefragt werden; Problem mit geschachtelten Aufrufen. 27 von von 60

8 Fehlersignalisierung in Java: Exception Anstatt eines "normalen" Rückgabewertes kann in einer Methode ein Ausnahme (Exception) Objekt zurück gegeben werden. Exception Objekte werden nicht mit return retourniert sondern mit throw dem Aufrufer quasi "angeworfen" Name der Exception in Name der Exception in Methoden Kopf Methoden Kopf Exception, Catch, Finally public double mssqrt(doube d) throws Exception { Erzeugung und werfen des if (d < 0) Erzeugung und werfen des Exception Objekts Exception Objekts throw new Exception("Argument negativ"); else return Math.sqrt(d); Exception Verursacher Exception Exception 29 von von 60 Aufruf einer Methode die Exception werfen kann Try-Catch zur Strukturierung Aufruf von Methoden die Exception werfen können, müssen in einem try- Block liegen Exception muss mittels catch (Exception ex) gefangen werden und im nachfolgenden Block behandelt werden In Beispiel In diesem diesem Block Block steht steht der der Code Code der der eine eine Exception String result; Exception werfen werfen kann kann double d = mysqrt(p); result = "Wurzel: " + d; try-block catch (Exception ex) { result = ex.getmessage(); catch-block Der "Happy Path" wird vom Fehlerfall klar getrennt Für das Abfangen und Behandeln einer Exception im try-catch- Konstrukt // Code, der eine XException // erzeugen kann catch (XException e) { // Code, der XException // behandelt die Methode ex.getmessage() liefert weitere Informationen über die Fehlerursache: in unserem Beispiel: "Argument Negativ" 31 von von 60

9 Mehrere catch Blöcke Ausschnitt der Hierarchie von Exceptions Klassen IndexOutOfBoundException Exception RuntimeException IllegalArgumentException Exception ist Oberklasse der meisten Exceptions abgeleitete Klassen vor den Oberklassen in catch Block Reihenfolge zuerst d = mysqrt(4); catch (IndexOutOfBoundException ex) { catch (RuntimeException ex) { catch (Exception ex) { Mehrere catch Blöcke Mehrere catch-blöcke hintereinander schreiben Ein catch-block für die entsprechende Oberklasse der gewünschten Exceptionklassen angegeben Beispiel: catch (IOException e){ // alle IOExceptions catch (Exception e) { // alle anderen Exceptions Achtung: Es wird immer die erste Exception verwendet, die passt Beim Auftreten einer Exception wird der entsprechende catch-block ausgeführt, dann fährt das Programm nach dem letzten der catch-blöcke weiter g d.h. die nachfolgenden catch-blocks werden übersprungen Die generellere Klasse (Exception) muss deshalb hinter den spezielleren (IOException) stehen 33 von von 60 finally finally Programmteile die immer ausgeführt werden sollen, auch im Fehlerfall finally-block: catch (Exceptionklassenname variablenname){ catch (Exceptionklassenname2 variablenname){ Der Code des finally-blocks wird in jedem Fall ausgeführt, d.h. sowohl bei normalem Ablauf als auch bei einer Exception Er wird auch ausgeführt, falls im try-block die Methode mit einer return-anweisung verlassen wird! Der finally-block wird vor allem verwendet für: Schliessen von Files Freigeben von Ressourcen Anderer Code, der in jedem Fall ausgeführt werden muss finally { // finally-block: wird in jedem Fall ausgeführt. ist optional 35 von von 60

10 Sichtbarkeitsbereiche von Variablen Eigene Exception Klassen Variable, die nur innerhalb eines Code-Blocks deklariert werden, sind nur in diesem Blocks sichtbar. Ausserhalb des Blocks sind sie undefiniert! for (int i = 0; i < 100; i++) { System.out.println( /n + i + ^ 2 = + i*i); Fehler, i ist nicht definiert! System.out.println( /n i nach der Schleife= + i); Das Gleiche gilt auch für den try-block: Variablen die im try-block definiert werden, sind ausserhalb von try-block (auch im catch-block) nicht sichtbar/definiert! Abhilfe: Benötigte Variablen ausserhalb try-block defnieren, Bsp.: URL myurl; myurl = new URL(TextField1.getText()); catch (Exception e) { System.out.println(""+e); System.out.println( url = + myurl); Es können beliebige eigene Exception Klassen definiert werden müssen von Exception erben sollten im Konstruktor einen String haben und diesen an die Oberklasse weiterleit = String der in der getmessage() Methode zurückgegeben wird public class MyException extends Exception { public MyException (String message) { super(message); Oft kann aus Fundus bestehender JDK Klassen eine Exception genommen werden 37 von von 60 Methoden der Exception Klasse String getmessage() Detaillierter Meldungsstring String tostring() Ausgabe des Exception Klassenname + Meldungsstring e.printstacktrace(); Behandlung von Exceptions Aufrufkette bei Exception Nützlich während der Entwicklung um Fehler zu lokalisieren catch (Exception e) { e.printstracktrace(system.err); 39 von von 60

11 Behandlung innerhalb Methode Behandlung ausserhalb eigener Methode try{ try-block: Code, der eine Exception werfen kann catch (Exceptionklassenname variablenname){ chatch-block: Code, um Exception zu behandeln alle Exceptions die innerhalb des try-blocks geworfen werden können, werden in nachfolgenden catch Blöcken gefangen. Falls keine Exception auftritt, fährt Programm nach dem letzten catch-block weiter Tritt eine Exception auf: Programm unterbricht den try-block führt den catch-block aus, falls Exception von der entsprechenden Klasse ist fährt nach dem letzten catch-block weiter 41 von 60 Statt die Exception im catch Block der Methode zu fangen, kann diese auch weitergegeben werden: der Exceptionklassennamen muss dazu im Methodenkopf angegeben werden Jeder Exceptionklassename, der in einer Methode geworfen werden kann, muss im Methodenkopf aufgeführt sein. public void mysqrt() throws MyException { throw new MyException("error"); public void dob() throws MyException { mysqrt(4); public doc() { dob(); catch (MyException ex) { 42 von 60 Behandlung innerhalb und ausserhalb Eine Exception kann auch gefangen, bearbeitet und wieder geworfen werden public doc() throws MyException { dob(); catch (MyException ex) { throw ex; Beispiele 43 von von 60

12 Beispiele für Ausnahmebehandlungen Beispiele für Ausnahmebehandlungen public void actionperformed(actionevent event) { if (event.getsource() == stringfield) { try{ int number; number = Integer.parseInt( stringfield.gettext()); resultfield.settext("doubled value is " + (2*number)); catch (NumberFormatException e) { resultfield.settext("error in number: retype "); catch (ArithmeticException e) { resultfield.settext("number overflow "); // if (event.getsource..) // method actionperformed Umwandlung eines String in eine Integer-Zahl Methode parseint kann NumberFormatException erzeugen (unchecked) Dies Exception sollte eher lokal behandelt werden. Nach oben propagieren bringt hier nicht viel. à die unterste Methode am besten weiss, was zu tun ist. Index eines Arrays liegen ausserhalb der erlaubten Grenzen erzeugt ArrayIndexOutOfBoundsException (unchecked) sollte nicht abgefangen werden, so dass der Ort des Fehlers anhand der Fehlermeldung (von Java Run-Time-System) besser lokalisiert werden kann. 45 von von 60 Beispiele für Ausnahmebehandlungen Beispiele für Ausnahmebehandlungen Öffnen eines Files (Dateien werden im Kapitel 8 behandelt) Files müssen geöffnet werden, bevor man daraus etwas lesen kann Falls File nicht existiert à FileNotFoundException Es gibt 2 Varianten für die Behandlung: Exception wird abgefangen try{ \\ Versuche File zu oeffen infile = new BufferedReader(new FileReader("meinFile.txt")); catch (FileNotFoundException e){ \\ Falls File nicht gefunden errorfield.settext("datei nicht gefunden") Exception wird nach oben propagiert parseint generiert eine NumberFormatException, wenn Aber: der eingegebene String keine ganze Zahl ist ( AA, 1.34 etc.) die eingegebene Zahl zu gross oder zu klein ist (nicht zwischen und ) (siehe dazu auch die Java API Spezifikation) ist die eingegebene Zahl OK und die resultierende zu gross, so gibt es keinen Fehler, obwohl ArithmeticException abgefangen wird wieso-> Die Operation 2 * number erzeugt keine ArithmeticException (im Gegensatz zu zb. Division durch 0)! private void openfile() throws IOException{ infile = new BufferedReader(new FileReader("meinFile.txt")); 47 von von 60

13 Übung Schreiben Sie eine Methode liesziffer(string str), die prüft, ob der String str eine Ziffer zwischen 0..9 darstellt. Falls ja, soll die Methode die Ziffer als Integer zurückgeben. Falls nicht, soll die Methode eine IllegalArgumentException mit einer entsprechenden Meldung erzeugen. Geprüfte und ungeprüfte Ausnahmen 49 von von 60 Geprüfte Ausnahmen: checked Nicht geprüfte Ausnahmen: unchecked Geprüfte Ausnahmen die innerhalb einer Methode geworfen werden, müssen im Methodenkopf aufgeführt werden Erben von der Klasse Exception public void mysqrt() throws MyException, IllegalArgumentException { throw new MyException("error"); throw new IllegalArgumentException("a"); Es reicht aber auch die Exception Oberklasse anzugeben um irgend eine Exception zu werfen public void mysqrt() throws Exception { Wenn alle möglichen Fehler gefangen werden müssten, würde des Programm weitgehend aus Fehlerbehandlungscode bestehen. (schwerwiegende) Ausnahmen, die an fast jeder Stelle auftregen können, müssen nicht gefangen werden: unchecked Exceptions nicht gefangene Exceptions werden automatisch an die VM weitergereicht -> Programmabbruch mit Fehlermeldung (Ausgabe der Ursache). 2 Gruppen von unchecked Exceptions Schwerwiegende Konfigurations-/Systemfehler z.b. Klasse nicht vorhanden sind Unterklassen von Error Programmierfehler z.b. Division durch 0, Null Pointer Zugriff sind Unterklassen von RuntimeException 51 von von 60

14 Klassenhierarchie Java kennt etwa 30 vordefinierte Exception Klassen Oberklasse: Throwable -> Catch (Throwable e) um alle Exception zu fangen 2 Hauptkategorien: Error: Schwerwiegende Systemfehler, die der Programmierer normalerweise nicht abfängt Exception: die meisten Subklassen von Exception sind checked, d.h., sie müssen behandelt werden. Einzige Ausnahme bilden die RuntimeExceptions: Können praktisch überall auftreten Müssen daher nicht extra deklariert werden Müssen nicht in jedem Fall behandelt werden unchecked checked Exceptions als Teil der Methodenschnittstelle Es ist wichtige bei jeder Methode zu wissen, welche Fehlerfälle das auftregen können In der Dokumentation zu den Bibliotheksroutinen stehen neben dem Zweck und den Parametern der Methode auch die möglichen Exceptions, die von der Methode geworfen werden können. 53 von von 60 Schlechte Beispiele Exceptions sollen nicht einfach gefangen und ignoriert werden catch (IndexOutOfBoundException e) { Schlechte Beispiele besser: mindestens eine Ausgabe (ins Error log-> spätere Vorlesung) oder e.printstacktrace(); catch (IndexOutOfBoundException e) { System.err.println(e.getMessage()); catch (IndexOutOfBoundException e) { e.printstacktrace(); 55 von von 60

15 Schlechte Beispiele Zusammenfassung Exception Exceptions sollten nicht für gewollte Ausnahmen eingesetzt werden (zb als Ersatz für Abbruchbedingung im normalen Programmablauf) etwas schneller weil Test enfällt etwas schneller weil Test enfällt for(int i = 0;;i++) { k = a[i]; catch (IndexOutOfBoundException e) { die Ausnahmen sind aussergewöhnliche Fälle Exception sind Instanzen von Klassen, die Throwable als gemeinsame Oberklasse haben Ausnahme auslösen: erstellen eines Exception Objekts mit throw wird Exception "geworfen" Der Aufrufer ruft die Methode in try Block auf Fehlerfall: der Aufrufer landet im catch Block auf jeden Fall: finally wird ausgeführt Programm wird nach dem letzten catch Block weitergeführt Jeder Fehlerfall muss im Methodenkopf angegeben werden, ausser : RuntimeException und Error Error meist sofortiger Programmabbruch nötig RuntimeException schwierig zu behandeln, kann überall auftreten 57 von von 60 Anhang: Kontrollfragen Anhang: Lösung der Aufgabe Welche 3 grundlegenden Fehlertypen gibt es in Java-> Wie wird in Java ein Fehler abgefangen-> Was bewirkt der finally-block-> Wieviel catcher können eingerichtet werden -> Wie sieht der Kopf einer Methode aus, in welcher Fehler auftreten können, aber nicht in der Methode selbst behandelt werden-> 59 von 60 Lösung der Aufgabe von der Folie 24 : Schreiben Sie eine Methode liesziffer(string str), die prüft, ob der String str eine Ziffer zwischen 0..9 darstellt. public static int liesziffer (String str) throws IllegalArgumentException { if(str.length()!= 1 ) throw (new IllegalArgumentException ("mehr oder weniger als genau 1 Ziffer eigegeben")); else if(!(str.charat(0) >= '0' && str.charat(0)<='9')) throw (new IllegalArgumentException("keine Ziffer 0..9")); else return (str.charat(0)-'0'); // convert ASCII/UNICODE zu integer Anwendung: System.out.println("Einlesene Zahl = "+liesziffer(s)); catch (IllegalArgumentException e) { System.out.println("IllegalArgumentException: " + e.getmessage()); 60 von 60

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1 Kapitel 11 Fehler und Ausnahmen Fehler und Ausnahmen 1 Ziele Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen

Mehr

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf 16 Exceptions Zur Behandlung unerwarteter Situationen bietet Java Unterstützung in Form von Exceptions oder Ausnahmen. Den Sinn von Exceptions können wir Ihnen an einem kleinen Beispiel klarmachen. Nehmen

Mehr

Exceptions. Prof. Dr. Margarita Esponda SS 2012. M. Esponda-Argüero

Exceptions. Prof. Dr. Margarita Esponda SS 2012. M. Esponda-Argüero Exceptions Prof. Dr. Margarita Esponda SS 2012 1 Ausnahmen Eine Ausnahme (Exception) ist ein Fehler oder ein nicht geplantes Ereignis, das während der Ausführung eines Programms vorkommt und dessen normalen

Mehr

5.13 Umgang mit Fehlern

5.13 Umgang mit Fehlern 5.13 Umgang mit Fehlern Klassifikation von Fehlern: Syntaxfehler: Lexikalische Fehler: Falsche oder unbekannte Worte String s neu String("Max"); Falsche Anordnung von Anweisungen: Falscher Typ: import

Mehr

Einführung in die Programmierung Blockkurs Java

Einführung in die Programmierung Blockkurs Java Michael Bader 8. 12. April 2002 Freitag Inhaltsübersicht Exceptions und Errors Ausnahmebehandlung: try/catch/finally Threads Zugriffskontrolle bei gemeinsamen Variablen: synchronized, wait(), notify()

Mehr

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions try-catch Schlüsselworte try-catch e Schlüsselwort Schlüsselwort selbst erstellte ermöglichen die Behandlung von Fehlern, die zur Laufzeit entstehen. try-catch in C: Fehler führt immer zum Abbruch des

Mehr

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 12. Fehler und Ausnahmen 1 Kapitel 12 Ziele 2 Fehlerquellen in Programmen und bei der Programmausführung kennenlernen Das Java-Konzept der Ausnahmen als Objekte verstehen Ausnahmen auslösen können Ausnahmen behandeln können Fehlerhafte

Mehr

Objektorientierte Programmierung. Kapitel 18: Exceptions II

Objektorientierte Programmierung. Kapitel 18: Exceptions II 18. Exceptions II 1/51 Objektorientierte Programmierung Kapitel 18: Exceptions II Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2014/15 http://www.informatik.uni-halle.de/ brass/oop14/

Mehr

Teil II. Objektorientierte Programmierung und objektorientierter Entwurf

Teil II. Objektorientierte Programmierung und objektorientierter Entwurf Teil II Objektorientierte Programmierung und objektorientierter Entwurf 39 Kapitel 8 Robuste Programme durch Ausnahmebehandlung Ziele: Lernen, robuste Programme zu schreiben Ausnahmen als Objekte verstehen

Mehr

9. Fehlerbehandlung Advanced Programming Techniques. Wintersemester 2009 / 2010 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

9. Fehlerbehandlung Advanced Programming Techniques. Wintersemester 2009 / 2010 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik 9. Fehlerbehandlung Advanced Programming Techniques Wintersemester 2009 / 2010 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik 1 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik:

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Fehlerbehandlung und Ein- und Ausgabe Titel der Präsentation 2 Fehler = Exceptions? Die Exception- bzw. Ausnahmebehandlung in Java ist eine spezielle Form der Fehlerbehandlung Typischerweise

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

Objektorientierte Programmierung. Kapitel 18: Exceptions II

Objektorientierte Programmierung. Kapitel 18: Exceptions II Stefan Brass: OOP (Java), 18. Exceptions II 1/50 Objektorientierte Programmierung Kapitel 18: Exceptions II Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2014/15 http://www.informatik.uni-halle.de/

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

Mehr

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

Mehr

PHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden.

PHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden. PHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden. Allgemein Ein Einzug sollte aus 4 Leerzeichen bestehen.

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003 Test zu Grundlagen der Programmierung Leitung: Michael Hahsler 1. November 00 Name Martrikelnummer Unterschrift Bitte kreuzen Sie das Studium an, für das Sie diese Prüfung ablegen: O Bakkalaureat Wirtschaftsinformatik

Mehr

Datenbankanwendungsprogrammierung Crashkurs Java

Datenbankanwendungsprogrammierung Crashkurs Java Datenbankanwendungsprogrammierung Crashkurs Java Denny Priebe Datenbankanwendungsprogrammierung p. Unterschiede zu C, C++ typedefs, Präprozessor Strukturen, Unions globale Funktionen Mehrfachvererbung

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 1 Übung Blatt 5 Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:

Mehr

5.5.8 Öffentliche und private Eigenschaften

5.5.8 Öffentliche und private Eigenschaften 5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Java Einführung Abstrakte Klassen und Interfaces

Java Einführung Abstrakte Klassen und Interfaces Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Java Schulung (Java 2 Java Development Kit 5 / 6)

Java Schulung (Java 2 Java Development Kit 5 / 6) 2. Grundlagen der Objektorientierung 2.1 Klassen, Attribute, Methoden Klassen Eine Klasse beschreibt als Bauplan Gemeinsamkeiten einer Menge von Objekten ist also ein Modell, auf dessen Basis Objekte erstellt

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Spec# Einführung. Formale Software-Entwicklung Seminar SS 07 Universität Karlsruhe Hilal Akbaba

Spec# Einführung. Formale Software-Entwicklung Seminar SS 07 Universität Karlsruhe Hilal Akbaba Spec# Einführung Formale Software-Entwicklung Seminar SS 07 Universität Karlsruhe Hilal Akbaba Inhalt Einführung in C# Das Spec# System Die Konstrukte Vererben der Verträge System Architektur Einführung

Mehr

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

Mehr

Fehler die bei der Programmerstellung passieren können teilweise vom Compiler erkannt werden

Fehler die bei der Programmerstellung passieren können teilweise vom Compiler erkannt werden Exceptions Fehler die bei der Programmerstellung passieren können teilweise vom Compiler erkannt werden int a; double b=10; a = 10 * b; System.out.println(a); Fehler die während der Programmausführung

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

Einführung in Javadoc

Einführung in Javadoc Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Der hat die früher handschriftlichen Folien lesbar gemacht. Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Heutige Themen Hello World!

Mehr

Grundlagen der Informatik Ausnahmebehandlung & Threads

Grundlagen der Informatik Ausnahmebehandlung & Threads Grundlagen der Informatik Ausnahmebehandlung & Threads Prof. Dr. Bernhard Schiefer (basierend auf Unterlagen von Prof. Dr. Duque-Antón) bernhard.schiefer@fh-kl.de http://www.fh-kl.de/~schiefer Inhalt Ausnahmebehandlung

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen

Mehr

620.900 Propädeutikum zur Programmierung

620.900 Propädeutikum zur Programmierung 620.900 Propädeutikum zur Programmierung Andreas Bollin Institute für Informatik Systeme Universität Klagenfurt Andreas.Bollin@uni-klu.ac.at Tel: 0463 / 2700-3516 Arrays Wiederholung (1/5) Array = GEORDNETE

Mehr

von Anja Austermann Drag and Drop

von Anja Austermann Drag and Drop von Anja Austermann Drag and Drop »Drag and Drop«ist die Bezeichnung für den Datentransfer zwischen unterschiedlichen Anwendungen mit grafischer Benutzeroberfläche. Zur Zeit arbeitet Drag and Drop in Java

Mehr

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen Übungen if / else / else if... 2... 2 Aufgabe 2:... 2 Aufgabe 3:... 2 Aufgabe 4:... 2 Aufgabe 5:... 2 Aufgabe 6:... 2 Aufgabe 7:... 3 Aufgabe 8:... 3 Aufgabe 9:... 3 Aufgabe 10:... 3 switch... 4... 4 Aufgabe

Mehr

5.4 Klassen und Objekte

5.4 Klassen und Objekte 5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen

Mehr

Programmdokumentation

Programmdokumentation Programmdokumentation Der 1. Abgabe am 29.10.1998 über das 1. und 2. Programm INHALTSVERZEICHNIS: 1 ERSTES PROGRAMM: RECHNUNGSERSTELLUNG... 2 1.1 MODULARISIERUNG UND DATENSTRUKTUR... 2 1.1.1 Grundidee:

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 8 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Vererbung Vererbung Statischer Typ Dynamischer Typ 2 Polymorphie Overloading: Methoden überladen Overriding:

Mehr

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ Objektorientierte Programmierung Objektorientierte Programmierung Eine Einführung mit BlueJ stellt die Daten, ihre Struktur und ihre Beziehungen zueinander in den Vordergrund. Weniger im Blickpunkt: die

Mehr

1. Der Einstieg in Java. Was heißt Programmieren?

1. Der Einstieg in Java. Was heißt Programmieren? 1. Der Einstieg in Java Lernziele: Am Ende dieses Kapitels sollen Sie wissen, aus welchen Bestandteilen ein Java-Programm besteht, Java-Programme übersetzen und ausführen können, Möglichkeiten der Kommentierung

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin

Mehr

Erster Bug: eine Motte

Erster Bug: eine Motte SOFTWAREFEHLER Der erste Bug Erster Bug: eine Motte Der Begriff Bug (deutsch: Motte) stammt aus dem Jahre 1945, als Ingenieure in einem Schaltrelais eines Computers (Harvard Mark II-System) eine Motte

Mehr

13. Tutorium zu Programmieren

13. Tutorium zu Programmieren 13. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2009 by IPD Snelting

Mehr

II.1.1. Erste Schritte - 1 -

II.1.1. Erste Schritte - 1 - ! 1. Grundelemente der Programmierung! 2. Objekte, Klassen und Methoden! 3. Rekursion und dynamische Datenstrukturen! 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1

Mehr

Einfache Rechenstrukturen und Kontrollfluss II

Einfache Rechenstrukturen und Kontrollfluss II Einfache Rechenstrukturen und Kontrollfluss II Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer http://www.pst.informatik.uni-muenchen.de/lehre/ss06/infoii/ SS 06 Ziele Lernen imperative

Mehr

Variablen manipulieren per JDI

Variablen manipulieren per JDI Variablen manipulieren per JDI Zusammenfassung Jede moderne Java IDE verfügt über eine mächtige und dennoch meist einfach zu bedienende Benutzeroberfläche die das finden von Fehlern in lokalen oder entfernt

Mehr

Programmieren in Java

Programmieren in Java Datei-Handling Anonyme Klassen 2 Enums Enums sind eine Aufzählung von int-werten, wobei jedes Element einem bestimmten Namen zugeordnet ist In Java werden Enums über das Schlüsselwort enum definiert und

Mehr

Exceptions: Parameterprüfung import java.io.ioexception;

Exceptions: Parameterprüfung import java.io.ioexception; PPK2 Java Exceptions, Dateien Seite 1 von 31 Exceptions: Parameterprüfung import java.io.ioexception; public class Parameters public static String Methode(String str,exception obj,int index, String[] array)

Mehr

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden VIII: Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik I VIII: Vererbung 259 Beispiel:

Mehr

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung. Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik II: Objektorientierte SW-Entwicklung,

Mehr

Distributed Computing Group

Distributed Computing Group JAVA TUTORIAL Distributed Computing Group Vernetzte Systeme - SS 06 Übersicht Warum Java? Interoperabilität grosse und gut dokumentierte Library weit verbreitet Syntax sehr nahe an C Erfahrung: Java wird

Mehr

1. Sei der String s = new String( xyzzy ) gegeben. Welcher Aufruf verändert s?

1. Sei der String s = new String( xyzzy ) gegeben. Welcher Aufruf verändert s? Prof. Dr. Detlef Krömker Ashraf Abu Baker Robert-Mayer-Str. 10 60054 Frankfurt am Main Tel.: +49 (0)69798-24600 Fax: +49 (0)69798-24603 EMail: baker@gdv.cs.uni-frankfurt.de 1. Sei der String s = new String(

Mehr

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15 Übersicht Schleifen Schleifeninvarianten Referenztypen, Wrapperklassen und API CoMa I WS 08/09 1/15 CoMa I Programmierziele Linux bedienen Code umschreiben strukturierte Datentypen Anweisungen und Kontrollstrukturen

Mehr

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Kontrollstrukturen, Pseudocode und Modulo-Rechnung Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 29.10.2012 CoMa-Übung III (TU Berlin) Kontrollstrukturen, Pseudocode und Modulo-Rechnung 29.10.2012 1 / 1 Themen der Übung 1

Mehr

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es

Mehr

Android will doch nur spielen. Java Eine kurze Einführung

Android will doch nur spielen. Java Eine kurze Einführung Android will doch nur spielen Java Eine kurze Einführung Agenda Einführung in Java Syntax und Semantik Komplexe Datenstrukturen OOP Weitere Java-Elemente 2 Einführung in Java Was ist Java? lt. Sun: einfach

Mehr

Einführung in die. objektorientierte Programmierung

Einführung in die. objektorientierte Programmierung Einführung in die objektorientierte Programmierung Teil 3 Vererbung Modul WI111: Objektorientierte Programmierung Fachrichtung Wirtschaftsinformatik Prof. Dr. Gert Faustmann Fachbereich Berufsakademie

Mehr

14. Tutorium zu Programmieren

14. Tutorium zu Programmieren 14. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2009 by IPD Snelting

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

Jürgen Bayer. MDI-Anwendungen in C#

Jürgen Bayer. MDI-Anwendungen in C# Jürgen Bayer MDI-Anwendungen in C# Inhaltsverzeichnis 1 Grundlagen 2 1.1 Einrichten der Formulare 2 1.2 Öffnen von MDI-Childformularen 3 2 Menüs 4 2.1 Erstellen eines Menüs 4 2.2 Programmierung der Menüpunkte

Mehr

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: 5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel Beispiel (3) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Probleme des Implementierungsvorschlags:

Mehr

Programmieren von Webinformationssystemen

Programmieren von Webinformationssystemen Programmieren von Webinformationssystemen Wolfgang Gassler Databases and Information Systems (DBIS) Institute of Computer Science University of Innsbruck dbis-informatik.uibk.ac.at 1 HTML Hypertext Markup

Mehr

5. Tutorium zu Programmieren

5. Tutorium zu Programmieren 5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Rückblick Schleifen while do-while for Methoden Verfahren: Intervallschachtelung 2 Wo

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Exception Handling, Tracing und Logging C#.NET

Exception Handling, Tracing und Logging C#.NET Exception Handling, Tracing und Logging C#.NET Daniel Malovetz Inhaltsverzeichnis 1 Ausnahmen in.net: Exceptions 2 1.1 Definition von Ausnahmen......................... 2 1.2 Ausnahmebehandlung............................

Mehr

7. Übung zu Algorithmen und Datenstrukturen

7. Übung zu Algorithmen und Datenstrukturen 7. Übung zu Algorithmen und Datenstrukturen Dynamisches Programmieren Greedy Algorithms Exceptions 1 Dynamische Programmierung nutzt gezielt aus, dass man bei manchen Problemen den Rechenaufwand extrem

Mehr

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Grundlagen. Die Komponenten eines C Programms. Das erste Programm Grundlagen 1. Die Komponenten eines C Programms 2. Ein Programm erzeugen und übersetzen 3. Variablen Deklarieren und Werte zuweisen 4. Zahlen eingeben mit der Tastatur 5. Arithmetische Ausdrücke und Berechnungen

Mehr

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik-

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik- Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VII Einstieg in Java I Michael Roth (h_da) Informatik

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Java-Programmierung. Remote Method Invocation - RMI

Java-Programmierung. Remote Method Invocation - RMI Java-Programmierung Remote Method Invocation - RMI Entwicklungsmethoden Sockets Entwurf verteilter Anwendungen ist relativ aufwändig, da zunächst ein Kommunikationsprotokoll entwickelt werden muss aufwändig

Mehr

Primitive Datentypen

Primitive Datentypen Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.

Mehr

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Prof. Dr. Wilhelm Schäfer Paderborn, 15. Dezember 2014 Christian Brenner Tristan Wittgen Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Aufgabe 1 Codegenerierung

Mehr

C# im Vergleich zu Java

C# im Vergleich zu Java C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung

Mehr

Programmieren in C. Operatoren, Variablen und deren Sichtbarkeit. Prof. Dr. Nikolaus Wulff

Programmieren in C. Operatoren, Variablen und deren Sichtbarkeit. Prof. Dr. Nikolaus Wulff Programmieren in C Operatoren, Variablen und deren Sichtbarkeit Prof. Dr. Nikolaus Wulff Auswertung von Ausdrücken Was passiert wenn ein Ausdruck wie z. B. int y,x=2; y = ++x * x++; im Computer abgearbeitet

Mehr

Java für C++ Programmierer

Java für C++ Programmierer Java für C++ Programmierer Alexander Bernauer bernauer@inf.ethz.ch Einführung in die Übungen zu Informatik II (D ITET) FS2010 ETH Zürich Ziel Allgemeiner Überblick Kennenlernen der Suchbegriffe Warum Java?

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2012/13 Inhalt Rekursive Programmierung Beispiel _ Determinanten von

Mehr

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure 7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG

Mehr

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

Mehr

5.6 Vererbung. Vererbung

5.6 Vererbung. Vererbung 5.6 Vererbung Klassen können zueinander in einer "ist ein"- Beziehung stehen Beispiel: Jeder PKW ist ein Kraftfahrzeug, jedes Kraftfahrzeug ist ein Transportmittel aber: auch jeder LKW ist ein Kraftfahrzeug

Mehr

Info: Standard DO-178B. 5. Mocking. Zusammenspiel von Klassen testen. Allgemein: Klassen testbar machen

Info: Standard DO-178B. 5. Mocking. Zusammenspiel von Klassen testen. Allgemein: Klassen testbar machen Info: Standard DO-178B Zertifizierung Federal AviationAdministration (FAA), Software für Luftverkehrssysteme durch Standard DO-178B für requirement-based Tests and Code Coverage Analyse DO-178B-Levels

Mehr

Informatik II. /* c) Baumstruktur in einen String schreiben und zurueckgeben */ public String tostring() {

Informatik II. /* c) Baumstruktur in einen String schreiben und zurueckgeben */ public String tostring() { Universität Augsburg, Institut für Informatik Sommersemester 2006 Prof. Dr. Werner Kießling 08. Juni. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5 Aufgabe 1: Cloneable Tree.java Informatik II

Mehr

Studentische Lösung zum Übungsblatt Nr. 7

Studentische Lösung zum Übungsblatt Nr. 7 Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int

Mehr

2.2 Prozesse in Java

2.2 Prozesse in Java 2.2 Prozesse in Java! Java sieht kein Schlüsselwort für Prozesse vor, sondern bestimmte Klassen und Schnittstellen. Mit anderen Worten: der Prozessbegriff wird mit Mitteln der Objektorientierung eingeführt.

Mehr

Java: Eine Übersicht. Dennis Giffhorn. Lehrstuhl für Programmierparadigmen Universität Karlsruhe

Java: Eine Übersicht. Dennis Giffhorn. Lehrstuhl für Programmierparadigmen Universität Karlsruhe Java: Eine Übersicht Dennis Giffhorn Lehrstuhl für Programmierparadigmen Universität Karlsruhe Allgemeines Objektorientiert Syntaxfamilie von C/C++ Statisch getypt Entwickelt von Sun Microsystems class

Mehr

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7 Java Einführung Umsetzung von Beziehungen zwischen Klassen Kapitel 7 Inhalt Wiederholung: Klassendiagramm in UML Java-Umsetzung von Generalisierung Komposition Assoziationen 2 Das Klassendiagramm Zweck

Mehr

Programmieren von Webinformationssystemen

Programmieren von Webinformationssystemen Programmieren von Webinformationssystemen Nikolaus Krismer Databases and Information Systems (DBIS) Institute of Computer Science University of Innsbruck dbis-informatik.uibk.ac.at 1 PHP Ursprünglich:

Mehr

FHZ. Man unterscheidet ein- und mehrdimensionale Arrays. Bei einem mehrdimensionalen Array sind die Komponenten wiederum Arrays.

FHZ. Man unterscheidet ein- und mehrdimensionale Arrays. Bei einem mehrdimensionalen Array sind die Komponenten wiederum Arrays. 1 Einführung Ein Array (Feld) enthält eine Anzahl von gleichartigen Komponenten (Elemente), die nicht via Namen, sondern über einen Index zugegriffen werden. Komponenten können von einem elementaren Datentyp

Mehr