Vorlesung Programmieren

Größe: px
Ab Seite anzeigen:

Download "Vorlesung Programmieren"

Transkript

1 Vorlesung Programmieren Nachweihnachtliche Zusammenfassung und Wiederholung Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck

2 Themenüberblich Zahlendarstellung Funktionsweise von Computern Algorithmen und Berechenbarkeit Java Grundlagen Programmierparadigmen Speicherverwaltung und Parameterübergabe Objektorientierte Programmierung Java: Packages, Classpath, JARs Vererbung und Polymorphismus Abstrakte Klassen und Methoden & Interfaces Security - 04 Cryptology #2

3 Zahlendarstellung Security - 04 Cryptology #3

4 Dezimalsystem Normal rechnen wir im Dezimalsystem Basis verschiedene Symbole (0 bis 9) zur Zahlendarstellung vorhanden Größere Zahlen werden durch Sequenz von Symbolen gebildet Stelle bestimmt Wertigkeit des Symbols = = = = = = = = = = 10 Security - 04 Cryptology #4

5 Dezimalsystem Darstellung von Zahlen in Summenform möglich Beispiele 20 = = Security - 04 Cryptology #5

6 Umrechnung: Dezimal- nach Binärsystem Horner-Schema = 7R0 Least significant bit (LSB) = 3R1 = 1R1 = 0R1 Most significant bit (MSB) 1110 MSB LSB 6

7 Hexadezimalsystem (zur Basis 16) Neben dem Binärsystem gibt es für den Programmierer noch ein weiteres wichtiges Zahlensystem Das Hexadezimalsystem, kurz: hex 16 Ziffern: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f a bis f stehen für die Zahlen 10 bis 15 Groß-/Kleinschreibung unerheblich (a = A) Umrechnung zwischen Dezimal und Hex analog zum Binärsystem 7

8 Rechnen mit verschiedenen Basen Alle Grundrechenarten funktionieren auch im Binärsystem Natürlich auch in allen anderen Zahlensystemen Insbesondere auch im Hexadezimalsystem Bisher: Nur positive ganze Zahlen Wie geht man mit vorzeichenbehafteten ganzen Zahlen um? Wie stellt man -7 im Computer dar? 8

9 Negative Zahlen Variante 1: Höchstes Bit als Vorzeichen Höchstes Bit 0: Positive Zahle Höchstes Bit 1: Negative Zahl Variante 2: 1er-Komplement Zur Vorzeichenumwandlung (+ - bzw. -+) wird jedes Bit invertiert Variante 3: 2er-Komplement Invertiere bitweise und addiere 1 Alternativ: 1er-Komplement + 1 Security - 04 Cryptology #9

10 Höchstes Bit als Vorzeichen Prinzipiell wäre das so verwendbar Nachteile Zwei Nullen (+0 und -1) Vorzeichen-Bit muss beim Rechnen ausgewertet werden Das ist für Maschinen nicht optimal und die Schaltungen werden recht komplex Security - 04 Cryptology #10

11 1er-Komplement Beispiel (4-Bit Zahlen): 4 10 = und 2 10 = Negative Zahl: Invertieren aller Bits: = und = Nachteile Zwei Nullen (0000 und 1111) Round Carry (Übertrag muss noch addiert werden) Security - 04 Cryptology #11

12 2er-Komplement Beispiel: invertiere( ) Vorteile Kein Round Carry (direkte Addition, Übertrag kann ignoriert werden) Nur eine Null ( ) Subtraktion kann auf Addition zurückgeführt werden Praktische alle Computer verwenden es daher Security - 04 Cryptology #12

13 Reelle Zahlen Festkommadarstellung Feste Anzahl von Bits für Vorkomma- und Nachkommateil Getrennte Umrechnung beider Teile Beispiel: 14,1 14 mit Horner-Schema (wiederholtes Teilen mit Rest durch 2, Reste ergeben Binärstellen von LSB nach MSB): ,1 mit Multiplikation statt Division: 0, (Achtung: Periode) Security - 04 Cryptology #13

14 Fließkommadarstellung Wertebereich und Genauigkeit von Festkommazahlen oft zu gering Große Zahlen: Wunsch nach größerem Wertebereich Nachkommateil nicht so relevant Kleine Zahlen: Wunsch nach mehr Nachkommastellen Dafür ist vor dem Komma nicht so viel Spielraum Fließkommadarstellung Darstellung einer Zahl als Mantisse und Exponent 101,1 * (Basis 2) Normalisierung der Zahl: Verschieben des Kommas, bis die Form 1,xxx erreicht ist (außer bei der Zahl 0) Darstellung nach IEEE 754: V Exponent (8 Bit) Mantisse (23 Bit, Nachkommateil) Vorzeichen (1-Bit) Security - 04 Cryptology #14

15 Wert des Exponenten e Wert des Exponenten e effektiv definiert als e effektiv = e (= e ) Dadurch gilt e = (1-127 = -126) e effektiv = -126 e = ( = 0) Komma nicht verschoben e = ( = 127) e effektiv = +127 V Exponent e (8 Bit) Mantisse m (23 Bit, Nachkommateil)

16 Rechnen mit Fließkommazahlen 1. Exponenten angleichen Zahl mit kleinerem Exponenten wird denormalisiert Grund: Kein Spezialfall für mehr als eine Stelle vor dem Komma! 2. Mantissen addieren, subtrahieren, multiplizieren oder dividieren 3. Ergebnis normalisieren 4. Fertig! 16

17 Fließkommazahlen: Vor- und Nachteile Vorteile Fühlen sich für Programmierer wie reelle Zahlen an Großer Wertebereich, inkl. Werten für 0, +inf und inf Nachteile Sind nur endlich genau! Zahlen, die im Dezimalsystem exakt dargestellt werden können, müssen im Binärsystem u.u. gerundet werden Durch diese Ungenauigkeit kommt es schon bei einfachen Rechnungen zu Rundungsfehlern 17

18 Funktionsweise von Computern Security - 04 Cryptology #18

19 Von-Neumann-Architektur: Komponenten Auch: ALU (Arithmetic Logic Unit) Addition, etc Steuert Programmfluss Sagt Rechenwerk was zu tun ist. Verbindet Daten (Quelle und Ziel) mit ALU Steuert Übertragung (zur Ein- und Ausgabe) von Daten Interaktion mit Peripherie: Lochstreifenleser, Bildschirm, Keyboard, Speichert Daten und Programm (RAM) 19

20 Central Processing Unit (CPU) Agiert in Takten Gegeben durch Taktfrequenz Hat interne Speicher: Register Arbeitet in vier Schritten 1. Fetch Befehl und Daten aus Speicher holen Programmzähler CPU Steuerwerk Befehls-/Register-Speicher Rechenwerk Befehlsdekoder (Rechen-)Registerspeicher Rechenschaltungen steuert 2. Decode Befehl decodieren und Steuersignal an das Rechenwerk (ALU) anlegen 3. Execute Berechnung ausführen 4. Store Ergebnis in Speicher schreiben 20

21 Algorithmen und Berechenbarkeit Security - 04 Cryptology #21

22 Algorithmus Vorschrift zur Lösung eines bestimmten Problems z.b. Leerzeichen zählen, Daten sortieren, Routen planen, Schach spielen, Formulierung der Handlungsvorschrift so dass deren Befolgen bei sinnvollen Ausgangsdaten (Eingabe) zum angestrebten Ziel (Ausgabe) führt, ohne dass dazu ein Verständnis des Problems notwendig ist Sog. mechanisches Lösen Eine solche Vorschrift heißt Algorithmus Security - 04 Cryptology #22

23 Algorithmus (präzisierte Definition) Eindeutig beschriebenes Verfahren, das bestimmt, mit welchen Operationen welche Objekte (Daten) bearbeitet werden sollen Ziel: Lösung eines Problems anhand einer Spezifikation Elemente Sprache (Umgangssprache, Programmiersprache,...) Objekte müssen klar umrissen sein Operationen müssen eindeutig und ausführbar sein Für Adressaten des Algorithmus Computer, Mensch,... Reihenfolge der Operationen muss feststehen 4-23

24 Aufbau von Algorithmen Mehr als die genannten Elemente braucht man nicht, um alles, was überhaupt programmierbar ist, programmieren zu können! Es reichen also Elementare Rechenoperationen Sequentielle Ausführung While- und If- Anweisung 4-24

