Java Schulung. Objektorientierte Programmierung in Java Teil II: Java Grundlagen und Syntax. Prof. Dr. Nikolaus Wulff

Größe: px
Ab Seite anzeigen:

Download "Java Schulung. Objektorientierte Programmierung in Java Teil II: Java Grundlagen und Syntax. Prof. Dr. Nikolaus Wulff"

Transkript

1 Java Schulung Objektorientierte Programmierung in Java Teil II: Java Grundlagen und Syntax Prof. Dr. Nikolaus Wulff

2 Agenda: Java Grundlagen Java Syntax Java Datentypen Kontrollstrukturen Klassen und Objekte Überschreiben/Überladen von Methoden Sichtbarkeit Behandlung von Ausnahmen (Exceptions) Die wichtigsten Java Pakete Prof. Dr. Nikolaus Wulff 2

3 Abstrakte Datentypen Klassen sind die logische Erweiterung des Konzepts des ADT. In prozeduralen Sprachen werden ADT's durch Records (Pascal), Structs (C), Common-Blöcke (Fortran) oder Copy-Strecken (Cobol/PL1) realisiert. Dies sind jedoch lediglich reine Datencontainer. In der Objektorientierung werden diese ADT's um die Deklaration der möglichen, erlaubten Manipulationen erweitert. Klasse Daten + Methoden Ein Objekt ist eine Instanz einer Klasse Der entsprechende Speicherplatz für die Daten ist alloziiert und die Methoden können auf diese zugreifen. Prof. Dr. Nikolaus Wulff 3

4 Kapselung Kapselung Kapselung bedeutet, daß auf alle nicht exportierten Eigenschaften eines Objekts von außen nicht direkt zugegriffen werden kann. Wird die konkrete Repräsentation des Zustands verborgen, spricht man auch vom Geheimnisprinzip (Information Hiding, nach [Parnas72]). Kapselung heißt auch, daß die Signatur und das abstrakte Verhalten einer Operation bekannt ist, die Implementation aber verborgen bleibt. Nicht alle oo Programmiersprachen realisieren die Kapselung von Zustand und Implementationen geeignet. Prof. Dr. Nikolaus Wulff 4

5 Eine Klasse in Java Blockanfang public class Sparbuch { public void auszahlen( float betrag ) {... } public void einzahlen( float betrag ) {... } public void berechnezinsen() {... } } private float saldo; private float zinssatz; Blockende Für jede Klasse wird in Java eine eigene Datei angelegt. Beispiel: Sparbuch.java Operationen, (Methoden, Routinen) Attribute Prof. Dr. Nikolaus Wulff 5

6 Hauptprogramm Die Virtual-Machine wird unter Angabe eines Klassennamens gestartet. In dieser Klasse wird nach einer statischen Operation mit eine bestimmten Signatur gesucht, nämlich: public static void main(string[] args). Eine solche Operation kann es auch mehrfach in unterschiedlichen Klassen geben. Je nachdem welches main() gestartet werden soll, wird der entsprechende Klassenname der Virtual-Maschine übergeben. public class HelloWorld { public static void main(string[] args) { System.out.println("Hello, world"); } } Prof. Dr. Nikolaus Wulff 6

7 Konstruktoren Um dem Programmierer zu ermöglichen, die Initalisierung der Variablen eines Objekts zu beeinflussen, gibt es in Java die Möglichkeit, sogenannte Konstruktoren zu vereinbaren. Sie werden automatisch aufgerufen, wenn ein Objekt erzeugt wird. Konstruktoren sind Operationen, die den gleichen Namen wie die Klasse haben. Einschränkungen Konstruktoren dürfen keinen Rückgabetyp besitzen. "Nicht einmal" void. Sie können vom Programmierer nicht explizit aufgerufen werden. Sie werden vom Compiler automatisch eingefügt, sobald er auf eine Codezeile trifft, in der ein neues Objekt erzeugt wird. Prof. Dr. Nikolaus Wulff 7

8 Objekte erzeugen Objekte müssen zur Laufzeit durch einen expliziten Ausdruck erzeugt werden. Dazu wird der Konstruktor mit dem Schlüsselwort new verwendet. Sparbuch einurlaubssparbuch = new Sparbuch(); Sparbuch einnotgroschen = new Sparbuch(); Wird eine Variable mit dem Typ einer Klasse deklariert, so hat sie solange den Initialwert null, bis ihr ein Objekt zugewiesen wird. Sparbuch einurlaubssparbuch; // null Sparbuch einnotgroschen; // null einurlaubssparbuch = new Sparbuch(); einnotgroschen = einurlaubssparbuch; Prof. Dr. Nikolaus Wulff 8

