Einführung in die Programmierung mit Java
|
|
|
- Frieder Heidrich
- vor 8 Jahren
- Abrufe
Transkript
1 Einführung in die Programmierung mit Java Teil 9: Unified Modeling Language Martin Hofmann Steffen Jost LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München Stack 7. Dezember 2017 p r q Heap Point x 4 y 5 Point x 4 y 5 Martin Hofmann, Steffen Jost Einführung in die Programmierung UML 9.1
2 Teil 9: Unified Modeling Language 1 UML Diagramme Objektdiagramme Klassendiagramm Martin Hofmann, Steffen Jost Einführung in die Programmierung UML 9.2
3 UML Objektdiagramme Klassendiagramm UML-Notation UML = Unified Modelling Language ISO Standard zur grafischen Veranschaulichung von Vorgängen bei der Softwareentwicklung: Objektdiagramme: visualisieren Speicherinhalt Klassendiagramme: visualisieren Klassen und ihre Beziehungen Use-case Diagramme: visualisieren Verwendungsszenarien Statecharts: visualisieren Zustandsübergänge... Martin Hofmann, Steffen Jost Einführung in die Programmierung UML 9.3
4 UML UML Objektdiagramme Klassendiagramm UML-Diagramme werden primär als Strukturierungs- und Modellierunsmittel auf dem Weg von der informellen Beschreibung zum fertigen Programm eingesetzt: Welche Komponenten gibt es? Was leistet jede Komponente? Wie interagieren die Komponenten? Welche Abhängigkeiten gibt es? Die Ideen werden zuerst in Diagrammen festgehalten, diskutiert und anschließend danach implementiert. Nicht umgekehrt! Modellierung beinhaltet auch Abstraktion: Wenn z.b. ein Konstruktor nicht aufgelistet wird, dann kann man darauf schließen, dass dessen Verhalten gewöhnlich ist; gibt es Besonderheiten zu beachten, wird dieser im Diagramm aufgeführt. Martin Hofmann, Steffen Jost Einführung in die Programmierung UML 9.4
5 UML Objektdiagramme Klassendiagramm Speicherdiagramm aus den Übungen Diagramm zeigt alle vorhandenen Objekte im Speicher ( Heap ), und meistens noch alle lokale Variablen mit Inhalt ( Stack -Box). Jedes Objekt im Heap durch Box mit zwei Teilen repräsentiert: 1 Klassenname 2 Attribute (Instanzvariablen) mit aktuellem Inhalt Beziehung zwischen Objekten durch Pfeile dargestellt: für Referenzen, also Verweise auf andere Objekte Gut für erste Übungen, aber schnell umständlich bei vielen Objekten Martin Hofmann, Steffen Jost Einführung in die Programmierung UML 9.5
6 UML Objektdiagramme Klassendiagramm UML Objektdiagramm Objektdiagramme sind ähnlich zu den in unseren Übungen verwendeten Speicherdiagrammen: Alle Objekte werden als zweigeteilte Rechtecke dargestellt. In der oberen Hälfte steht der Instanzname (falls vorhanden) und davon mit Doppelpunkt abgetrennt der unterstrichene Klassenname. In der unteren Hälfte steht eine Auswahl von Attributen des Objekts mit ihren Werten. Anstelle von Pfeilen wird eine einfache Linie verwendet, an deren Spitze der Name des Attributs steht. Martin Hofmann, Steffen Jost Einführung in die Programmierung UML 9.6
7 UML Objektdiagramme Klassendiagramm Beispiel: Speicherdiagramm Nach Ende der Ausführung des Programmes von Folie 3.7 hatten wir in etwa folgendes Speicherdiagramm: Stack matthiasgiro johannasspar zinssatz 1.25 Heap Bankkonto kontostand besitzer String Bankkonto kontostand besitzer data Matthias String data Johanna Verweise wurden durch einfach Pfeile dargestellt. Alle lokalen Variablen des Stacks dargestellt. Martin Hofmann, Steffen Jost Einführung in die Programmierung UML 9.7
8 UML Objektdiagramme Klassendiagramm Beispiel: Objektdiagramm Der gleiche Programmzustand nun als UML-Objektdiagramm: johannasspar : Bankkonto Kontostand = matthiasspar : Bankkonto Kontostand = besitzer : String data = Johanna besitzer : String data = Matthias Es werden nur noch Objekte abgebildet. Die Stack-Variable zinssatz fehlt in dieser Darstellung. Martin Hofmann, Steffen Jost Einführung in die Programmierung UML 9.8
9 UML Objektdiagramme Klassendiagramm Beispiel: Objektdiagramm Der gleiche Programmzustand nun als UML-Objektdiagramm: johannasspar : Bankkonto Kontostand = matthiasspar : Bankkonto Kontostand = besitzer : String data = Johanna besitzer : String data = Matthias Strings werden aber meist nicht als eigene Objekte dargestellt: johannasspar : Bankkonto Kontostand = Besitzer = Johanna matthiasspar : Bankkonto Kontostand = Besitzer = Matthias Es werden nur noch Objekte abgebildet. Die Stack-Variable zinssatz fehlt in dieser Darstellung. Martin Hofmann, Steffen Jost Einführung in die Programmierung UML 9.8
10 UML Objektdiagramme Klassendiagramm Klassendiagramme Klassen werden in UML als dreigeteilte Rechtecke dargestellt: 1 Klassenname (unterstrichen oder fett gedruckt) 2 Instanzvariablen 3 Methoden (meist nur public) Instanzvariablen und Methoden werden manchmal mit ihrer Sichtbarkeit gekennzeichnet: + public private package private # protected (nur für Erben sichtbar) Ob man private Instanzvariablen und/oder Methoden angibt, hängt vom Anwendungsfall ab. Meist ist es zweckmäßig, alle Instanzvariablen und nur die öffentlichen Methoden anzugeben. Martin Hofmann, Steffen Jost Einführung in die Programmierung UML 9.9
11 UML Objektdiagramme Klassendiagramm Beziehungen im Klassendiagramm Beziehungen zwischen Klassen werden durch Linien und Pfeile mit verschiedenen Spitzen dargestellt: Implementierung von Klasse zu implementierter Schnittstelle (Interface) Vererbung, ist-ein von Unterklasse zu Oberklasse Verwendung, benutzt zu Klasse, deren Methoden aufgerufen werden Aggregation, im-besitz-von mehrere Besitzer möglich Klasse an Rautenspitze besitzt Instanzvariable davon Komposition, ist-teil-von besitzt exklusive Instanzvariable, d.h. Lebensspanne wird von Element an ausgefüllter Rautenspitze bestimmt Martin Hofmann, Steffen Jost Einführung in die Programmierung UML 9.10
12 UML Objektdiagramme Klassendiagramm UML Notationen In UML zeichnet man z.b. von der Klasse zur Schnittstelle einen gestrichelten Pfeil mit dreieckiger, hohler Spitze: Da es im Diagramm nicht immer so einen Pfeil geben muss, wird die Schnittstelle selbst vor dem Namen auch noch mit dem Schlüsselwort <<interface>> gekennzeichnet. Bemerkung: UML ist nicht speziell für Java erdacht worden, sondern soll allgemein für alle Programmiersprachen verwendet werden. Entsprechend kann die Auslegung der UML Spezifikation je nach verwendeter Sprache etwas variieren. Für Interfaces in Java ist z.b. auch noch die alternative Ball -Notation gebräuchlich: Neben die Klasse zeichnet man eine Linie, welche in einem Kreis endet, unter dem einfach nur der Name des Interface steht. Martin Hofmann, Steffen Jost Einführung in die Programmierung UML 9.11
13 UML Objektdiagramme Klassendiagramm Beispiel: UML Klassendiagramm I Ein Pfeil mit hohler Dreieckspitze von Unterklasse zu Oberklasse zeigt Vererbung im UML-Klassendiagramm an: Martin Hofmann, Steffen Jost Einführung in die Programmierung UML 9.12
14 UML Objektdiagramme Klassendiagramm Beispiel: UML Klassendiagramm II Martin Hofmann, Steffen Jost Einführung in die Programmierung UML 9.13
15 UML Objektdiagramme Klassendiagramm Aggregation vs Komposition Der Unterschied zwischen Aggregation und Komposition liegt darin, ob der Teil unabhängig vom Besitzer der Instanz existieren kann: Quelle: Wikimedia, gemeinfrei Kein Raum kann ohne Gebäude existieren, d.h. jeder Raum wird von einem Gebäude-Objekt als Attribut besessen, damit ist die Lebensspanne beider Objekte gleich. Dagegen kann ein Student meist auch ohne Vorlesung gut leben; ein Student-Objekt wird also noch woanders verwendet. Martin Hofmann, Steffen Jost Einführung in die Programmierung UML 9.14
16 UML Objektdiagramme Klassendiagramm Aggregation vs Komposition Der Unterschied zwischen Aggregation und Komposition liegt darin, ob der Teil unabhängig vom Besitzer der Instanz existieren kann: Quelle: Wikimedia, gemeinfrei Am Pfeil kennzeichnet man oft noch die Multiplizität: Ein Gebäude hat mindestens einen Raum; jeder Raum hat genau ein Gebäude. Eine Vorlesung muss mindestens 3 Studenten haben; ein Student kann beliebig viele Vorlesungen hören, muss aber nicht. Martin Hofmann, Steffen Jost Einführung in die Programmierung UML 9.14
17 UML Objektdiagramme Klassendiagramm Zusammenfassung UML UML Diagramme dienen der grafischen Veranschaulichung während des Softwareentwicklungsprozesses. UML-Klassendiagramme veranschaulichen Klassen und ihre Beziehungen/Abhängigkeiten untereinander. UML-Objektdiagramme veranschaulichen einen ausgewählten Teil des Zustands des Speichers zu einem speziellen Zeitpunkt während des Programmablaufs. UML Diagramme sollten sich immer nur auf eine Auswahl bzw. auf einen Teilaspekt des Projektes beschränken. Ein Diagramm des gesamten Projektes ist selten hilfreich. Martin Hofmann, Steffen Jost Einführung in die Programmierung UML 9.15
18 Einführung in die Programmierung mit Java Teil 10: Ausnahmebehandlung Martin Hofmann Steffen Jost LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München 7. Dezember 2017 Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.1
19 Teil 10: Ausnahmebehandlung 2 Ausnahmen und Fehler Grundlagen Fehler und Ausnahmen Syntax von Ausnahmen Selbstdefinierte Ausnahmen Abfangen von Ausnahmen Geprüfte Ausnahmen Praxis 3 Das Entwurfsmuster Singleton 4 Zusammenfassung Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.2
20 Ausnahmen Grundlagen Syntax Eigene Ausnahmen Fangen Geprüfte Praxis Fehlerhafte Software Software kann aus vielen Gründen unerwünschtes Verhalten zeigen: Fehler beim Entwurf, d.h. bei der Modellierung des Problems Fehler bei der Programmierung des Entwurfs Programm bricht mit NullPointerException ab Algorithmen falsch implementiert... Ungenügender Umgang mit außergewöhnlichen Situationen fehlerhafte Benutzereingaben, z.b. Datum Abbruch der Netzwerkverbindung Dateien können nicht gefunden werden... Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.3
21 Ausnahmen Grundlagen Syntax Eigene Ausnahmen Fangen Geprüfte Praxis Fehler vs Ausnahme Ausnahmesituationen unterscheiden sich von Programmierfehlern darin, dass man sie nicht (zumindest prinzipiell) von vornherein ausschließen kann. Immer möglich sind zum Beispiel: unerwartete oder ungültige Benutzereingaben Ein- und Ausgabe-Fehler beim Zugriff auf Dateien oder Netzwerk... Programmierfehler, welche nicht auftreten sollten, z.b.: Quadratwurzel einer negativen Zahl bestimmen Division durch 0 Methodenaufruf mit einem Null-Pointer... Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.4
22 Ausnahmen Grundlagen Syntax Eigene Ausnahmen Fangen Geprüfte Praxis Beispiel public static int fakt(int x) { if (x < 0) { throw new IllegalArgumentException ("fakt: Negatives Argument " + x); else {... Die Ausführung von System.out.println(fakt(-2)) führt zu Exception in thread "main" \ java.lang.illegalargumentexception: \ fakt: Negatives Argument -2 at Fakt.fakt(Fakt.java:7) at Fakt.main(Fakt.java:3) Process Fakt exited abnormally with code 1 Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.5
23 Ausnahmen Grundlagen Syntax Eigene Ausnahmen Fangen Geprüfte Praxis Was passiert hier? Werfen einer Ausnahme mit dem Statement throw exp ; wobei exp ein Ausdruck des Typs Throwable ist. Im Beispiel new IllegalArgumentException("... ") Das Werfen der Ausnahme bricht die Programmabarbeitung sofort ab. Es kommt zu einer Fehlermeldung aus der die Art der geworfenen Ausnahme, ihr String-Parameter, sowie der Ort (Klasse, Methode, Programmzeile) ihres Auftretens hervorgeht. IllegalArgumentException ist eine Klasse, welche einen Konstruktor besitzt, der einen String als Argument erwartet. Davon wird mit new wie gewohnt ein Objekt erzeugt. Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.6
24 Ausnahmen Grundlagen Syntax Eigene Ausnahmen Fangen Geprüfte Praxis Vordefinierte Ausnahmen Alle Ausnahmen gehören zur (vordefinierten) Klasse Exception oder einer Unterklasse. Exception selbst ist Unterklasse von Throwable. Das Argument der throw-anweisung muss Throwable sein. Unterklassen von Exception sind IOException, ClassNotFoundException, CloneNotSupportedException, RuntimeException, u.v.a.m. Unterklassen von IOException sind EOFException und FileNotFoundException u.v.a.m. Unterklassen von RuntimeException sind IllegalArgumentException, IndexOutOfBoundsException u.v.a.m. Unterklasse von IllegalArgumentException ist z.b.: NumberFormatException Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.7
25 Ausnahmen Grundlagen Syntax Eigene Ausnahmen Fangen Geprüfte Praxis Deklaration eigener Ausnahmen public static int fakt(int x) { if (x < 0) { throw new FakultaetAusnahme ("fakt: Negatives Argument " + x); else {... public class FakultaetAusnahme extends Exception { public FakultaetAusnahme() { public FakultaetAusnahme(String grund) { super(grund); Ausnahmen sind normale Objekte von gewöhnlich deklarierten Klassen, welche Erben von Exception sind. Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.8
26 Ausnahmen Grundlagen Syntax Eigene Ausnahmen Fangen Geprüfte Praxis Deklaration eigener Ausnahmen... double foo =...; throw new MeineAusname(42, "Grund", foo);... public class MeineAusnahme extends Exception { private int ifehler; private double dfehler; public FakultaetAusnahme(int i, String grund, double d) { super(grund); this.ifehler = i; this.dfehler = d; public int getifehler() { return this.ifehler; public double getdfehler() { return this.dfehler; Ausnahme-Objekte können zusätzliche Informationen speichern, die beim Auffangen des Fehlers ausgewertet werden kann. Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.9
27 Ausnahmen Grundlagen Syntax Eigene Ausnahmen Fangen Geprüfte Praxis Abfangen von Ausnahmen Mit try catch werden Ausnahmen abgefangen. public static void main(string[] args) { Scanner konsole = new Scanner(System.in); try { System.out.println("Bitte die Zahl"); String input = konsole.nextline(); int zahl = Integer.parseInt(input); System.out.println("Fakt("+zahl+")="+fakt(zahl)); catch (NumberFormatException ausnahme) { System.out.println("Falsche Eingabe."); catch (IllegalArgumentException e) { System.out.print(e.getMessage()); Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.10
28 Ausnahmen Grundlagen Syntax Eigene Ausnahmen Fangen Geprüfte Praxis Subtyping beachten! Ausnahmen in sinnvolle statement ::= try Hierarchie gliedern! try ::= try {( statement ) + ( catch-clause ) [finally { statement ] catch-clause ::= catch ( exception-class variable ) { statement Abfangen von Ausnahmen Wird im try Block eine Ausnahme geworfen, so werden der Reihe nach alle catch Blöcke (handler) durchgegangen. Der erster Handler, dessen Klasse zur Ausnahme passt, kommt zur Anwendung. Das Ausnahmeobjekt wird an den Parameter gebunden und der entsprechende Code wird ausgeführt. Dabei kann erneut eine Ausnahme geworfen werden. Man sollte darauf achten, dass Handler die Ausnahmen sinnvoll bearbeiten! NIE sinnvoll: catch (Exception e) { Jede Ausnahme versteht die Methode printstacktrace(). Dies gibt die Folge der Methodenaufrufe bis zu ihrer Auslösung auf der Konsole aus. Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.11
29 Ausnahmen Grundlagen Syntax Eigene Ausnahmen Fangen Geprüfte Praxis Subtyping beachten! Ausnahmen in sinnvolle statement ::= try Hierarchie gliedern! try ::= try {( statement ) + ( catch-clause ) [finally { statement ] catch-clause ::= catch ( exception-class variable ) { statement Abfangen von Ausnahmen Wird im try Block eine Ausnahme geworfen, so werden der Reihe nach alle catch Blöcke (handler) durchgegangen. Der erster Handler, dessen Klasse zur Ausnahme passt, kommt zur Anwendung. Das Ausnahmeobjekt wird an den Parameter gebunden und der entsprechende Code wird ausgeführt. Dabei kann erneut eine Ausnahme geworfen werden. Man sollte darauf achten, dass Handler die Ausnahmen sinnvoll bearbeiten! NIE sinnvoll: catch (Throwable t) { Jede Ausnahme versteht die Methode printstacktrace(). Dies gibt die Folge der Methodenaufrufe bis zu ihrer Auslösung auf der Konsole aus. Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.11
30 Ausnahmen Grundlagen Syntax Eigene Ausnahmen Fangen Geprüfte Praxis Subtyping beachten! Ausnahmen in sinnvolle statement ::= try Hierarchie gliedern! try ::= try {( statement ) + ( catch-clause ) [finally { statement ] catch-clause ::= catch ( exception-class variable ) { statement Abfangen von Ausnahmen Wird im try Block eine Ausnahme geworfen, so werden der Reihe nach alle catch Blöcke (handler) durchgegangen. Der erster Handler, dessen Klasse zur Ausnahme passt, kommt zur Anwendung. Das Ausnahmeobjekt wird an den Parameter gebunden und der entsprechende Code wird ausgeführt. Dabei kann erneut eine Ausnahme geworfen werden. Man sollte darauf achten, dass Handler die Ausnahmen sinnvoll bearbeiten! NIE sinnvoll: catch (Exception e) { Jede Ausnahme versteht die Methode printstacktrace(). Dies gibt die Folge der Methodenaufrufe bis zu ihrer Auslösung auf der Konsole aus. Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.11
31 Ausnahmen Grundlagen Syntax Eigene Ausnahmen Fangen Geprüfte Praxis Zusatzinformationen auswerten Damit wird klar, wie Zusatzinformationen genutzt werden können: try {... if (...) { throw new MeineAusname(xyz, "Grund", foo);... catch (MeineAusnahme ma) { System.out.println("Fehlercode " + ma.getifehler); System.out.println(ma.getMessage + ma.getdfehler); public class MeineAusnahme extends Exception { private int ifehler; private double dfehler; public FakultaetAusnahme(int i, String grund, double d) { super(grund); this.ifehler = i; this.dfehler = d; public int getifehler() { return this.ifehler; public double getdfehler() { return this.dfehler; Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.12
32 Ausnahmen Grundlagen Syntax Eigene Ausnahmen Fangen Geprüfte Praxis Die finally-klausel Es kann passieren, dass bestimmte Anweisungen auf jeden Fall durchgeführt werden müssen, auch wenn eine Ausnahme geworfen wird. Netzwerkverbindung schließen, Dateien speichern, etc. Dafür gibt es das finally-konstrukt: Es wird immer ausgeführt, egal ob vorher ein passender Handler ausgeführt wurde oder nicht. Beispiel: try { /* Alle Kombinationen der Reihe nach durchprobieren. */ finally { /* Abhauen */ Im [Horstmann] stehen geringfügig sinnvollere Beispiele. Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.13
33 Ausnahmen Grundlagen Syntax Eigene Ausnahmen Fangen Geprüfte Praxis Fangen und Kontrollfluss Die wesentliche Idee hinter Ausnahmen ist die Möglichkeit, eine Ausnahme an einer anderen Stelle im Programm zu behandeln: Beispiel: Die View eines Spiels muss vom Spieler einen Spielzug erfragen. Die View weiß aber nicht, ob der Zug gültig ist. Das Modell setzt den Spielzug um und merkt dabei, dass der Zug ungültig ist. Es wirft eine spezielle Ausnahme. Der Controller fängt die Ausnahme und entscheidet, ob die Spieler neu befragt werden, oder ob ein Standardzug gespielt wird. Fazit: Ohne Ausnahmen müsste das Modell hier immer einen Wert zurückgeben, ob alle Spielzüge gültig waren und wenn nein, welche Probleme aufgetreten sind. Ausnahmen kann man also als zusätzliche Rückgabewerte auffassen, welche implizit nach Oben durchgereicht werden. Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.14
34 Ausnahmen Grundlagen Syntax Eigene Ausnahmen Fangen Geprüfte Praxis Fangen und Kontrollfluss Die wesentliche Idee hinter Ausnahmen ist die Möglichkeit, eine Ausnahme an einer anderen Stelle im Programm zu behandeln: Beispiel: DieDieses View Beispiel eines Spiels soll muss nicht vom sagen, Spieler dass man einenesspielzug so machen erfragen. muss! DieWenn Viewdie weiß Funktion aber nicht, des Modells, ob der Zug welche gültigder ist. Controller aufruft, Das ohnehin Modellnur setzt den den Rückgabetyp Spielzug umvoid und hat, merkt dann dabei, kann dass man der auch Zug ungültig einfachist. diesen Es wirft Rückgabetyp eine spezielle ändern Ausnahme. und nutzen, anstatt eine Ausnahme zu werfen! Der Controller fängt die Ausnahme und entscheidet, ob die Spieler neuausnahmen befragt werden, sind eine oderbequeme ob ein Standardzug Lösung, wenn gespielt manwird. mehr als einen Rückgabetyp benötigt. Der Einsatz von Ausnahmen lässt Fazit: sich immer Ohne Ausnahmen vermeiden! müsste das Modell hier immer einen Wert zurückgeben, ob alle Spielzüge gültig waren und wenn nein, welche Probleme aufgetreten sind. Ausnahmen kann man also als zusätzliche Rückgabewerte auffassen, welche implizit nach Oben durchgereicht werden. Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.14
35 Ausnahmen Grundlagen Syntax Eigene Ausnahmen Fangen Geprüfte Praxis Fehler und Ausnahmen in Java In Java werden verschiedene Arten von Ausnahmen und Fehlern durch verschiedene Unterklassen von Throwable repräsentiert: Instanzen von Error Unbehandelbare, unerwartete Fehler, z.b. Fehler der virtuellen Maschine Instanzen von Exception Vorhersehbare Ausnahmen, welche vom Programmierer zu behandeln sind Instanzen von RuntimeException Häufige Ausnahmen, die nicht behandelt werden müssen. Alle Unterklassen von Exception, welche nicht auch Unterklassen von RuntimeException sind, werden als geprüfte Ausnahmen (engl. checked exception) bezeichnet. Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.15
36 Ausnahmen Grundlagen Syntax Eigene Ausnahmen Fangen Geprüfte Praxis Geprüfte Ausnahmen Überprüfte Ausnahmen (checked exceptions) müssen entweder aufgefangen werden oder explizit als möglich deklariert werden: import java.io.*;... public void m() { throw new IOException(""); Kompilieren führt zu folgender Fehlermeldung: /home/mhofmann/work/teaching/eip/fakt.java:19:\ unreported exception java.io.ioexception; must \ be caught or declared to be thrown throw new IOException(""); ^ Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.16
37 Ausnahmen Grundlagen Syntax Eigene Ausnahmen Fangen Geprüfte Praxis Deklaration überprüfter Ausnahmen Kann in einer Methode eine überprüfte Ausnahme auftreten und wird sie nicht aufgefangen, so muss sie mit throws in der Signatur deklariert werden: import java.io.*;... public void m() throws IOException{ throw new IOException(""); Eine Methode muss eine geprüfte Ausnahme auch dann deklarieren, wenn Sie diese nicht selbst wirft, sondern lediglich eine andere Methode aufruft, welche eine geprüfte Ausnahme werfen könnte. Der Compiler überprüft für uns, dass jede geprüfte Ausnahme irgendwo gefangen wird oder in der Signatur der main-methode als möglich deklariert wurde. Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.17
38 Ausnahmen Grundlagen Syntax Eigene Ausnahmen Fangen Geprüfte Praxis Unchecked Exceptions Ausnahmen, deren Auftreten von Zeit zu Zeit unvermeidlich ist und daher vom Programmierer erwartet werden sollen (z.b. FileNotFoundException) werden überprüft. Ausnahmen, deren Auftreten auf einen Programmierfehler hindeutet, werden nicht überprüft: unchecked exceptions. (Unterklassen von RuntimeException und Error). Prominentes Beispiel ist die NullPointerException: Auftreten ist in Java praktisch überall möglich. Es macht aber wenig Sinn, dies in jeder Methodensignatur hinzuschreiben. Stattdessen ist es Aufgabe des Programmierteams, durch geeignete Klasseninvarianten oder Laufzeitprüfungen (if (a==null)... ) sicherzustellen, dass diese nicht auftreten können. Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.18
39 Ausnahmen Grundlagen Syntax Eigene Ausnahmen Fangen Geprüfte Praxis Ausnahmen nicht missbrauchen Ausnahmen sind ein relativ teurer Mechanismus, welcher nur in Ausnahmesituationen verwendet werden sollte. So bitte nicht: try { while (true) {... if (something) { throw EndLoop(); catch (EndLoop el) { Besser: do {... while (!something); Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.19
40 Ausnahmen Grundlagen Syntax Eigene Ausnahmen Fangen Geprüfte Praxis Mögliche Ausnahmen dokumentieren Auch wenn ungeprüfte Ausnahmen nicht mit throws deklariert werden müssen, ist es gute Stil, mögliche ungeprüfte Ausnahmen im Javadoc zu dokumentieren. Beispiel: Im Javadoc der Methode get von ArrayList wird klar angegeben, dass die ungeprüfte Ausnahme IndexOutOfBoundsException geworfen wird, wenn auf einen nicht vorhandenen Index des Arrays zugegriffen wird. /** * Returns the element at the specified position in this list. * index index of the element to return the element at the specified position in this list IndexOutOfBoundsException {@inheritdoc */ public E get(int index) {... (aus dem Quelltext von java.util.arraylist) Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.20
41 Singleton-Pattern Das Singleton Pattern Manchmal möchte man von einer Klasse nur eine einzige, eindeutige Instanz erzeugen. Es soll nicht möglich sein, mehr als ein Objekt diese Klasse zu erzeugen. Beispiel Ausnahmen bei der Chipkartenprogrammierung. Chipkarten (JavaCard) haben keine Garbage Collection; man muss daher vermeiden, zuviele (Ausnahme-)Objekte zu erzeugen. Idee Klassenvariable speichert das Objekt. Ist die Referenz in der Klassenvariable null, dann wird das Objekt einmal erzeugt. Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.21
42 Singleton-Pattern Durchführung class Fehler extends Exception { private static Fehler instanz = null; private String extragrund; private Fehler() { // Konstruktor ist privat!!! public String getgrund() { return extragrund; private void setgrund(string s) { this.extragrund = s; public static Fehler getinstanz(string s) { if (instanz == null) instanz = new Fehler(); instanz.setgrund(s); return instanz; Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.22
43 Singleton-Pattern Durchführung class Fehler extends Exception { private static Fehler instanz = null; private String extragrund; private Throwable Fehler() vererbt{ bereits ein// String-Attribut, Konstruktor ist privat!!! welches mit getmessage ausgelesen werden kann. public String getgrund() { extragrund ist hier nur zu Demonstrationszwecken eingeführt, wie ein Zustand gespeichert wer- return extragrund; private den kann. void setgrund(string s) { this.extragrund = s; public static Fehler getinstanz(string s) { if (instanz == null) instanz = new Fehler(); instanz.setgrund(s); return instanz; Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.22
44 Singleton-Pattern Durchführung import javax.swing.*; public class Anwendung { public static void main(string[] args) { try { String input = JOptionPane.showInputDialog ("Bitte die Zahl:"); int n = Integer.parseInt(input); if (n < 0) throw Fehler.getInstanz("Negative Zahl " + n); System.out.println(n); System.exit(0); catch (Fehler f) { System.out.println(f.getGrund());main(args); Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.23
45 Zusammenfassung Zusammenfassung Mit throw werden Ausnahmen geworfen. Eine nicht aufgefangene Ausnahme führt zum Programmabbruch. Ausnahmen sind Objekte von Unterklassen von Exception. Mit catch werden Ausnahmen abgefangen. Ein finally Block wird immer ausgeführt, auch wenn der vorangegangene try-block eine Ausnahme wirft. Es gibt vordefinierte Ausnahmen und selbstdefinierte. Es gibt geprüfte und ungeprüfte Ausnahmen. Ausnahmen sinnvoll behandeln, niemals einfach ignorieren. Ausnahmen können als zusätzliche Rückgabewerte aufgefasst werden. Das Singleton Entwurfsmuster besteht darin, von einer Klasse nur einmal eine Instanz zu erzeugen. Martin Hofmann, Steffen Jost Einführung in die Programmierung Ausnahmebehandlung 10.24
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
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
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
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
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
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
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
Algorithmen und Datenstrukturen 07
5. Dezember 2011 1 Besprechung Blatt 6 Fragen 2 Vererbung Allgemein abstract Interfaces 3 Unified Modeling Language (UML) Ablaufdiagramme Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung Blatt 7
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
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
Ü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
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
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
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
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,
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:
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,
3. Konzepte der objektorientierten Programmierung
3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung
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
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
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
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
Software Engineering Klassendiagramme Einführung
Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt
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:
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
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,
Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny 3. UML Klassendiagramm Nachtrag 3.1 Einführung UML UML ist eine standardisierte Sprache zur Modellierung von Systemen. In UML werden graphische
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()
Assoziation und Aggregation
Assoziation und Aggregation Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Nora Koch 05/03 2 Ziele Verstehen der Begriffe Assoziation und Aggregation Implementierung von Assoziationen in Java schreiben
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
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:
Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel
Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel FB Physikalische Technik Musterlösungen Teil 4 Aufgabe 1 package teil4; import javax.swing.*; public class Ei { int haltung, ident; String
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/
einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung
PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 28 Testklasse public class TestGirokonto { public static void main(string[] args) { // erzeuge neues Konto Girokonto einkonto = new Girokonto();
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
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/
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
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
Große Übung Praktische Informatik 1
Große Übung Praktische Informatik 1 2005-12-08 [email protected] http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,
Von der UML nach C++
22 Von der UML nach C++ Dieses Kapitel behandelt die folgenden Themen: Vererbung Interfaces Assoziationen Multiplizität Aggregation Komposition Die Unified Modeling Language (UML) ist eine weit verbreitete
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
Datenbankanwendungsprogrammierung Crashkurs Java
Datenbankanwendungsprogrammierung Crashkurs Java Denny Priebe Datenbankanwendungsprogrammierung p. Unterschiede zu C, C++ typedefs, Präprozessor Strukturen, Unions globale Funktionen Mehrfachvererbung
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
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
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
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 8. Arrays. Arrays
1 Kapitel 8 Ziele 2 Die Datenstruktur der kennenlernen Grundlegende Algorithmen auf in Java implementieren können Mit von Objekten arbeiten können 3 Erweiterungen zur Behandlung von : Überblick Bisher
Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:
EINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12
EINI WiMa/LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund [email protected] http://ls1-www.cs.uni-dortmund.de
Klassenbeziehungen & Vererbung
Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in
Objekt-Orientierte Programmierung
Objekt-Orientierte Programmierung Ein OO-Programm modelliert eine Anwendung als eine Welt von Objekten, die miteinander in Beziehung stehen ( später). Ein Objekt kann andere Objekte erzeugen. Ein Objekt
Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22
Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften
Betreutes Programmieren Vorlesung Informatik II, Blatt 7 Musterlösung
SS 2011 Fakultät für Angewandte Informatik Lehrprofessur für Informatik 15.06.2011 Prof. Dr. Robert Lorenz Betreutes Programmieren Vorlesung Informatik II, Blatt 7 Musterlösung Programmieraufwand für geübte
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
Inhalt: Version 1.7.5
Inhalt: Objekte ohne Methoden Objekte mit einfachen Methoden Objekte und Methoden mit Parametern Objekte und Methoden mit Rückgabewert Objekte mit einem Array als Attribut Beziehungen zwischen Objekten
Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java
Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen
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
SEP 114. Design by Contract
Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit
Klassendiagramm. (class diagram)
: Klassendiagramm http:///topic95.html Klassendiagramm (class diagram) Klassendiagramm Objektdiagramm Komponentendiagramm Kompositionsstrukturdiagramm Verteilungsdiagramm Einstieg Paketdiagramm Aufbau
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
Programmieren - Vererbung & Polymorphie
Programmieren - Vererbung & Polymorphie Reiner Nitsch [email protected] Vererbung - Was ist das? Vererbung ist ein wichtiges Konzept zur Unterstützung der Wiederverwendbarkeit, wenn auch nicht das Wichtigste.
Objektorientierte Programmierung. Kapitel 12: Interfaces
12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/
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
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
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
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:
Beispiel: DB-Mock (1/7)
Beispiel: DB-Mock (1/7) Aufgabe: DB, auf die vereinfachend nur lesend zugeriffen wird mocken warum: benötigte keine DB-Lizenz, garantiert gleiche Werte ohne aufwändiges reset, kein Zeitverlust durch Verbindungsaufbau
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: [email protected] 1. Sei der String s = new String(
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
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
Vorkurs C++ Programmierung
Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:
Code-Erzeugung aus UML-Klassendiagrammen
Dominik 09.03.2009 Universität Ulm Gessenharter Inst. f. Programmiermethodik und Compilerbau Code-Erzeugung aus UML-Klassendiagrammen Theorie und Praxis Seite 2 REConf 2009 München Dominik Gessenharter
Java für Computerlinguisten
Java für Computerlinguisten 2. Objektorientierte Programmierung Christian Scheible Institut für Maschinelle Sprachverarbeitung 28. Juli 2009 Christian Scheible Java für Computerlinguisten 28. Juli 2009
Java für C++ Programmierer
Java für C++ Programmierer Alexander Bernauer [email protected] Einführung in die Übungen zu Informatik II (D ITET) FS2010 ETH Zürich Ziel Allgemeiner Überblick Kennenlernen der Suchbegriffe Warum Java?
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
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.
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
Innere Klassen in Java
Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird
Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten
Objekt Objekt kapselt Variablen und Routinen Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten Eigenschaften jedes Objekts: Identität (identisch = mehrere
4. AuD Tafelübung T-C3
4. AuD Tafelübung T-C3 Simon Ruderich 17. November 2010 Arrays Unregelmäßige Arrays i n t [ ] [ ] x = new i n t [ 3 ] [ 4 ] ; x [ 2 ] = new i n t [ 2 ] ; for ( i n t i = 0; i < x. l e n g t h ; i ++) {
09.01.14. Vorlesung Programmieren. Unified Modeling Language (UML) Unified Modeling Language (UML) Unified Modeling Language (UML)
Vorlesung Programmieren Unified Modeling Language (UML) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Unified Modeling Language (UML)
Vorlesung Programmieren
Vorlesung Programmieren Unified Modeling Language (UML) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Unified Modeling Language (UML)
Musterlösungen zur Klausur Informatik 3
Musterlösungen zur Klausur Informatik 3 Justus-Liebig-Universität Gießen Wintersemester 2003/2004 Aufgabe 1 (6 Punkte) Man kreuze bei den folgenden Deklarationen und Definitionen jeweils an, ob sie aus
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
Themen. Web Service - Clients. Kommunikation zw. Web Services
Themen Web Service - Clients Kommunikation zw. Web Services Bisher: Implementierung einer Java Anwendung und Bereitstellung durch Apache Axis unter Apache Tomcat Java2WSDL Erzeugen einer WSDL-Datei zur
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
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
Übung 1 mit C# 6.0 MATTHIAS RONCORONI
Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,
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
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
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.
Einführung in die Programmierung mit Java. Hörsaalübung
Einführung in die Programmierung mit Java Hörsaalübung Folie 1 Grundlagen der Objektorientierung Seit Anfang der Neunzigerjahre Standardmethode der Softwareentwicklung. Die OOP Objektorientierte Programmierung
Java - Programmierung - Objektorientierte Programmierung 1
Java - Programmierung - Objektorientierte Programmierung 1 // Klassen und Objekte public class KlaObj public static void main(string args []) Klasse1 a; a = new Klasse1("heute", 47); Klasse1 b = new Klasse1
Abschnitt 9: Schnittstellen: Interfaces
Abschnitt 9: Schnittstellen: Interfaces 9. Schnittstellen: Interfaces 9.1 Die Idee der Schnittstellen 9.2 Schnittstellen in Java 9.3 Marker-Interfaces 9.4 Interfaces und Hilfsklassen 9.5 Zusammenfassung
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
DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung
DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung Aufgabe Editor package BA.GUI.Swing; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.logging.level; import java.util.logging.logger;