25 Eigenschaften von Algorithmen Terminierend Für alle korrekten Eingaben hält der Algorithmus nach endlich vielen Schritten an Vollständigkeit Alle Fälle, die bei korrekten Eingabedaten im Verlaufe der Abarbeitung eines Algorithmus auftreten können, müssen berücksichtigt werden Determiniert Der Algorithmus liefert bei jedem Ablauf mit den gleichen Eingaben das gleiche Ergebnis Deterministisch Der Algorithmus liefert bei jedem Ablauf mit den gleichen Eingaben das gleiche Ergebnis und führt dabei dieselbe Berechnung aus Security - 04 Cryptology #25

26 Algorithmen und Programmieren Programmiersprachen dienen zum Aufschreiben von Algorithmen Algorithmen können mit Hilfe von Programmiersprachen so aufgeschrieben werden, dass ein Computer sie versteht Security - 04 Cryptology #26

27 Java Grundlagen Security - 04 Cryptology #27

28 Höhere Programmiersprache Sprache mit eigener Syntax und Semantik Syntax: Grammatikregeln der Sprache Walfische bereisen Indien, um Wolken zu klauen! Semantik: Bedeutung einzelner Worte und Satzzeichen der Sprache Der obige Satz ist syntaktisch korrekt aber sinnlos. Ziel: Sicheres Beherrschen beider Aspekte Compiler prüfen Syntax aber keine Semantik Security - 04 Cryptology #28

29 Warum Java? Besonderheiten von Java Sprache i. W. neu entworfen, nur wenige Altlasten Daher vergleichsweise einfach zu erlernen Write once, run everywhere Technische Realisierung: Programm Compiler Maschinencode Programm Compiler Interpreter Bytecode Maschinencode 5-29

30 Erstes Sprachelement: Sequentielle Ausführung Markierung des Endes einer Anweisung durch Semikolon Zeichen ; a1; a2; a3; a4; Formatierung (für den Compiler) egal Für Menschen macht es Sinn, sich an gewisse Konventionen zu halten Security - 04 Cryptology #30

31 Variablen Adresse Inhalt Eine Variable ist ein Speicherplatz Eine (Start-)Adresse im Arbeitsspeicher Programme verwenden Namen statt Adressen (z.b. jahr, i, hallo) Compiler bzw. Betriebssystem kümmert sich um konkrete Zuordnung Größe des belegten Speichers bestimmt durch Datentyp 32-Bit Ganzzahl 8-Bit vorzeichenbehaftete Ganzzahl

32 Primitive Datentypen in Java Datentyp Bemerkung Min Max byte 8 Bit, 2er-Komplement short 16 Bit, 2er-Komplement int 32 Bit, 2er-Komplement long 64 Bit, 2er-Komplement float double 32-bit IEEE 754 floating point 64-bit IEEE 754 floating point boolean Größe nicht spezifiziert false true char Ein 16-bit Unicode Zeichen '\u0000' (oder 0) '\uffff' (oder )

33 Deklaration von Variablen Eine Variable ist ein Speicherplatz Repräsentiert einen Wert aus einem bestimmten Wertebereich Wertebereich durch verwendeten Datentyp festgelegt Speicherbereich wird über einen Namen referenziert Eine Variable wird deklariert (d.h. erzeugt) Syntax: <Typ> <Name>; Dadurch wird Speicher reserviert Beispiele int myint; char c1; boolean flag; short myshort, myshort2; mehrere Variablen gleichen Typs 5-33

34 Legale Identifier Bestehen aus Unicode Zeichen Nummern Währungssymbole Verbindungszeichen (Bsp.: Unterstrich _ ) Dürfen theoretisch beliebig lang sein Einschränkungen Muss mit Zeichen, Währungssymbol oder Verbindungszeichen starten Also auf keinen Fall mit einer Nummer Kein reserviertes Schlüsselwörter (class, public, etc.). Details unter Keine Leerzeichen Identifier sind case-sensitive (Unterscheidung von Groß- und Kleinschreibung) Security - 04 Cryptology #34

35 Typsicherheit Alle Daten, die wir verarbeiten, sind immer von einem bestimmten Typ Typ der Werte, die wir einer Variablen zuweisen, muss dem Typ der Variablen entsprechen Alternativ müssen wir konvertieren (später) Kann man einen Wahrheitswert (boolean) eine int-zahl zuweisen (z.b. 123)? Nein, das dient der Sicherheit von Programmen Sog. statische Typsicherheit Diese wird vom Compiler überprüft Security - 04 Cryptology #35

36 Spezialfall: Arrays Beispiel: Wir benötigen zehn Integer-Variablen int i0, i1, i2, i3, i4, i5, i6, i7, i8 i9; Einfacher: Verwendung sog. Arrays int[] i = new int[10]; Zugriff über Indizes i[0], i[1],, i[9] Erster Index (0) Achtes Element an Index Länge des Arrays:

37 Datentypen von Literalen (Ganzzahlen) Ganzzahlige Typen (standardmäßig vom Typ int) 10 (Dezimal) 012 (Oktal, Basis 8, wegen führender Null) 0xA (Hexadezimal, Basis 16 wegen führendem 0x, Groß- /Kleinschreibung egal) 0b1010 (Binär, Basis 2, wegen führendem 0b) Suffix l oder L Datentyp long statt int Beispiel: 12273; 12733L; int i = 10; long l = 10L;

38 Datentypen von Literalen (Floating Point) Floating Point Werte sind standardmäßig vom Typ double Durch Anhängen von f wird ein Literal vom Typ float Optional kann ein d angehängt werden, um double explizit zu fordern Schreibweise von Floating Point Literalen Normale Schreibweise: 10.0 (alternativ: 10.) Normale Schreibweise: 0.1 (alternativ :.1) Eng. Schreibweise: 1E1 (entspricht 1 * 10 1 ) Float erzwingen: 10.0f Double erzwingen: 10.0d Security - 04 Cryptology #38