9 Schlüsselworte Beachte: case-sensitive! abstract default if private throw boolean do implements protected throws break double import public transient byte else instanceof return try case extends int short void catch final interface static volatile char finally long super while class float native switch const* for new synchronized continue goto* package this * momentan nicht genutzt Keine Schlüsselworte: true, false, null Neu ab JDK1.4: assert Neu ab JDK1.5: enum Prof. Dr. Nikolaus Wulff 9

10 Java Konventionen Bezeichner: Neue Wörter beginnen mit Großbuchstaben. Keine Unterstriche zur Trennung verwenden. Also nicht drucke_kunden, sondern druckekunden. Klassennamen beginnen mit einem Großbuchstaben, z.b. Girokonto. Operationsnamen beginnen mit einem Kleinbuchstaben, z.b. zahleein. Einige Entwickler lassen Attributnamen mit einem Unterstrich beginnen, z.b. _saldo. (Aber bitte einheitlich!) Nach jeder öffnenden und vor jeder schließenden geschweiften Klammer eine neue Zeile beginnen. Optional: Vor jeder öffnenden geschweiften Klammer eine neue Zeile beginnen. Nach jeder öffnenden geschweiften Klammer eine Einrückung vornehmen. Vor der schließenden geschweiften Klammer diese Einrückung wieder zurücknehmen. Pro Anweisung eine Zeile. Moderne IDE's ermöglichen automatische Formatierung. Prof. Dr. Nikolaus Wulff 10