39 Datentypen von Literalen (Zeichen) Datentyp von Zeichen in Java: char In einfachen Anführungszeichen eingeschlossen (') Repräsentieren immer genau ein Zeichen Mehr als ein Zeichen nicht möglich (dafür spezieller Typ: String später) Beispiele: 'a' (das Zeichen a), 'ü' (das Zeichen ü) Manche Zeichen werden mit Backslash (\) escaped '\n' Zeilenumbruch '\'' Das Zeichen ' '\\' Das Zeichen \ selbst '\u00f1 Das Unicode-Zeichen mit der Nummer F1 16 ( ): ñ Details unter:

40 Operatoren Was können wir nun mit Variablen und deren Werten anfangen? Werte zuweisen Werte vergleichen Werte addieren Werte subtrahieren usw. Geschieht über Operatoren Siehe auch avase/tutorial/java/nutsandb olts/operators.html Operatortyp (sortiert nach Vorrang) Postfix expr++ expr-- Unär ++expr --expr +expr -expr ~! Multiplikativ * / % Additiv + - Shift << >> >>> Vergleich Gleichheit ==!= Bitweises AND Bitweises XOR Bitweises OR Logisches AND Logisches OR < > <= >= instanceof & ^ && Ternärer Operator? : Zuweisung = += -= *= /= %= &= ^= = <<= >>= >>>= 5-40

41 Operatoren Berechnen neuen Wert (Ergebnis hat bestimmten Datentyp) Ergebnis 2, Datentyp int int i = 1; i = 2 * i; Zwei Operatoren (= und *) Ergebnis der Multiplikation: 2, Datentyp int; 2.0 * 1; Ergebnis: 2.0, Datentyp float 3/2; Ergebnis: 1, Datentyp int 5-41

42 Operatoren zur Typumwandlung Explizite Typumwandlung (Casting) Syntax: (Datentyp) Wert Gibt Wert (der Variablen/Konstante) im angegeben Datentyp zurück Java handhabt Datentypen sehr strikt Typkonvertierungen müssen explizit angeben werden Falsch int i = 3.5f * 6; // Rechter Ausdruck: Typ float int i = (int) 3.7f * 6; // Ergebnis: 3 * 6 = 18 Richtig int i = (int)(3.7f * 6); // Ergebnis: 3.5 * 6 =

43 Ausdruck (engl.: expression) Kann aus Operatoren, Variablen, Literalen und Funktionen (später) bestehen Berechnet einen Wert eines bestimmten Datentyps Beispiele 1 Wert: 1, Typ: int Wert: 3, Typ: int Wert 3.0, Typ: double * / 7.0 Wert ,Typ double (char) ( 'a' + 7 ) Wert h, Typ char Security - 04 Cryptology #43

44 Anweisungen (Statements) Anweisungen müssen (anders als Ausdrücke) keinen Wert zurückgeben Jeder Ausdruck ist auch eine Anweisung (Wert des Ausdrucks wird ignoriert) Mehrere Ausdrücke werden durch ; getrennt (sequentielle Ausführung) Beispiel: System.out.println( Hallo ); Gibt Hallo auf der Konsole aus, berechnet aber keinen Wert Spezielle Anweisung: Blockanweisung Gruppiert Menge von Anweisungen/Ausdrücken zu einer Anweisung Syntax: { <keine oder mehrere Anweisungen> } Beispiel: {} Beispiel: { int i=1+2; System.out.println( Hallo ); i=i*2; } Security - 04 Cryptology #44

45 Bedingte Ausführung: if Syntax: if (boolescher-ausdruck) anweisung; boolescher-ausdruck: Ausdruck, der zu boolean Wert evaluiert (true/false) Anweisung: Einzelne Anweisung (kann auch eine Blockanweisung sein) Beispiel für boolesche Ausdrücke true 1 > 2 i!= 12 u 2 > z - 3 Beispiele für if-anweisung if (true) System.out.println( Tautologie ); int i = 3; if (2 * i > 1000) i = i / 2; Security - 04 Cryptology #45

46 Variante der if-anweisung (if...then...else) Oft soll entweder das eine oder das andere gemacht werden if (a > 100) a = a 100; if (a <= 100) System.out.println( a zu klein ); Probleme Gleiche Bedingung muss zweimal formuliert werden (1 x positiv, 1x negativ) Wenn die erste Anweisung a modifiziert (wie hier geschehen), dann kommt es ggf. zu ungewolltem Verhalten Daher Variante if (boolescher-ausdruck) anweisung1; else anweisung2; Wenn boolescher-ausdruck true ist, dann wird anweisung1 ausgeführt, ansonsten anweisung2 if (a>100) a=a 100; else System.out.println( a zu klein ); Security - 04 Cryptology #46

47 Alternative zu if: switch-anweisung Nach case kann nur eine Konstante stehen, keine Variable Vorsicht: nicht das break vergessen Kann z.b. anstelle von langen if-else- Anweisungen verwendet werden Code wird dadurch kürzer und (evtl.) verständlicher Security - 04 Cryptology #47

48 Kontrollstrukturen: Wiederholung While-Schleife Wiederhole, solange Ausdruck wahr Syntax:while (boolescher-ausdruck) anweisung1; Beispiele while (i > 10) i--; while (i > 10) { System.out.println(i); i--; } 5-48

49 Kontrollstrukturen: Wiederholung Do-While-Schleife Wie while, jedoch mindestens einmal ausgeführt Syntax: do anweisung1; while(boolescher-ausdruck); Beispiele do i--; while (i > 10); do { System.out.println(i); i--; } while (i > 10); 5-49

50 Kontrollstrukturen: Wiederholungen Abseits von while und do...while gibt es eine weitere Wiederholungsanweisung: for Ist wahrscheinlich die am meisten benutzte Variante while, do...while und for lassen sich ineinander überführen Welche Variante man nutzt ist daher egal Allerdings ist for expliziter als while/do-while und prägnanter Syntax for(<initialization>; <termination>; <increment>) statement; <initialization> Einmal zu Beginn der Schleife ausgeführt <termination> Abbruchbedingung (boolescher Ausdruck) <increment> Nach jedem Durchlauf ausgeführt 5-50

51 Programmierparadigmen Security - 04 Cryptology #51

52 Prozedurale Programmierung Zerlegung von Programmen in kleinere, wiederverwendbare Einheiten sog. Prozeduren Monolithisches Programm Vorteile Kapselung einzelner Funktionalitäten Bessere Wiederverwendbarkeit Lesbarerer Code Was tut er? (z.b. Zeichen zählen) statt Wie tut er es? (die ganzen Instruktionen) Fehlerbehebung an einer Stelle #52

53 Prozedur (auch: Funktion) Eingabeparameter Übergabe von Werten an die Funktion Definiert als Menge von Variablen mit bestimmtem Datentyp Rückgabe Wert mit einem bestimmten Datentyp Spezieller Datentyp für keine Rückgabe: void Beispiele für Deklarationen (sog. Signatur) void main(string[] args); int zaehleleerzeichen(char[] text); char[] rueckwaerts(char[] text); boolean istleerzeichen(char zeichen); boolean istkontogedeckt(int konto, int blz); Eingabewerte Prozedur / Funktion (Black Box) Ausgabewert #53

54 Signatur und Implementierung int zaehleleerzeichen(char[] text) { } Signatur (auch: Deklaration) // Hier steht die Implementierung der Funktion // (in einer Blockanweisung) Implementierung (auch: Body oder Definition) #54

55 Implementierung einer Funktion Wie eine Erweiterung der Blockanweisung Es gibt ein paar weitere lokale Variablen Stellen die Parameter einer Funktion dar Parameter werden wie normale lokale Variablen verwendet werden Werte der Parameter werden beim Aufruf festgelegt Security - 04 Cryptology #55

56 Aufruf von Funktionen Aufruf über Namen (Identifier) der Funktion Übergabe von Parametern an die Funktion Richtige Anzahl Richtiger Datentyp Security - 04 Cryptology #56

57 Prozedurale Programmierung Zerlegen des Programms in Prozeduren / Funktionen Wesentlich: Übergabe von Parametern an Funktionen Programm besteht aus Sequenz von Funktionsaufrufen Erste Funktion: main Prozeduren können auch globale Variablen verändern Zustand über mehrere Aufrufe hinweg Security - 04 Cryptology #57

58 Funktionale Programmierung Mathematische Funktionen sind wie eine große Tabelle Abhängig von den Parametern, findet man das (immer konstante) Ergebnis in einer Tabelle Wichtiges Prinzip: Termersetzung f(2) 4 f(4) 16 Security - 04 Cryptology #58

59 Funktionale Programmierung Vereinfacht dargestellt ist funktionale wie prozedural ohne globale Variablen Denkweise ist sehr wichtig für gut testbare und wartbare Programme Security - 04 Cryptology #59

60 Speicherverwaltung und Parameterübergabe Security - 04 Cryptology #60

61 Implizite Speicherverwaltung Speicher wird durch Variablendeklarationen reserviert Wichtig zum Verständnis: Zeitpunkte der Reservierung und Freigabe Variablen existieren entweder immer und genau einmal (statische Lebensdauer) oder nur im aktiven Block

62 Explizite (dynamische) Speicherverwaltung Oft reicht implizite Reservierung nicht Unbekannte Anzahl zur Compile-Zeit Dann geht z.b. int[] x = new int[10]; nicht Vielleicht ist dann so etwas notwendig: int[] x = new int[integer.parseint(args[0])]; Langlebige aber nicht permanente Elemente Wird z.b. über mehrere Funktionsaufrufe benötigt, aber nicht für die ganze Programmlaufzeit Daher: dynamische Speicherverwaltung Zu beliebigen Zeitpunkten Speicher anfordern und wieder freigeben In Java: nur anfordern, Freigabe erfolgt automatisch 62

63 Explizite (dynamische) Speicherverwaltung Erfolgt durch den Programmierer Speicher kann nach Bedarf reserviert werden Alle nicht-primitiven Datentypen müssen (in Java) so instanziiert werden Variablen sind frei in Ihrer Gültigkeitsdauer In vielen Sprachen muss Speicher explizit freigegeben werden In Java erfolgt dies automatisch, wenn keine Referenz mehr auf diesen Bereich verweist Garbage Collection (später) Wichtiges Schlüsselwort: new

64 Schlüsselwort new new reserviert so viel Speicher wie Datentyp benötigt Beispiel: new int[100]; Reserviert Speicherplatz für 100 int-zahlen Rückgabewert von new: Referenz auf erzeugtes Objekt Datentyp der Rückgabe: wie angegeben (hier: int[])

65 Referenzen auf Speicherbereiche a1, a2 und b sind Variablen, die auf ein int-array verweisen können Es werden zwei int-arrays erzeugt und je eins wird a1 und a2 zugewiesen Damit referenziert jede Variable den neu reservierten Speicherbereich Die Variable b referenziert zunächst nichts Für nichts gibt es eine spezielle Adresse: null Beginn des Speicherbereichs

66 Was bedeutet null? Wörtlich: nichtig, ungültig Bedeutet, dass diese Variable keinen Speicherbereich referenziert Kann anstelle einer echten Speicherreferenz verwendet werden (Array, String,...) Nicht aber anstelle eines primitiven Wertes (boolean, int usw.) Hinter null verbirgt sich kein Objekt im Speicher Greift man denn darauf zu, wird ein Fehler erzeugt (NullPointerExceptionspäter)

67 Java: Reference Counting Java: automatische Speicherfreigabe Wird ein Speicherbereich nicht mehr über eine Variable referenziert, dann wird er freigegeben Erfolgt periodisch und automatisch durch sog. Garbage Collector (GC) Beispiel int d1[] = new int[100]; // 1 Referenz int d2[] = d1; d1 = null; d2 = null; // 2 Referenzen // 1 Referenz // 0 Referenzen GC

68 Call by Value vs. Call by Reference Call by Value Übergabe von Werten an Funktionen Geschieht über den Stack Gilt für alle primitiven Datentypen in Java Veränderungen des Parameters wirken sich nur innerhalb der Funktion aus Call by Reference Übergabe von Referenzen auf den Speicherbereich Veränderungen des Parameters wirken auch außerhalb der Funktion aus Security - 04 Cryptology #68

69 Objektorientierte Programmierung Security - 04 Cryptology #69

70 Definition: Objekt Repräsentation eines Gegenstandes/Sachverhalts der realen Welt oder eines rein gedanklichen Konzepts Gekennzeichnet durch Eindeutige Identität (Unterscheidung von anderen Objekten) (Dieser Punkt vs. der andere Punkt) Zustand (in Form von Attributen) (also z.b. x- und y-wert) Methoden (bisher: Funktionen bzw. Prozeduren) (Manipulation des Zustands; definiert das Verhalten) (Beispiel: verschiebe und rotiere)

71 Beispiel: Objekt Punkt Besteht aus Zustand (Attributen) und Verhalten (Methoden) Zustand eines Punktes Definiert durch aktuelle x- und y- Werte Punkt Attribute: - double x = 1; - double y = 3; Methoden: - voidsetze(double x, double y); - voidverschiebe(double dx, double dy); - voidrotiere(double radians); Verhalten eines Punktes Definiert durch seine Methoden z.b. Setzen der x- und y-werte, verschieben, rotieren Security - 04 Cryptology #71

72 Methoden Können Zustand eines Objektes verändern Also die Werte der Attribute verändern Beispielsweise verändert die Methode rotieren die Werte der Attribute x und y Natürlich können auch Methoden wie Funktionen Parameter haben Punkt Attribute: - double x; - double y; Methoden: - voidsetze(double x, double y); - voidverschiebe(double dx, double dy); - voidrotiere(double radians); Security - 04 Cryptology #72

73 Objekte und Klassen Muss jedes Objekt immer neu implementiert werden? Nein, man fasst ähnliche Objekte zu einer Klasse zusammen Klasse: Abstrakte Definition der Attribute und Methoden einer Menge ähnlicher Objekte Objekte Klasse X 2 y 2 Punkt Attribute: - double x; - double y; X 1 y 1 X 3 y 3 Methoden: - voidsetze(double x, double y); - voidverschiebe(double dx, double dy); - voidrotiere(double radians); Security - 04 Cryptology #73

74 Instanzen Anstelle von Objekten spricht man oft von Instanzen Instanzen sind Realisierungen einer Klasse Instanzen existieren im Arbeitsspeicher Klassen sind nur abstrakte Definitionen Beispiele Punkte vs. Dieser Punkt Lampen vs. Diese Wohnzimmerlampe Auto vs. Mein 3er BMW Mensch vs. Ich Instanzen der Klasse Punkt X 1 X 2 y 2 X 3 y y 3 1 Instanzen der Klasse Lampe Instanzen der Klasse Mensch Security - 04 Cryptology #74

75 Erzeugung von Instanzen Instanzen von Klassen werden über new erzeugt Bisher: double punkt[] = new double[2]; new double[2]; liefert Adresse des neu erzeugten Arrays auf dem Heap Jetzt: Punkt punkt = new Punkt(); new Punkt(); liefert Adresse des neu erzeugten Punkts auf dem Heap Reserviert einen Speicherbereich für die Attribute des Objekts Security - 04 Cryptology #75

76 Identität von Objekten Jedes Objekt besitzt eine eigene Identität In Form einer Referenz auf den eigenen Speicherbereich Die sog. this -Referenz Analog zum ich bei Menschen Quasi ein Verweis auf sich selbst Im Prinzip ein implizit vorhandenes Attribut vom Typ der Klasse Punkt Attribute: - Punkt this; - double x = 1; - double y = 3; Methoden: - void setze(double x, double y); - void verschiebe(double dx, double dy); - void rotiere(double radians); this -Pointer von p1 this -Pointer von p2 this -Pointer von p3... x1 y1 x2 y2 x3 y3... Security - 04 Cryptology #76

77 Umsetzung in Java Jede (normale) Klasse wird in einer separaten Datei abgelegt Dateiname entspricht Klassennamen Konvention: Großschreibung für Klassenname Beispiele: Punkt, Mensch, Lampe, Bus, String,... Konvention: Kleinschreibung für primitive Datentypen (Beispiele: byte, short, boolean) Variablen (Beispiel: myint, meinprivatbus) Methodennamen (Beispiel: oelwechsel(), main(string[] args)) Jede Klasse mit main()-methode kann ausgeführt werden Bisher: Immer eine Klasse ohne Attribute und Methoden

78 Umsetzung in Java: Klasse Schlüsselwort: class In unserem Fall immer: public class {... } In der Blockanweisung können Attribute und Methoden definiert werden (später) Beispiel: Datei Punkt.java : public class Punkt { } Datei Mensch.java :public class Mensch { } Security - 04 Cryptology #78

79 Umsetzung in Java: Attribute Syntax: Typ Name; Typ: Primitiver Datentyp, Array oder Name einer Klasse Beispiel public class Punkt { double x; double y; } Zugriff auf Attribute über Objektreferenz.Attributname Punkt p = new Punkt(); p.x = 1; System.out.println( p.x = + p.x );

80 Umsetzung in Java: Methoden Rückgabetyp Methodenname(Typ1 Name1, T2 N2, ){ } Wie Funktionen liefern Methoden einen Wert eines bestimmten Datentyps zurück Ergänzend zu Funktionen können Methoden Attribute lesen und verändern Vorsicht: Methoden sind nicht static Beispiel public class Punkt { } void setze(double x, double y) { } void verschiebe(double dx, double dy) { } void rotiere(double radians) { } Security - 04 Cryptology #80

81 Aufruf von Methoden Wie Attribute werden Methoden über eine Objektreferenz angesprochen Syntax: Objektreferenz.Methodenname(...) Beispiel Punkt p = new Punkt(); p.verschiebe(1.2, 3.4); Security - 04 Cryptology #81

82 Überladen von Methoden Mehrere Methoden gleichen Namens in einer Klasse erlaubt Prinzip der sog. Überladung eines Identifiers / Namens Gleicher Rückgabetyp, aber unterschiedliche Parameter Beispiel void gebeaus(int i); void gebeaus(string s); void gebeaus(double d); gebeaus(1); //Aufruf von void gebeaus(int i); gebeaus( Hallo ); //Aufruf von void gebeaus(string s); gebeaus(2.098); //Aufruf von void gebeaus(double d);

83 Konstruktoren: Umsetzung in Java Konstruktoren: Methoden mit speziellem Namen und Rückgabetyp Name der Methode: Klassenname Rückgabetyp: Keiner, nicht einmal void Konstruktor sollte alle Attribute initialisieren (guter Stil) Syntax: Klassenname(Typ1 Name1, Typ2 Name2, ) { } Beispiel: Punkt(double x, double y) {...} Eine Klasse kann mehrere Konstruktoren haben Gleiches Prinzip wie Überladen von Methoden Ein Konstruktor kann als erstes anderen Konstruktor aufrufen Syntax: this(...parameter...);

84 Statische Methoden Methoden verändern den Zustand einer Objektinstanz bzw. liefern Informationen über deren Zustand Manchmal praktisch, dieses Modell zu durchbrechen Main-Methode (Programmstart: keine Instanzen) Mathematische Funktionen (Wurzel, Sinus, Kosinus, etc.) Primitive Datentypen sind keine Objekte 1.sinus() funktioniert nicht new Sinus(1).getWert() zu großer Overhead Beispiele

85 Statische Methoden und Attribute Schlüsselwort static (unabhängig von Klasseninstanzen) Es gibt keine this -Referenz (keine Instanz verfügbar) Statische Elemente können nur andere statische Elemente verwenden Aufruf anderer statischer Methoden oder verwenden statischer Variablen Statische Methoden Definition: static void statischemethode(...) {...} Verwendung: Klassenname.methodenname(Parameter) Statische Attribute Definition: static int statischesattribut; Verwendung: Klassenname.attributname;

86 Java: Packages, Classpath, JARs Security - 04 Cryptology #86

87 Namensräume Alternative zu langen Namen Eingruppieren von Klassen in verschiedene Namensräumen Unterscheidung von Klassen durch Angabe des Namensraums Beispiel: Punkt aus Farbe vs. Punkt aus Mathe Namensräume in Java: sog. packages Namensraum Farbe Namensraum Mathe Punkt Attribute: - int rot; - int gruen; - int blau Methoden: Punkt Attribute: - double x; - double y; Methoden: - void setze(double x, double y); - void verschiebe(double dx, double dy); - void rotiere(double radians); Security - 04 Cryptology #87

88 Packages Es ist üblich, Klassen in Packages zu gruppieren Bessere Übersichtlichkeit Vorbeugung von Namenskonflikten Zusammengehörige Klassen kennzeichnen Analogie Klassennamen sind vergleichbar mit einem Vornamen Package-Name entspräche dann dem Familiennamen Package-Namen: Gleiche Einschränkungen wie Identifier z.b. kein - erlaubt Konvention: Kleinschreibung (also mathe statt Mathe )

89 Nested Namespaces: Java Beispiel Einzelne Bestandteile werden durch. getrennt Beginnt bei der höchsten Hierarchiestufe Ähnlich wie im Dateisystem Packages müssen immer absolut angegeben werden (d.h. alle Namensteile müssen vorhanden sein) Security - 04 Cryptology #89

90 Packages: Dateisystem und Packages Java-Dateien müssen im Dateisystem so abgelegt sein, dass deren Pfade die Package-Namen widerspiegeln Im folgenden angenommen: Projektverzeichnis ist ~/coding/aufgabe2 Beispiele für verschiedene Punkt-Klassen (alle jeweils in Punkt.java ) package farbe; ~/coding/aufgabe2/farbe/punkt.java package farbe.rgb; ~/coding/aufgabe2/farbe/rgb/punkt.java package farbe.rgb.version1; ~/coding/aufgabe2/farbe/rgb/version1/punkt.java package farbe.cmyk; ~/coding/aufgabe2/farbe/cmyk/punkt.java package mathe; ~/coding/aufgabe2/mathe/punkt.java package de.uni_luebeck.itm. programmieren.ws1213.uebung1.aufgabe2; ~/coding/aufgabe2/de/uni_luebeck/itm/programmieren/ws1213/uebung1/aufgabe2/punkt.java

91 Packages: Verwendung Zwei Varianten zur Verwendung von Klassen aus anderen Packages Angabe des voll-qualifizierten Namens (Klasse + Package) package test;... farbe.rgb.punkt p = new farbe.rgb.punkt(); Importieren bestimmter Klassennamen Um die Angabe des voll-qualifizierten zu ersparen (Lesbarkeit) Schlüsselwort: import import farbe.rgb.punkt;... Punkt p = new Punkt();

92 Java Classpath Über den Classpath kann man dem Compiler verschiedene Startpunkte für die Suche mitteilen Von diesen aus sucht Java nach Klassen in verschiedenen Packages Das heißt, dass das Programm über viele Orte zerstreut sein kann Verschiedene Möglichkeiten Standardverhalten Umgebungsvariable CLASSPATH Kommandozeilenparameter Security - 04 Cryptology #92

93 JAR Dateien - Motivation Java-Programme bestehen aus vielen Klassen Jede Klasse hat ein eigenes.class -File Programme bestehen aus vielen Ordnern und Dateien Ausliefern: Zippen, versenden, dort wieder entpacken und starten Einfacher: Class-Dateien in JAR-Archiv zusammenfassen JAR: Java Archive Im JDK enthalten ist ein Programm namens jar zum Anzeigen, Packen und Entpacken von Jar-Dateien JAR-Dateien können direkt in den Classpath eingebunden werden Keine Notwendigkeit, JAR-Dateien vor Verwendung auszupacken

94 Vererbung und Polymorphismus Security - 04 Cryptology #94

95 Vererbung Man versucht, zu ähnlichen Klassen eine gemeinsame Oberklasse zu finden Fasst Ähnlichkeiten zusammen In Form von Attributen, Verhalten (Methoden), Beziehungen zu anderen Klassen Ergänzt in den Unterklassen lediglich die Unterschiede Ergänzende Attribute, Methoden, Beziehungen zu anderen Klassen

96 Vererbung Gemeinsamkeiten ähnlicher Klassen werden zu einer Oberklasse zusammengefasst Fahrzeug hersteller: String wechselintervall: int km_gefahren: int baujahr: int oelwechsel() Gemeinsame Oberklasse Bus hersteller: String wechselintervall: int km_gefahren: int baujahr: int toilette: boolean oelwechsel() toiletteleeren() Gemeinsamkeiten PKW hersteller: String wechselintervall: int km_gefahren: int baujahr: int Bauart: String oelwechsel() cabriodach() : boolean

97 Vererbung in Java Vererbung wird über Schlüsselwort extends angegeben Man kann von genau einer Oberklasse erben Anderen Programmiersprachen erlauben auch von mehreren Oberklassen zu erben (C++,...) Bus Fahrzeug PKW Syntax: class Unterklasse extends Oberklasse {...} Beispiel class Bus extends Fahrzeug {...} class PKW extends Fahrzeug {...}

98 Vererbung in Java In Java gibt es eine Oberklasse aller Klassen java.lang.object Wenn keine Oberklasse angegeben ist, wird Object automatisch zur Oberklasse Konsequenz: java.lang.object ist Oberklasse jeder Klasse Vielleicht nicht direkt, aber irgendwann auf jeden Fall Object Gegenstand Fahrzeug Dies ist nicht in allen Programmiersprachen so z.b. nicht in C++ Bus PKW Security - 04 Cryptology #98

99 Vererbung und Instanzen Von jeder Klasse können Instanzen erzeugt werden Diese können ganz normal verwendet werden Beispiele Fahrzeug f = new Fahrzeug(); f.oelwechsel(); Bus b = new Bus(); b.oelwechsel(); b.toiletteleeren(); Fahrzeug PKW p = new PKW(); p.oelwechsel(); p.cabriodach(); Bus PKW Security - 04 Cryptology #99

100 Vererbung und Instanzen Merkregel: Vererbungsbeziehung drückt eine ist ein Beziehung aus Beispiel: Ein PKW ist ein Fahrzeug Aber: Nicht jedes Fahrzeug ist ein PKW Variablen der Basisklasse können auf Referenzen der Subklassen verweisen Fahrzeug f = new Fahrzeug(); Fahrzeug f1 = new PKW(); Fahrzeug f2 = new Bus(); Bus b = new Bus(); Fahrzeug f3 = b; Fahrzeug Aber nicht umgekehrt Bus b = new Fahrzeug(); //Fehler Bus PKW Security - 04 Cryptology #100

101 Schlüsselwort super Jede Instanz hat eine Referenz auf Ober-Instanz z.b. um Attribute und Methoden explizit zu referenzieren super Gegenstand Diese heißt super Erfüllt ähnlichen Zweck zum Zugriff auf Elemente der Oberinstanz wie this für die aktuelle Instanz super Fahrzeug super Aufruf des super-konstruktors (aus Child-Konstruktor), Aufruf von super-methoden und Zugriff auf super-attribute Bus PKW Security - 04 Cryptology #101

102 Modifier Wichtig bei Objektorientierung: information hiding Jeder soll nur das verwenden können, was relevant ist Trägt zur Übersichtlichkeit und Fehlersicherheit bei Zugriffsbeschränkung möglich für Klassen Attribute Konstruktoren Methoden Wird über sog. Modifier gesteuert Schlüsselwörter: public, protected, private, nichts

103 Modifier Klasse Package Unterklasse Überall public protected* (komisch) Keine Angabe: package private private* *) Nicht für Klassen (nur für Attribute, Konstruktoren und Methoden)