11 Java Bean Konvention In Java werden Attribute durch getxxx und setxxx Operationen gelesen bzw. gesetzt. Arrays werden entsprechend mit getxxx(int index) und setxxx(int index, Object val) angesprochen. Für boolean Attribute kann optional auch die Operation isxxx statt getxxx verwendet werden. Tools (IDE's und Generatoren) sowie die Java Reflection API verwenden diese Konvention! D.h. eine Klasse mit einer Eigenschaft XYZ hat eine entsprechende public XYZ getxyz() Methode für den lesenden Zugriff und eine public void setxyz (XYZ v) Methode für schreibenden Zugriff. Diese Namenskonvention ist für den Entwickler bindend (insbesondere set und get, gibx und setzex ist nicht konform!). Prof. Dr. Nikolaus Wulff 11

12 Elementare Typen Imperative und objektorientierte Programmiersprachen bieten i.d.r. einen Satz elementarer Typen an: Natürliche Zahlen (Integer) reale Zahlen (Float oder Real) Zeichen (char) und Wahrheitswerte (boolean). Java verfügt über eine Reihe von elementaren Typen (basic oder primitive types): int, short, long, float, double, byte, boolean und char. Der Typ einer Variable legt fest die Wertemenge (z.b. int nur ganze Zahlen) und die zulässigen Operationen (z.b. int Addieren, Subtrahieren) Prof. Dr. Nikolaus Wulff 12

13 Basisdatentypen und Literale Wahrheitswerte (boolean): Konstanten: true, false Zeichen (char): Konstanten: o, \t, \u78ab (Unicode hexadezimal) Zeichenketten (String): Konstanten: Hallo, Hello + + World\n ganze Zahlen: Konstanten: 47, 47890L (long), 077 (oktal), 07777L (oktal long), 0x89ab (hexadezimal), 0XC0B0L (hex long) Fließkommazahlen: Escape Sequenzen Konstanten: 3.141F, 6.02E23, 6.02E23F, 6.02E23D \ b /* backspace */ \ t /* horizontal tab */ \ n /* line feed */ \ f /* form feed */ \ r /* carriage return */ \ " /* double quote " */ \ ' /* simple quote ' */ \ \ /* backslash \ */ Prof. Dr. Nikolaus Wulff 13

14 Die numerischen Datentypen numerische Datentypen: Jede prozedurale Programmierspache bietet elementaren numerischen Datentypen mit den zugehörigen Operationen an. Die Wertebereiche dieser Datentypen sind meist maschinenabhängig, was die Übertragbarkeit von Programmen erschwert. In Java sind die elementaren Datentypen systemunabhängig festgelegt. Typ Größe Wertebereich byte 1 Byte -128 bis 127 short 2 Bytes bis int 4 Bytes bis long 8 Bytes bis float 4 Bytes 1, *10-45 bis 3, *10 38 double 8 Bytes 4, * bis 1, * Prof. Dr. Nikolaus Wulff 14

15 Basisdatentypen vs. Klassen (1) Für einige Typen existieren sowohl Basisdatentypen als auch Klassen, z.b. int (Basisdatentyp) und Integer (Klasse). Auf den Basisdatentypen sind mathematische Operationen vordefiniert, z.b. +, -, *, \. Die Klassen bieten weitere Methoden zur Manipulation an, z.b. Integer.parseInt( 89 ) zum Umwandeln einer Zeichenkette in eine Zahl. Werte der Basisdatentypen sind keine Objekte (Superklasse Object) und können daher an einigen Stellen nicht verwendet werden. Beispiele: Vector, Hashtable. Vector v = new Vector(); // Vektor von Objekten v.addelement(1); // Fehler 1 ist kein Objekt v.addelement(new Integer(1)); // o.k. Seit JDK1.5 gibt es autboxing 1 wird in Integer(1) verwandelt und addelement(1) funktioniert automatisch... Prof. Dr. Nikolaus Wulff 15

16 Basisdatentypen vs. Klassen (2) Literale evaluieren zu Werten von Basisdatentypen, z.b. 1 zu int. Ausnahme: Zeichenketten werden zu Objekten der Klasse String. Objekte müssen explizit angelegt werden, z.b. new Integer(1). Prof. Dr. Nikolaus Wulff 16

17 Basisdatentypen vs. Klassen (3) Unterschiede beim Vergleich (Wertgleichheit vs. Objektidentität): 1 == 1 new Integer(1)!= new Integer(1) Unterschiede bei der Zuweisung (Kopie vs.referenz): int a = 75; int b = 100; b = a; a = 200; // b == 75 // a!= b Integer a = new Integer(75); Integer b = new Integer(100); b = a; // Objektreferenz wird geändert a.setint(200); // b.intvalue() == 200 // a == b a b a b a b (2) (1) a b (3) 200 Prof. Dr. Nikolaus Wulff 17

18 Operatoren Operator Funktion, arithmetisch * Multiplikation / Division % Modulo + Addition - Subtraktion ++ Inkrement -- Dekrement Der Gleichheitstest wird häufig mit der Operator ==!= = Funktion Gleichheit Ungleichheit Zuweisung Operator Zuweisung verwechselt saldo = 0; // Zuweisung saldo == 0; // Gleichheit saldo!= 0; // Ungleichheit Die Zuweisung liefert in Java ein Ergebnis: int i, j; i = j = 0; Redundante Operatoren: Funktion, boolesche logisches NICHT (NOT) kleiner als kleiner als oder gleich größer als größer als oder gleich logisches UND (AND) logisches ODER (OR) // Auswertung von rechts // nach links saldo++; saldo = saldo + 1; Prof. Dr. Nikolaus Wulff 18! < <= > >= &&

19 Operationen mit Basisdatentypen Zusammenziehen von Operationen und Zuweisungen möglich: sum = sum + count sum = sum + 1 Operationen mit Seiteneffekt: sum++ sum += count (a!= 0) & ((100 / a) > 10) u.u. Division durch 0 Short Circuit (&& und ): boolscher Ausdruck wird nur solange ausgewertet, bis das Ergebnis feststeht: (a!= 0) && ((100 / a) > 10) immer o.k. Prof. Dr. Nikolaus Wulff 19

20 Variablen und Konstanten Vor ihrer Verwendung müssen Variablen und Konstanten bekanntgemacht, d.h. deklariert werden. Das kann an jeder beliebigen Stelle im Source-Code geschehen: Angabe des Typs, der die Wertemenge und die zulässigen Operationen bestimmt, Nennung ihres Bezeichners. Vom Laufzeitsystem wird jede Variable mit einem standardisierten Initialwert belegt. Optional kann bei der Deklaration ein Initialwert zugewiesen werden. Syntax in Java: <VarDeklaration> := <Typ> <Bezeichner> Beispiel: int i; double d = 1.123; char c = 'a'; Eine Konstante wird mit dem Schlüsselwort final deklariert. Bei der Deklaration muß der Wert der Konstanten angegeben werden. Beispiel: final int i = 10; final double pi = ; final char a = 'a'; Prof. Dr. Nikolaus Wulff 20

21 Attribute Ein Attribut wird in der Klasse im Anschluß an die Operationen oder vor den Operationen deklariert (Wichtig: einheitliche Konvention im Projekt!). Dies geschieht durch: Festlegung der Sichtbarkeit, Angabe des Typs, Nennung ihres Bezeichners. Über die Sichtbarkeit wird festgelegt, ob und wer von Außen auf die Exemplarvariable zugreifen darf (näheres später). Auch die Exemplarvariablen können mit einem Initialwert versehen werden. Syntax in Java: <VarDeklaration> := <Sichtbarkeit> <Typ> <Bezeichner> Beispiel: private float zinssatz; private float saldo = 0.0; Prof. Dr. Nikolaus Wulff 21

22 Array Datentyp, der eine Menge von Elementen des gleichen Typs (Elementtyp) repräsentiert. Die Anzahl der Elemente ist fest und heißt Länge des Array. Der Name einer Array-Variablen bezeichnet den gesamten Array. Ein einzelnes Array-Element wird durch eine Nummer (Index) identifiziert. Ein Index ist eine ganze Zahl zwischen 0 und (Länge - 1). Arrays sind Objekte, es gibt aber keine explizite Array-Klasse(!) die Größe wird bei Erzeugung des Array-Objektes zur Laufzeit festgelegt. Eine dynamische Größenänderung ist nicht möglich. Die Länge des Arrays kann mit length ermittelt werden. length ist keine Operation, sondern eine Art Read-Only-Attribut. a a[i] 0 i N-1 Index Länge = N Prof. Dr. Nikolaus Wulff 22

23 Beispiel: Array public class Liste { private int[] array; private int anzahl; public Liste() { array = new int[10]; anzahl = 0; } public void elementhinzufügen(int e){ array[anzahl++] = e; }... Array des Typs int deklarieren, ohne Angabe der Arraygröße Erzeugen des Array-Objektes Zuweisung auf ein Element des Arrays } Prof. Dr. Nikolaus Wulff 23

24 Operationen Die nach Außen sichtbare Schnittstelle eines Objektes wird durch seine möglichen Operationen bestimmt. Der Aufruf einer Operation wird häufig auch Nachricht oder Botschaft genannt. Beispiel: Der EventService sendet die Nachricht aktualisierepostkorb an die Postkorb Instanz des Benutzers. Manchmal werden Operationen auch (etwas künstlich) in Prozeduren und Funktionen unterteilt. Prof. Dr. Nikolaus Wulff 24

25 Deklaration von Prozeduren Prozeduren sind verändernde bzw. manipulierende Operationen, die den Zustand des Objektes, mit dem sie gerufen werden, verändern. Eine Operation wird in Java dadurch als Prozedur gekennzeichnet, daß ihre Deklaration mit void eingeleitet wird. nach Außen sichtbar benutzerdefinierter Bezeichner für die Prozedur (in Java kleingeschrieben) public void einzahlen(float betrag ); Prozeduren liefern keinen Rückgabewert Parametername formaler Parameter vom Typ float Werden mehrere Parameter angegeben, muß für jeden Parameter der Typ mitgegeben werden. Die Parameter werden durch Komma getrennt. public void setzekonditionen(float habenzins, float sollzins); Prof. Dr. Nikolaus Wulff 25

26 Deklaration von Funktionen Funktionen sind sondierende Operationen, die den Zustand des Objektes, mit dem sie gerufen werden, nicht verändern dürfen. Der Funktionsname steht - im Unterschied zu einem Prozedurnamen - nicht nur für eine Anweisungsfolge, sondern auch für einen (Ergebnis-) Wert von einem vereinbarten (Ergebnis-) Typ. Funktionen können deshalb als Teil von Ausdrücken verwendet werden. Das Funktionsergebnis wird explizit (mittels der return Anweisung) zurückgegeben. Rückgabetyp float benutzerdefinierter Bezeichner für die Funktion public float gibsaldo( ); nach Außen sichtbar diese Funktion hat keine Parameter Prof. Dr. Nikolaus Wulff 26

27 Klassenimplementation Die Implementation einer Java-Klasse wird mit der Definition zusammen in derselben Datei.java durchgeführt. Beispiel: Sparbuch.java public class Sparbuch { private float saldo = 0; public void einzahlen(float wert){ this.saldo += wert; } public float getsaldo() { return this.saldo; } Für jedes Argument in der Liste der Parameter wird gesondert der Typ angegeben. Eine Funktion gibt ihren Rückgabewert mit return zurück. Wo immer im Code der Funktion die return- Anweisung steht, wird die Funktion verlassen. Prof. Dr. Nikolaus Wulff 27

28 Kommentare Einzeiliger Kommentar: r = p % q; // Rest berechnen Mehrzeiliger Kommentar: /* in den Zeilen nach diesem Kommentar wird der Rest einer Division berechnet */ r = p % q; Kommentare sind ein wichtiger Bestandteil eines Programms. Mittels JavaDoc wird eine HTML Dokumentation generiert. Dies erleichtert das Verständniss und die Wartbarkeit. Durch entsprechende Tools, wie z.b. Jalopy, lassen sich Regel zur Dokumentation einhalten. Kommentare immer eine logische Abstraktionsebene höher als der Code. Nicht: b = (a / 100) * 16; // 16% von a berechnen Sondern: b = (a / 100) * 16; // MWSt. berechnen Prof. Dr. Nikolaus Wulff 28

29 Ausnahmen Was passiert bei fehlerhaften Abläufen? Beispielsweise: Parameter haben falsche oder inkonsistente Werte. Bedingungen gelten nicht. Es fehlen Werte. int teile(int a, int b) { if (b == 0) { /*??? */ } else return a / b; } Was soll hier passieren? Rückgabe von Fehlerwerten (0, -1, null, "", "ERROR") nicht empfehlenswert, weil bei jedem Aufruf eine Prüfung erfolgen muss: int ergebnis = teile(8, 0); if (ergebnis == 0) { /* Fehler */ } else... Prof. Dr. Nikolaus Wulff 29

30 Erzeugung von Ausnahmen Ausnahme bedeutet: Die Bearbeitung kann nicht ordnungsgemäß fortgesetzt werden. Eine Ausnahme ist ein Objekt. Auslösen einer Ausnahme: Konstruktor if (b == 0) throw new ArithmeticException(); Ausnahmen können Parameter erhalten, wie bei jedem Konstruktor: Parameter if (t == null) throw new NullPointerException("t==null"); Mit dem throw Konstrukt wird der aktuelle Programmfluß unterbrochen und die Methode verlassen. Prof. Dr. Nikolaus Wulff 30

31 Ausnahmebehandlung try {... Block, der evtl. Ausnahmen auslöst } catch(exceptiontyp1 e1) {... Behandle die Ausnahmen des Typs ExceptionTyp1 } catch(exceptiontyp2 e2) {... Behandle die Ausnahmen des Typs ExceptionTyp2 } Beispiel try { throw new Exception("Here's my Exception"); } catch(exception e) { e.printstacktrace(); } Prof. Dr. Nikolaus Wulff 31

32 Einfangen von Ausnahmen Alle eigenen Ausnahmen werden von der Klasse Exception abgeleitet. MyException1 MyException11 Exception MyException2 try {... } catch(myexception1 e) {... Behandle die Ausnahmen des Typs MyException1und der Subklassen } catch(exception e) { Behandle... alle weiteren Ausnahmen Achtung: Beim Einfangen einer Ausnahme einer bestimmten Klasse werden auch alle Ausnahmen von Subklassen eingefangen. } Prof. Dr. Nikolaus Wulff 32

33 Ausnahme-Klassenhierarchie Alle Ausnahmen müssen behandelt werden (in try-catch-blöcken), bis auf Ausnahmen der Klasse RuntimeException und deren Subklassen. Systemfehlermeldungen sind von der Klasse Error abgeleitet. Throwable Exception Error MyException RuntimeException NullPointerException IlegalArgumentException Prof. Dr. Nikolaus Wulff 33

34 Die if-else-anweisung Beispiel 1: if (x < 0) y = -1; else if (x > 0) y = 1; else y = 0; Beispiel 2: if (x > 0) if (x == 42) y = 4711; else y = 0; Beispiel 3: if (x > 0) { if (x == 42) { y = 4711; } else { y = 0; } } if (expression) statement-1; else statement-2; Vorsicht bei geschachtelten if-anweisungen: ein else- Zweig bezieht sich immer auf die letzte if-anweisung ohne else-zweig. Explizite Klammerung hilft, Fehler zu vermeiden! Prof. Dr. Nikolaus Wulff 34

35 Die for-schleife Beispiel 1: for (init-statement; expression-1; expression-2) statement; int fak; for (fak=6; n > 1; n--) { fak = fak * (n - 1) } Beispiel 2: for (;;) { /* looping forever... */ } Vergleiche eine saubere For-Schleife: r := 0; FOR i := 1 TO 99 BY 2 DO r := r + i END; Bei Eintritt in die for-schleife kann keine feste Anzahl von Durchläufen garantiert werden, da der Wert der Laufvariablen innerhalb des Rumpfes der for-anweisung verändert werden darf. Da expression-2 ein beliebiger Ausdruck sein kann, ist nicht gewährleistet, daß die Laufvariable bei jedem Durchlauf erhöht bzw. erniedrigt wird. Da expression-1 ein beliebiger Ausdruck sein kann, ist nicht einmal gewährleistet, daß die Steuerung und der Abbruch der Schleife überhaupt mit Hilfe einer Laufvariablen erfolgt. Prof. Dr. Nikolaus Wulff 35

36 Beispiel Wir schreiben ein Programm zur Berechnung der Fakultät. Ziele: Anwenden der for-schleife und des if-konstrukts. Kennenlernen des rekursiven Methodenaufruf. Implementierung einer Fehlerbehandlung. Def.: a) als Produkt n n! := k k=1 b) per Rekursion 1! := 1 n! := n*(n-1)! Prof. Dr. Nikolaus Wulff 36