104 Polymorphismus Methoden von Oberklassen können in Unterklassen redefiniert werden Überladen (Overloading) Methode mit gleichem Namen und unterschiedlichen Parametern Rückgabetyp bleibt gleich Überschreiben (Overriding) Polymorphismus Gleiche Signatur einer Methode in einer Unterklasse Nach außen gleiches Interface, aber anderes Verhalten

105 Überschriebene Methoden In Java entscheidet immer der Typ der referenzierten Instanz Fahrzeug f = new Fahrzeug(); f.motoran(); Methode aus Klasse Fahrzeug Fahrzeug f = new PKW(); f.motoran(); Methode aus Klasse PKW Fahrzeug f = new Bus(); f.motoran(); Methode aus Klasse Bus Security - 04 Cryptology #105

106 Abstrakte Klassen und Methoden & Interfaces Security - 04 Cryptology #106

107 Zusammenfassung der Probleme Probleme Implementierung der Schnittstellen -Methode in der Oberklasse oft sinnlos Kein Zwang, bestimmte Methoden in Unterklassen zu implementieren Lösung: Abstrakte Klassen und Methoden Security - 04 Cryptology #107

108 Abstrakte Klassen und Methoden Man kann Klassen und Methoden als abstrakt kennzeichnen Bedeutung: Von abstrakten Klassen können keine Instanzen erzeugt werden Ist mindestens eine Methode einer Klasse abstrakt, so ist auch die Klasse abstrakt Security - 04 Cryptology #108

109 Abstract und Vererbung Abstrakte Methoden werden vererbt Damit eine Klasse instanziiert werden kann (also nicht abstrakt ist), müssen in der Vererbungshierarchie alle abstrakten Methoden mit Implementierungen überschrieben werden Wo dies geschieht ist dabei egal Security - 04 Cryptology #109

110 Interfaces Können Klassen auch von mehreren Oberklassen erben? Sogenannte Mehrfachvererbung Prinzipiell ja (z.b. in C++), in Java jedoch nicht Es können Konflikte entstehen, deren Auflösung kompliziert sein kann Java bietet ähnliche Funktionalität über einen Trick Neben echten Oberklassen gibt es sog. Interfaces Ein Interface enthält lediglich Methodensignaturen D.h. keine Methodenimplementierung / kein Code Vergleichbar mit Klassen, die nur abstrakte Methoden enthalten

111 Abstrakte Klasse vs. Interface Abstrakte Klasse abstract class Obst { public abstract double getpreisineuro(); } Interface interface Obst { double getpreisineuro(); } Abstract wird implizit für Klasse und Methoden angenommen und muss daher nicht explizit auftauchen Methoden eines Interfaces sind immer public

112 Abstrakte Klasse vs. Interface Abstrakte Klassen können auch normale Methoden enthalten (mit Implementierung) abstract class Obst { public void gebeaus() {... } OK public abstract double getpreisineuro(); } Bei Interfaces ist dies nicht erlaubt interface Obst { void gebeaus() {... } nicht möglich double getpreisineuro(); }