37 Die switch-anweisung Beispiel: ch = a ; switch ( ch ) case label { case A : case a : a_counter++; break; case E : case e : e_counter++; break; case I : case i : i_counter++; break; case O case o : o_counter++; break; case U : case u : i_counter++; break; }; default: consonant_counter++; break; Als case label verwenden wir Konstanten vom Typ int, long oder char. Was passiert, wenn die break-anweisung fehlt? zwei case label denselben Wert haben? keiner der Fälle zutrifft und die default-anweisung fehlt? Prof. Dr. Nikolaus Wulff 37

38 Die while- und do-schleife Beispiel einer while-schleife: r = p % q; while (r!= 0) { p = q; q = r; r = p % q; } Dasselbe Beispiel als do-schleife: r = p % q; if (r!= 0) do { p = q; q = r; r = p % q; } while (r!= 0); while-schleifen lassen sich immer als do-schleifen formulieren. while (expression) statement; do statement; while (expression) Vorsicht: die do-schleife ist genau wie die while-schleife eine Solange- Noch Schleife. Der Schleifenkörper wird ausgeführt, solange die Wiederholungsbedingung noch gültig ist. while-schleifen testen die Wiederholungsbedingung vor dem ersten Durchlauf. Ungeschützte do-schleifen laufen vor dem Test mindestens einmal durch. Prof. Dr. Nikolaus Wulff 38