113 Implementieren von Interfaces Von einem Interface wird nicht geerbt, sondern es wird implementiert Schlüsselwort: implements Eine Klasse kann von max. einer Klasse erben Aber sie kann beliebig viele Interfaces implementieren Wenn mehrere Klassen ein Interface implementieren, besitzen sie Methoden mit identischen Signaturen Beispiel: siehe nächste Folie

114 Interfaces: Beispiel class PKW extends Fahrzeug implements Gebrauchsgegenstand, CoolesMaennerspielzeug { //alle Interface-Methoden müssen implementiert werden } Ein PKW ist-ein Fahrzeug, GebrauchsGegenstand und CoolesMaennerspielzeug Fahrzeug Gebrauchs Gegenstand CoolesMaenner spielzeug Gebrauchsgegenstand

115 Vererbungshierarchie Kiwi ist-ein Obst Herkunftsland Instanzen vom Typ Kiwi können per Typecast auf Obst und Herkunftsland abgebildet werden Obst Herkunftsland Beispiel Obst obst = new Kiwi(); Herkunftsland land = new Kiwi(); Kiwi Obst obst2 = (Obst) land; Herkunftsland land2 = (Herkunftsland) obst;

116 Interfaces: Type Identification Woran erkennt man Typ einer Instanz? Obstbeispiel: Woran erkennt man, dass ein Objekt das Interface Herkunftsland implementiert? Java bietet Operator instanceof Syntax: instanz instanceof Klasse Liefert einen Booleschen Wert zurück Sogenannte Run-time type identification Man kann zur Laufzeit des Programms feststellen, von welchem Typ eine Instanz ist

Vorlesung Programmieren. Hauptaufgabe des Programmierers. Maschinensprache Beispiel für x86 PCs. Zusammenfassung

Vorlesung Programmieren. Hauptaufgabe des Programmierers. Maschinensprache Beispiel für x86 PCs. Zusammenfassung Vorlesung Programmieren Zusammenfassung Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer Hauptaufgabe des Programmierers Der Maschine beibiegen,

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Abstrakte Klassen und Methoden & Interfaces Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie

Mehr

Vorlesung Programmieren. Hauptaufgabe des Programmierers. Maschinensprache Beispiel für x86 PCs. Zusammenfassung

Vorlesung Programmieren. Hauptaufgabe des Programmierers. Maschinensprache Beispiel für x86 PCs. Zusammenfassung Vorlesung Programmieren Zusammenfassung Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Hauptaufgabe des Programmierers Der Maschine

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Speicherverwaltung und Parameterübergabe Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Gültigkeitsbereich von

Mehr

Vorlesung Programmieren. Bisher: Klassen und Objekte. Was ist mit ähnlichen Klassen? Vererbung und Polymorphismus

Vorlesung Programmieren. Bisher: Klassen und Objekte. Was ist mit ähnlichen Klassen? Vererbung und Polymorphismus Vorlesung Programmieren Vererbung und Polymorphismus Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Bisher: Klassen und Objekte Haupteigenschaften:

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Zusammenfassung Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Hauptaufgabe des Programmierers Der Maschine

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Zahlendarstellung Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer Agenda Zahlendarstellung Oder: wie rechnen

Mehr

Programmierkurs C++ Konstruktor, Statische Methoden Namespaces

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

Mehr

Programmierkurs C++ Variablen und Datentypen

Programmierkurs C++ Variablen und Datentypen Programmierkurs C++ Variablen und Datentypen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Überblick Welche Datentypen gibt es in

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Kontrollstrukturen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Kontrollstrukturen Wichtig: bedingte Ausführung

Mehr

Java I Vorlesung Imperatives Programmieren

Java I Vorlesung Imperatives Programmieren Java I Vorlesung 2 Imperatives Programmieren 3.5.2004 Variablen -- Datentypen -- Werte Operatoren und Ausdrücke Kontrollstrukturen: if Imperatives Programmieren Im Kern ist Java eine imperative Programmiersprache.

Mehr

Programmierkurs Java

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

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Programmierparadigmen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Programmiersprachen-Paradigmen Eine Programmiersprache

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Variablen und Datentypen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Überblick Welche Datentypen gibt es

Mehr

21.10.2013. Vorlesung Programmieren. Agenda. Dezimalsystem. Zahlendarstellung. Zahlendarstellung. Oder: wie rechnen Computer?

21.10.2013. Vorlesung Programmieren. Agenda. Dezimalsystem. Zahlendarstellung. Zahlendarstellung. Oder: wie rechnen Computer? Vorlesung Programmieren Zahlendarstellung Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer Agenda Zahlendarstellung Oder: wie rechnen

Mehr

Programmierkurs C++ Abstrakte Klassen und Methoden

Programmierkurs C++ Abstrakte Klassen und Methoden Programmierkurs C++ Abstrakte Klassen und Methoden Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie Obst double

Mehr

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

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke Java 2 Markus Reschke 07.10.2014 Datentypen Was wird gespeichert? Wie wird es gespeichert? Was kann man mit Werten eines Datentyps machen (Operationen, Methoden)? Welche Werte gehören zum Datentyp? Wie

Mehr

Programmierkurs Java. Vererbung. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.

Programmierkurs Java. Vererbung. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck. Programmierkurs Java Vererbung Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Ähnlichkeiten zwischen Klassen? Beispiel: Klassen Auto

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

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

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5. Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 23.5.07 G. Bohlender (IANM UNI Karlsruhe) Vererbung 23.5.07 1 / 22 Übersicht 1

Mehr

Vererbung, Polymorphie

Vererbung, Polymorphie Vererbung, Polymorphie Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 21.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung, Polymorphie 21.1.08

Mehr

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08 Kapitel 4 Programmierkurs Birgit Engels, Anna Schulze Wiederholung Kapitel 4 ZAIK Universität zu Köln WS 07/08 1 / 23 2 Datentypen Arten von Datentypen Bei der Deklaration einer Variablen(=Behälter für

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren

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

Programmieren in Java

Programmieren in Java Einführung in die Objektorientierung Teil 4 Interfaces, innere Klassen und Polymorphie 2 Vererbung im Klassendiagram (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Ware

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Java: Packages, Classpath, JARs Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer Packages Dr. Dennis Pfisterer Institut

Mehr

Programmieren. Kapitel 3: Wie funktioniert ein moderner Computer? Wintersemester 2008/2009. Prof. Dr. Christian Werner

Programmieren. Kapitel 3: Wie funktioniert ein moderner Computer? Wintersemester 2008/2009. Prof. Dr. Christian Werner Institut für Telematik Universität zu Lübeck Programmieren Kapitel 3: Wie funktioniert ein moderner Computer? Wintersemester 8/9 Prof. Dr. Christian Werner 3- Überblick Typische Merkmale moderner Computer

Mehr

Intensivübung zu Algorithmen und Datenstrukturen

Intensivübung zu Algorithmen und Datenstrukturen Intensivübung zu Algorithmen und Datenstrukturen Silvia Schreier Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Übersicht Programmierung Fallunterscheidung Flussdiagramm Bedingungen Boolesche

Mehr

1 Aufgabe: Computer-Aufbau

1 Aufgabe: Computer-Aufbau Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe: Jahr: WS 2016/17 Übungsleiter: Alexander Syndikus Unterschrift: 1 Aufgabe: Computer-Aufbau

Mehr

Programmieren I. Kapitel 5. Kontrollfluss

Programmieren I. Kapitel 5. Kontrollfluss Programmieren I Kapitel 5. Kontrollfluss Kapitel 5: Kontrollfluss Ziel: Komplexere Berechnungen im Methodenrumpf Ausdrücke und Anweisungen Fallunterscheidungen (if, switch) Wiederholte Ausführung (for,

Mehr

Programmieren. Warum Objektorientierung? Objektorientierung. Beispiele für Busobjekte der realen Welt

Programmieren. Warum Objektorientierung? Objektorientierung. Beispiele für Busobjekte der realen Welt Institut für Telematik Universität zu Lübeck 2-2 Warum Objektorientierung? Kapitel 5: Java (5.7 und 5.8) Wintersemester 2008/2009 Prof. Dr. Christian Werner Problem: Wie stelle ich eine Beziehung zwischen

Mehr

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank... Methoden und Klassen Silke Trißl Wissensmanagement in der Bioinformatik Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: hat Farbe Hubraum Tank kann man Gas geben Bremsen Hoch

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen 5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden

Mehr

Grundlagen der Informatik 0

Grundlagen der Informatik 0 Technische Universität Darmstadt 01.07.2013 Grundlagen der Informatik 0 Vorlesung 0 Java ist eine Programmiersprache Ilkay Baytekin Douglas Crockford http://media.smashingmagazine.com/wp-content/uploads/2012/04/doug-crockford-image.jpg

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 1 - Variablen und Kontrollstrukturen main Methode Startpunkt jeder Java Anwendung String[] args ist ein Array aus Parametern, die beim Aufruf über die Kommandozeile

Mehr

JAVA-Datentypen und deren Wertebereich

JAVA-Datentypen und deren Wertebereich Folge 8 Variablen & Operatoren JAVA 8.1 Variablen JAVA nutzt zum Ablegen (Zwischenspeichern) von Daten Variablen. (Dies funktioniert wie beim Taschenrechner. Dort können Sie mit der Taste eine Zahl zwischenspeichern).

Mehr

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener

Mehr

Grundlagen der OO- Programmierung in C#

Grundlagen der OO- Programmierung in C# Grundlagen der OO- Programmierung in C# Technische Grundlagen 1 Dr. Beatrice Amrhein Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung 2 Visual Studio 3

Mehr

7. Übung Informatik II - Objektorientierte Programmierung

7. Übung Informatik II - Objektorientierte Programmierung 7. Übung Informatik II - Objektorientierte Programmierung 29. Mai 2015 Inhalt 1 2 3 Übersicht 1 2 3 Idee Menschen nehmen die Welt in Form von Objekten wahr manche Objekte haben gleiche Eigenschaften, hierüber

Mehr

Universität zu Lübeck Institut für Telematik. Prof. Dr. Stefan Fischer

Universität zu Lübeck Institut für Telematik. Prof. Dr. Stefan Fischer Universität zu Lübeck Institut für Telematik Prof. Dr. Stefan Fischer Probeklausur im Fach Programmieren Hinweise zur Bearbeitung: Es sind keinerlei Hilfsmittel zugelassen. Diese Klausur umfasst 18 Seiten.

Mehr

2.5 Primitive Datentypen

2.5 Primitive Datentypen 2.5 Primitive Datentypen Wir unterscheiden 5 primitive Datentypen: ganze Zahlen -2, -1, -0, -1, -2,... reelle Zahlen 0.3, 0.3333..., π, 2.7 10 4 Zeichen a, b, c,... Zeichenreihen "Hello World", "TIFI",

Mehr

Grundlagen der Informatik Ergänzungen WS 2007/2008 Prof. Dr. Rainer Lütticke

Grundlagen der Informatik Ergänzungen WS 2007/2008 Prof. Dr. Rainer Lütticke Grundlagen der Informatik Ergänzungen WS 2007/2008 Prof. Dr. Rainer Lütticke 1 Links Stellenwertsysteme mit Links zu Zahlensysteme: http://de.wikipedia.org/wiki/stellenwertsystem ASCII-Code: http://de.wikipedia.org/wiki/ascii

Mehr

Variablen. int Flugzeug. float. I write code Hund. String. long. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel

Variablen. int Flugzeug. float. I write code Hund. String. long. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 4213 Variablen 17.834 float Flugzeug 36812736294 I write code Hund long String Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 3 + 4 1 Variablen sind wie Becher. Sie speichern etwas. // Variablen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Vordefinierte Datentypen Übersicht 1 Ganzzahlige Typen 2 Boolscher Typ 3 Gleitkommatypen 4 Referenztypen 5 void Typ 6 Implizite und explizite Typumwandlungen Ganzzahlige Typen Die

Mehr

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung Beispiele für Ausdrücke Der imperative Kern Deklarationen mit Initialisierung Variablendeklarationen int i = 10; int j = 15; Beispiele für Ausdrücke i+j i++ i & j i j [] [static]

Mehr

Wertebereich und Genauigkeit der Zahlendarstellung

Wertebereich und Genauigkeit der Zahlendarstellung Wertebereich und Genauigkeit der Zahlendarstellung Sowohl F als auch C kennen bei ganzen und Floating Point-Zahlen Datentypen verschiedener Genauigkeit. Bei ganzen Zahlen, die stets exakt dargestellt werden

Mehr

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH 1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH Die Umgebungsvariable CLASSPATH kann im Hamster-Simulator sowohl für Compiler als auch für die Ausführung des Hamster-Programms gesetzt werden: Hierdurch

Mehr

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

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz Kapitel 13 Abstrakte Methoden und Interfaces 13. Abstrakte Klassen und Interfaces 1. Abstrakte Klassen 2. Interfaces und Mehrfachvererbung Folie 12.2 Abstrakte Methoden und Klassen Manchmal macht es überhaupt

Mehr

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

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable 1 Kapitel 3 Grunddatentypen, Ausdrücke und Variable 2 Eine Datenstruktur besteht aus Grunddatentypen in Java einer Menge von Daten (Werten) charakteristischen Operationen Datenstrukturen werden mit einem

Mehr

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik Methoden und Klassen Silke Trißl Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode wird public

Mehr

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches

Mehr

Die einfachsten Anweisungen

Die einfachsten Anweisungen 2 Die einfachsten Anweisungen 2-1 Inhalt Die einfachsten Anweisungen Einführung Datentypen Arithmetische Operatoren Mathematische Funktionen Mehrfache Zuweisungen Übungsaufgaben Einführung Wir wollen unser

Mehr

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch) JAVA BASICS 2. Primitive Datentypen 1. Warum Java? weit verbreitet einfach und (relativ) sicher keine Pointer (?) keine gotos kein Präprozessor keine globalen Variablen garbage collection objekt-orientiert

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

Java Datentypen und Variablen

Java Datentypen und Variablen Informatik 1 für Nebenfachstudierende Grundmodul Java Datentypen und Variablen Kai-Steffen Hielscher Folienversion: 24. Januar 2017 Informatik 7 Rechnernetze und Kommunikationssysteme Inhaltsübersicht

Mehr

Zwischenklausur Informatik, WS 2016/17. Lösungen zu den Aufgaben

Zwischenklausur Informatik, WS 2016/17. Lösungen zu den Aufgaben Zwischenklausur Informatik, WS 206/7 4.2.206 Lösungen zu den Aufgaben. Gegeben sind folgende Dualzahlen in Zweierkomplementdarstellung. Geben Sie den jeweils zugehörigen Dezimalwert an! a) entspricht der

Mehr

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode Methoden und Klassen Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode

Mehr

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme)

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme) Tag 5 Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Methoden Deklaration