39 Konvertierungen Automatisch short nach int int nach long long nach float float nach double String Automatische Konvertierung mit + Operator. Z.B DM DM DM Manuelle Konvertierungen Explizit casten Z.B.: double d = 1.23; float f = (float) d; Prof. Dr. Nikolaus Wulff 39

40 Werkzeuge im JDK Falls keine IDE zur Verfügung steht... Java - Interpreter führt Java-Byte-Code aus. Javac - Compiler für Java-Programme. Übersetzt Java-Quellcode in Java-Byte-Code. Jdb - Kommandozeilen-Debugger. Javap - Disassembler für Java-Byte-Code. Javadoc - Erzeugt Dokumentation zu Java-Klassen in HTML. Appletviewer - Führt Applets aus. Java-Quellen haben die Endung.java. Java-Byte-Code hat die Endung.class. Prof. Dr. Nikolaus Wulff 40

41 JavaDoc Die Dokumentation gehört - ebenso wie lauffähige Tests - zur Qualitätssicherung eines jeden Projekts! Dokumentation kann durch Meta-Tags angereichert werden. Notwendige Kommentarform: /** Dr. Nikolaus Wulff */ Weitere mögliche Meta-Tags, die von JavaDoc @exception Prof. Dr. Nikolaus Wulff 41

42 Die JDK API als JavaDoc Packages Klassenbeschreibung Klassen Prof. Dr. Nikolaus Wulff 42

43 Beispiel Entwickelung eines Taschenrechners. Er bietet die vier grundlegenden Operationen +,-,*,/, die als Zeichen oder Text (add, sub, mult, div) eingegeben werden können. Die Ein- und Ausgabe erfolgt per Console. Prof. Dr. Nikolaus Wulff 43

44 Beispiel Taschenrechner Ziele: Anwenden des switch-case Konstrukts. Verwendung von Arrays. Auswerten der Kommandozeile Erweiterung der Fehlerbehandlung durch das Konzept der Assertions. Erstellung einer Dokumentation mit Javadoc. Prof. Dr. Nikolaus Wulff 44

45 Hinweis Trennen Sie das Parsen der Kommandozeile von der Berechnung. Verzweigen Sie in die eigentliche Berechnung mit einem switchcase Konstrukt. Zur Typumwandlung von String nach double die Klasse java.lang.double verwenden. In JavaDoc nachschauen... Geben Sie eine Fehlermeldung bei falschen Argumenten aus. Prof. Dr. Nikolaus Wulff 45

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff Programmieren in C C Syntax Datentypen, Operatoren und Kontrollstrukturen Prof. Dr. Nikolaus Wulff Elementare Typen Imperative und objektorientierte Programmiersprachen bieten i.d.r. einen Satz elementarer

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

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

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:

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White

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 Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3. Hello World Javakurs 2014, 1. Vorlesung Sebastian Schuck basierend auf der Vorlage von Arne Kappen wiki.freitagsrunde.org 3. März 2014 This work is licensed under the Creative Commons Attribution-ShareAlike

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

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

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

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7 Java 7 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Dezember 2011 JAV7 5 Java 7 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

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

Erwin Grüner 09.02.2006

Erwin Grüner 09.02.2006 FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

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

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

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

Javakurs zu Informatik I. Henning Heitkötter

Javakurs zu Informatik I. Henning Heitkötter Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,

Mehr

Computeranwendung und Programmierung (CuP)

Computeranwendung und Programmierung (CuP) Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag

Mehr

Vorkurs C++ Programmierung

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:

Mehr

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm

Mehr

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen Teil 5 - Java Programmstruktur Operatoren Schlüsselwörter Datentypen 1 Kommentare in Java In Java gibt es drei Möglichkeiten zur Kommentierung: // Kommentar Alle Zeichen nach dem // werden ignoriert. für

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

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/

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

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:

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 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

Mehr

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind

Mehr

Tutorium Rechnerorganisation

Tutorium Rechnerorganisation Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

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

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

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff Programmieren in C Felder, Schleifen und Fließkommaarithmetik Prof. Dr. Nikolaus Wulff Addition von Zahlen 1 2 3 4 5 #include int main() { int x,y,z,sum; x = 1; y = 2; z = 4; sum = x + y + z;

Mehr

Modul 122 VBA Scribt.docx

Modul 122 VBA Scribt.docx Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval

Mehr

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Diana Lange. Generative Gestaltung Operatoren