Mehr

Objektorientierte Programmierung und Klassen

Objektorientierte Programmierung und Klassen Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16.5.07 G. Bohlender (IANM UNI Karlsruhe) OOP

Mehr

Abschnitt 2: Daten und Algorithmen

Abschnitt 2: Daten und Algorithmen Abschnitt 2: Daten und Algorithmen 2. Daten und Algorithmen 2.1 Zeichenreihen 2.2 Datendarstellung durch Zeichenreihen 2.3 Syntaxdefinitionen 2.4 Algorithmen 2 Daten und Algorithmen Einf. Progr. (WS 08/09)

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

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

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit Primitive Datentypen Fließkommazahlen float: Fließkommazahl nach IEEE 754 Standard mit 32 bit Vorzeichen Exponent 8 bit Mantisse 23 bit double: Fließkommazahl nach IEEE 754 Standard mit 64 bit Vorzeichen

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 16 Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen

Mehr

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Innere Klassen 13.06.07 1 / 11

Mehr

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22 C++ Teil 2 Sven Groß IGPM, RWTH Aachen 16. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 2 16. Apr 2015 1 / 22 Themen der letzten Vorlesung Hallo Welt Elementare Datentypen Ein-/Ausgabe Operatoren Sven

Mehr

Grundlagen der Informatik 2. Typen