Diana Lange. Generative Gestaltung Operatoren Diana Lange Generative Gestaltung Operatoren Begriffserklärung Verknüpfungsvorschrift im Rahmen logischer Kalküle. Quelle: google Operatoren sind Zeichen, die mit einer bestimmten Bedeutung versehen sind.

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

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

Übersicht Programmablaufsteuerung

Übersicht Programmablaufsteuerung Übersicht Programmablaufsteuerung Konditionale Verzweigung: if - else switch-anweisung Schleifenkonstrukte: while, do - while for Schleife Sprung-Anweisungen: break, continue, goto, return Anweisungen

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

Java Einführung Operatoren Kapitel 2 und 3

Java Einführung Operatoren Kapitel 2 und 3 Java Einführung Operatoren Kapitel 2 und 3 Inhalt dieser Einheit Operatoren (unär, binär, ternär) Rangfolge der Operatoren Zuweisungsoperatoren Vergleichsoperatoren Logische Operatoren 2 Operatoren Abhängig

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 C++ Programmierung für Ingenieure

Einführung in die C++ Programmierung für Ingenieure Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 14. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen Grundlagen der Programmierung Prof. H. Mössenböck 3. Verzweigungen If-Anweisung n > 0? j n if (n > 0) x = x / n; ohne else-zweig x x / n j max x x > y? n max y if (x > y) max = x; else max = y; mit else-zweig

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

Datentypen. Agenda für heute, 4. März, 2010. Pascal ist eine streng typisierte Programmiersprache

Datentypen. Agenda für heute, 4. März, 2010. Pascal ist eine streng typisierte Programmiersprache Agenda für heute, 4. März, 2010 Zusammengesetzte if-then-else-anweisungen Datentypen Pascal ist eine streng typisierte Programmiersprache Für jeden Speicherplatz muss ein Datentyp t (Datenformat) t) definiert

Mehr

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

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

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz 4.5. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz 4.5. www.kit.edu. Institut für Angewandte Informatik Programmieren I Kontrollstrukturen Heusch 8 Ratz 4.5 KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Arten von Kontrollstrukturen

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2010/11 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Wiederholungen - while - do-while - for

Mehr

Objektbasierte Entwicklung

Objektbasierte Entwicklung Embedded Software Objektbasierte Entwicklung Objektorientierung in C? Prof. Dr. Nikolaus Wulff Objektbasiert entwickeln Ohne C++ wird meist C im alten Stil programmiert. => Ein endlose while-schleife mit

Mehr

Einführung in die C-Programmierung

Einführung in die C-Programmierung Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).

Mehr

Excel Funktionen durch eigene Funktionen erweitern.

Excel Funktionen durch eigene Funktionen erweitern. Excel Funktionen durch eigene Funktionen erweitern. Excel bietet eine große Anzahl an Funktionen für viele Anwendungsbereiche an. Doch es kommt hin und wieder vor, dass man die eine oder andere Funktion

Mehr

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen Programmieren 10. Tutorium 4./ 5. Übungsblatt Inhalt I. Übungsblatt 4 II. III. - Rückgabe und Besprechung - Vorbereitung auf Wiederholung/ Nachtrag - Operatorpräzedenzen IV. Übungsblatt 5 - Vorstellung

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)

Mehr

SEP 114. Design by Contract

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

Mehr

3. Java - Sprachkonstrukte I

3. Java - Sprachkonstrukte I Namen und Bezeichner Ein Programm (also Klasse) braucht einen Namen 3. Java - Sprachkonstrukte I Namen und Bezeichner, Variablen, Zuweisungen, Konstanten, Datentypen, Operationen, Auswerten von Ausdrücken,

Mehr

Die Programmiersprache C99: Zusammenfassung

Die Programmiersprache C99: Zusammenfassung Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 7. Dezember 2010, 19:30 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.youtube.com/joernloviscach

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

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 4 Einführung in die Programmiersprache Java (Teil II)... 4-2 4.4 Strukturierte Programmierung... 4-2 4.4.1 Strukturierung im Kleinen... 4-2 4.4.2 Addierer (do-schleife)... 4-3 4.4.3 Ein- Mal- Eins

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

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Klausur zur Einführung in die objektorientierte Programmierung mit Java Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-

Mehr

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests. Universität Osnabrück 1 Problemstellung 3 - Objektorientierte Programmierung in Java Vorlesung 24: Reflection 1 SS 2006 Prof. Dr. Frank M. Thiesing, FH Osnabrück Um ein Objekt anzulegen, eine seiner Methoden

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

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

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

3. Java - Sprachkonstrukte I

3. Java - Sprachkonstrukte I Lernziele 3. Java - Sprachkonstrukte I Namen und Bezeichner, Variablen, Zuweisungen, Konstanten, Datentypen, Operationen, Auswerten von Ausdrücken, Typkonversionen Sie kennen die grundlegensten Bausteine