Grundlagen der Informatik 2. Typen Grundlagen der Informatik 2. Typen Speicher, Speicherbedarf Ein-/Ausgabe Grundlagen der Informatik (Alex Rempel) 1 Wiederholung // root calculation #include #include using namespace

Mehr

Einführung in C. EDV1-04C-Einführung 1

Einführung in C. EDV1-04C-Einführung 1 Einführung in C 1 Helmut Erlenkötter C Programmieren von Anfang an Rowohlt Taschenbuch Verlag ISBN 3-4993 499-60074-9 19,90 DM http://www.erlenkoetter.de Walter Herglotz Das Einsteigerseminar C++ bhv Verlags

Mehr

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2011/2012 1 / 25 Operatoren für elementare Datentypen Bedingte Schleifen 2 / 25 Zuweisungsoperator Die Zuweisung von Werten an Variablen

Mehr

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung I 2.0 Einfache Java Programme Thomas R. Gross Department Informatik ETH Zürich Uebersicht 2.0 Einfache Java Programme Struktur Namen Output 2 Graphische Darstellung

Mehr

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r 1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen

Mehr

1. Referenzdatentypen: Felder und Strings

1. Referenzdatentypen: Felder und Strings 1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen

Mehr

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

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.

Mehr

AuD-Tafelübung T-B5b

AuD-Tafelübung T-B5b 6. Übung Sichtbarkeiten, Rekursion, Javadoc Di, 29.11.2011 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit 3 Stack und Heap Stack Heap 4 Blatt 6 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit

Mehr

Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen II Algorithmen und Datenstrukturen II in JAVA D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Sommer 2009, 31. März 2009, c 2009 D.Rösner

Mehr

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Anwendungsentwicklung mit Java Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Vererbung (1) 2 Problem: Objekte mit gleichen Attributen/Methoden, aber nicht völlig identisch, z.b., LKW, PKW,

Mehr

Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Kapitel 3. Grunddatentypen, Ausdrücke und Variable Kapitel 3 Grunddatentypen, Ausdrücke und Variable Grunddatentypen, Ausdrücke und Variable 1 Eine Datenstruktur besteht aus Grunddatentypen in Java einer Menge von Daten (Werten) charakteristischen Operationen

Mehr

Umsetzung einer Klassenkarte in einer Programmiersprache

Umsetzung einer Klassenkarte in einer Programmiersprache Klassen in Java Umsetzung einer Klassenkarte in einer Programmiersprache Objektorientierte Programme bestehen (nur) aus Klassendefinitionen In Klassendefinitionen wird die Struktur der Objekte festgelegt,

Mehr

Programmieren 2 Java Überblick

Programmieren 2 Java Überblick Programmieren 2 Java Überblick 1 Klassen und Objekte 2 Vererbung 4 Innere Klassen 5 Exceptions 6 Funktionsbibliothek 7 Datenstrukturen und Algorithmen 8 Ein-/Ausgabe 9 Graphische Benutzeroberflächen 10

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition

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

Die Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache. Dr. Beatrice Amrhein

Die Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache. Dr. Beatrice Amrhein Die Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache Dr. Beatrice Amrhein Überblick Speicherverwaltung: Stack und Heap Ein- und Ausgabe über die Console Variablen und Operatoren Parameter

Mehr

Ein erstes Java-Programm

Ein erstes Java-Programm Ein erstes Java-Programm public class Rechnung { public static void main (String [] arguments) { int x, y; x = 10; y = -1 + 23 * 33 + 3 * 7 * (5 + 6); System.out.print ("Das Resultat ist "); System.out.println

Mehr

4.4 Imperative Algorithmen Prozeduren

4.4 Imperative Algorithmen Prozeduren 4.4.2 Prozeduren Der Wert eines Ausdrucks u in Zustand z Z lässt sich damit auch leicht definieren (jetzt W Z statt W σ ) Dazu erweitern wir die rekursive Definition von Folie 57 (Wert eines Ausdrucks):

Mehr

Kapitel 3: Variablen

Kapitel 3: Variablen Kapitel 3: Variablen Thema: Programmieren Seite: 1 Kapitel 3: Variablen Im letzten Kapitel haben wir gelernt, bestimmte Ereignisse zu wiederholen solange eine Bedingung erfüllt ist. Nun möchten wir aber

Mehr

Einheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen

Einheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen Einheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen Kurs C/C++ Programmierung, WS 2008/2009 Dipl.Inform. R. Spurk Arbeitsgruppe Programmierung FR 6.2 Informatik

Mehr

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

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 25.4.07, Anweisungen Übersicht 1 Ausdrucksanweisung 2 Einfache Ausgabeanweisung 3 Einfache Eingabeanweisung, Vorbereitungen 4 Verbundanweisung 5 Bedingte Anweisung 6 Auswahlanweisung 7 for

Mehr

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

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18

Mehr

Informationsmenge. Maßeinheit: 1 Bit. 1 Byte. Umrechnungen: Informationsmenge zur Beantwortung einer Binärfrage kleinstmögliche Informationseinheit

Informationsmenge. Maßeinheit: 1 Bit. 1 Byte. Umrechnungen: Informationsmenge zur Beantwortung einer Binärfrage kleinstmögliche Informationseinheit Informationsmenge Maßeinheit: 1 Bit Informationsmenge zur Beantwortung einer Binärfrage kleinstmögliche Informationseinheit 1 Byte Zusammenfassung von 8 Bit, kleinste Speichereinheit im Computer, liefert

Mehr

Methoden und Wrapperklassen

Methoden und Wrapperklassen Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)

Mehr

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Test-Besprechung! Ziele verdeutlichen Große Bild von OOP Wiederholung: Einbettung als Technik

Mehr