Mehr

Kontrollstrukturen - Universität Köln

Kontrollstrukturen - Universität Köln Kontrollstrukturen - Universität Köln Mario Manno Kontrollstrukturen - Universität Köln p. 1 Was sind Sprachen Auszeichnungssprachen HTML, XML Programmiersprachen ASM, Basic, C, C++, Haskell, Java, Pascal,

Mehr

Übungsblatt 3: Algorithmen in Java & Grammatiken

Übungsblatt 3: Algorithmen in Java & Grammatiken Humboldt-Universität zu Berlin Grundlagen der Programmierung (Vorlesung von Prof. Bothe) Institut für Informatik WS 15/16 Übungsblatt 3: Algorithmen in Java & Grammatiken Abgabe: bis 9:00 Uhr am 30.11.2015

Mehr

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"

Mehr

PHP 5.4 ISBN 978-3-86249-327-2. Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012. Grundlagen zur Erstellung dynamischer Webseiten GPHP54

PHP 5.4 ISBN 978-3-86249-327-2. Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012. Grundlagen zur Erstellung dynamischer Webseiten GPHP54 PHP 5.4 Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012 Grundlagen zur Erstellung dynamischer Webseiten ISBN 978-3-86249-327-2 GPHP54 5 PHP 5.4 - Grundlagen zur Erstellung dynamischer Webseiten

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Zusammenfassung Was ist eine Programmiersprache? Eine Sprache, die Formal eindeutig in Maschinenbefehle übersetzbar ist Für Menschen einfacher verständlich ist als Bytecode Zur Formulierung von Datenstrukturen

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte

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

Wo sind wir? Übersicht lexikale Struktur von Java

Wo sind wir? Übersicht lexikale Struktur von Java Wo sind wir? Java-Umgebung Lexikale Konventionen Datentypen Kontrollstrukturen Ausdrücke Klassen, Pakete, Schnittstellen JVM Exceptions Java Klassenbibliotheken Ein-/Ausgabe Collections Threads Applets,

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

Programmierung in C. Grundlagen. Stefan Kallerhoff

Programmierung in C. Grundlagen. Stefan Kallerhoff Programmierung in C Grundlagen Stefan Kallerhoff Vorstellungsrunde Name Hobby/Beruf Schon mal was programmiert? Erwartungen an den Kurs Lieblingstier Für zu Hause C-Buch online: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/

Mehr

Objektorientierte Programmierung in Java

Objektorientierte Programmierung in Java Objektorientierte Programmierung in Java 1. Auflage Objektorientierte Programmierung in Java schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv Verlag C.H. Beck im Internet:

Mehr

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

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 Wichtig... Mittags Pommes... Praktikum A 230 C 207 (Madeleine) F 112 F 113 (Kevin) E

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens SS2013 Inhalt Projekt Vorlesung: praktische Implementierung üben Ein und

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

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

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

Delegatesund Ereignisse

Delegatesund Ereignisse Delegatesund Ereignisse «Delegierter» Methoden Schablone Funktionszeiger Dr. Beatrice Amrhein Überblick Definition eines Delegat Einfache Delegate Beispiele von Delegat-Anwendungen Definition eines Ereignisses

Mehr

Software Engineering Interaktionsdiagramme

Software Engineering Interaktionsdiagramme Software Engineering Interaktionsdiagramme Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Nachrichtenaustausch Welche Nachrichten werden ausgetauscht? (Methodenaufrufe)

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

188.154 Einführung in die Programmierung für Wirtschaftsinformatik

188.154 Einführung in die Programmierung für Wirtschaftsinformatik Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger

Mehr

Grundlagen der Modellierung und Programmierung, Übung

Grundlagen der Modellierung und Programmierung, Übung Grundlagen der Modellierung und Programmierung Übung Prof. Wolfram Amme LS Softwaretechnik Prof. Klaus Küspert LS Datenbanksysteme Prof. Birgitta König-Ries LS Verteilte Systeme Prof. Dr. Wilhelm Rossak

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

Klausur in Programmieren

Klausur in Programmieren Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Wintersemester 2010/11, 17. Februar 2011 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt)

Mehr

Testen mit JUnit. Motivation

Testen mit JUnit. Motivation Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

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

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 5 Lösungsvorschlag Objektorientierte Programmierung 22. 05. 2006 Lösung 9 (SMS-Eingabe am

Mehr

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse Übung 03: Schleifen Abgabetermin: xx.xx.xxxx Name: Matrikelnummer: Gruppe: G1 (Prähofer) G2 (Prähofer) G3 (Wolfinger) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben elektronisch Aufgabe 03.1 12

Mehr

Programmieren Tutorium

Programmieren Tutorium Programmieren Tutorium Tom Schildhauer Tutorium 12 Universität Karlsruhe (TH) Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by Tom Schildhauer,

Mehr