CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

Größe: px
Ab Seite anzeigen:

Download "CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)"

Transkript

1 CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Interface Seite 1

2 Schnittstelle / Interface Seite 2

3 Spezifikation / Schnittstelle / Interface Spezifikation Beschreibung einer Komponente Dient als Basis der Implementierung Nicht Bestandteil (des Codes) der Komponente Begr if Schnittstelle Beschreibung einer Komponente Dient als Basis der Benutzung der Komponente Bestandteil der Komponente (ihr sichtbarer Teil) fsübe rs i ch t Interface Beschreibung einer (Gruppe von) Komponente(n) Dient als Basis der Benutzung der Komponente(n) Nicht Bestandteil der Komponente Java-Konstrukt Seite 3

4 Spezifikation / Schnittstelle / Interface : UML Spezifikation Schnittstelle Interface Beschreibung des Verhaltens einer Komponente Reduktion der Spezifikation auf ihre syntaktischen Bestandteile Schnittstelle als eigenständiges herausgelöstes Konstrukt Spezifikation Stack - elems: Sequence(double) + Stack() + empty():bool + full():bool + push(int):void + pop():void + top():int Schnittstelle Interface init: <> inv: size(elems) <= 10 pre: post: return size(elems)==0 pre: post: size(elems)==10 pre: size(elems)<10 post: elems = x+elems@pre <<interface>> Stack + empty():bool + full():bool + push(int):void + pop():void + top():int pre: size(elems)>0 post: elems@pre = x + elems pre: size(elems)>0 post: returns first(elems) Seite 4

5 Interface in UML Interface-Piktogramm Bestandteil von Klassendiagrammen Piktogramm ähnlich zu Klassendiagramm Zwei Bereiche Name mit Stereotyp <<interface>> Methoden Stereotyp-Bezeichnung <<interface>> Stack empty():bool full():bool push(int):void pop():void top():int Name Methoden (implizit oder explizit alle öffentlich) Seite 5

6 Interface in Java Interface Definition als interface entsprechend einer Klasse Die Definition kann enthalten Deklaration nicht statischer Methoden (Kopf der Methode) Definition von statischen Konstanten Definition von Klassen-Typen (class, oder interface) Ein Interface beschreibt die Schnittstelle der Objekte (!) der Klassen, die das Interface implementieren public interface Stack { int top(); void push(int x); void pop(); Interface-Definition in Java: - Methoden ohne Körper - keine Konstruktoren - alle Methoden sind immer public (ob man es hinschreibt oder nicht) - Konstanten (implizit public static final) - Typdefinition (class / enum / interface) Seite 6

7 Interface und Ausnahmen public interface Stack { int top() throws IllegalStateException ; void push(int x) throws IllegalStateException ; void pop(); Schnittstellen-Definition deklarieren auch die Ausnahmen von Methoden Seite 7

8 Implementierung eines Interface / UML UML-Piktogramm implementiert (realisiert) ArrayStack - count: int - elem: int[10] + Stack() + empty():bool + full():bool + push(int):void + pop():void + top():int <<interface>> Stack empty():bool full():bool push(int):void pop():void top():int UML-Piktogramm Interface weiteres UML-Piktogramm für ein Interface Stack ArrayStack realisiert (implementiert) die Stack-Schnittstelle Seite 8 ArrayStack abgekürzte Notation mit speziellem Piktogramm für Schnittstellen

9 Implementierung eines Interface / Java Klassen implementieren ein Interface, wenn sie (ihre Objekte) eine Implementierung aller Methoden des Interface bieten (wenn also ihre Schnittstelle das Interface umfasst) und wenn sie dies explizit erklären. Stack public class ArrayStack implements Stack { private int count; private int[] a = new int[10]; public ArrayStack() { count = 0; ArrayStack Stack public int top() throws StackEmptyEx { ArrayStack Interface und implementierende Klasse : Zwei alternative Darstelllungen in UML Seite 9

10 Interface : Verwendung Benutzung eines Interface kann in UML explizit dargestellt werden in Java ist die Verwendung nur implizit erkennbar public class StackUser { private Stack stack; nutzt / benötigt / importiert das Interface Stack public StackUser(Stack stack) { this.stack = stack; public void use() { Scanner scan = new Scanner(System.in); try { int x = scan.nextint(); while (x > 0 ) { stack.push( x ); x = scan.nextint(); catch( Exception e ) { System.out.println(e); Import-Interface: Funktionalität benötigen Export-Interface: Funktionalität bereit stellen StackUser benötigt / benutzt Stack-Interface / braucht die Stack-Funktionalität StackUser Stack Stack ArrayStack ArrayStack bietet StackFunktionalität Seite 10

11 Interface und anonyme Klassen interface Stack { int top(); void push(int x); void pop(); static void use(stack stack) { Scanner scan = new Scanner(System.in); int x = scan.nextint(); while (x > 0) { stack.push(x); x = scan.nextint(); public static void main(string[] args) { use( new Stack() { private int count = -1; private int[] a = new public void pop() { public void push(int x) { a[++count] = public int top() { return a[count]; ); Seite 11 Eine anonyme innere Klasse die das Interface Stack implementiert.

12 Interface Objekt Interfaces: allgemeine (Standard-) Typen Seite 12

13 Interface : Verwendung Ein Interface ist ein Typ Verwendung als Parametertyp / Ergebnistyp als Typ einer Variablen public void usestack(stack stack) { stack.push(5); nutze irgendeine Art von Stack usestack( new ArrayStack() );... z.b. einen ArrayStack Stack astack; astack = new ArrayStack();... z.b. mit einen ArrayStack belege mit irgendeiner Art von Stack Seite 13

14 Interface : Entkopplung von Anbieter und Nutzer Interfaces machen den Programmcode flexibler durch die Entkopplung von Anbieter und Nutzer einer Funktionalität User Benutzer-Klassen benötigen eine bestimmte Funktionalität dargestellt durch eine Schnittstelle Sie verwenden im Code das entsprechende Interface <<user>> Interface Die Funktionalität / Schnittstelle kann von mehreren Anbieter-Klassen realisiert werden Sie implementieren das entsprechende Interface Jede beliebige Anbieter-Klasse (Implementierung) kann von der Benutzerklasse genutzt werden Schnittstelle : Schnittstelle als JavaKonstrukt Schnittstelle Schnittstelle Anbieter und Benutzer sind entkoppelt Interfaces machen nur dann Sinn, wenn eine Schnittstelle (eventuell) von mehreren Klassen implementiert werden kann! Seite 14 2 (Anbieter-) Klassen mit gleicher Schnittstelle

15 Interface: Verwendung als Entkoppler public class ArrayStack implements Stack { private int[] a = new int[10];... Variante 1 der Stack-Impl. Stackimplementierung mit Feld Ein Exemplar der Klasse ArrayStack ist ein Stack ; Ein Exemplar der Klasse VarStack ist ein Stack ; Ein Exemplar der Klasse StackUser, benutzt ein (oder mehrere) Objekt(e) die Stacks sind. ArrayStack public class VarStack implements Stack { private int a0,a1,a2,a3, a5,a6,a7,a8,a9;... Variante 2 der Stack-Impl. VarStack Stack Stack Stack Stackimplementierung mit Variablen StackUser public static void main(string[] args) { Stackuser stackuser1 = new StackUser( new ArrayStack() ); Stackuser stackuser2 = new StackUser( new VarStack() );... Seite 15

16 Interface und Typ Ein Interface ist ein Typ ArrayStack VarStack Der Typ eines Interface ist eine Verallgemeinerung des Typs der Implementierungs-Klassen Ein ArrayStack ist eine Art von Stack Jedes Exemplar der Klasse / des Typs ArrayStack ist ein Exemplar des Typs Stack Ein VarStack ist eine Art von Stack Jedes Exemplar der Klasse / des Typs VarStack ist ein Exemplar des Typs Stack Stack ist allgemeiner als ArrayStack ist allgemeiner als VarStack Wir sind alle Stacks Wir sind alle Stacks Wir benötigen Dinge vom Typ Stack StackUser Seite 16

17 Interface und Schnittstelle Interface Schnittstelle Die Schnittstelle einer Klasse ist Bestandteil der Klassendefinition Ein Interface ist nicht Teil einer Klassendefinition Ein Interface hat eine eigene Existenz Schnittstelle ~ Gesicht Interface ~ Maske Interface Schnittstelle Die Schnittstelle ist integraler Bestandteil der Definition Ihre Benutzersicht. Das Interface ist vorgesetzt, es passt exakt zu (einem Teil) der Schnittstelle Seite 17

18 Interface und Typ Override (to override: aufheben, ausschalten, überschreiben, überspielen, ) Die Annotation Override sagt dass eine Definition eine andere überschreibt / ersetzt. Ab Java 1.6: Override kann (sollte) auch verwendet werden, wenn eine Methodendefinition in einer Klasse die (Ankündigung einer) Definition in einem Interface ersetzt. public interface Stack { int top(); überschreibt public class ArrayStack implements Stack public top() { Seite 18

19 Interface und ADT Seite 19

20 Interface und ADT Ein abstrakter Datentyp (ADT) ist ein selbst implementierter Datentyp ADT: Abstrakter Datentyp Bei einem Konstrukt (Klassendefinition) sind Schnittstelle und Implementierung getrennt (Geheimnisprinzip / Kapselung). Zu einer Schnittstelle gibt es genau eine Implementierung. Schnittstelle Implementierung Geheimnisprinzip Schnittstelle als Interface Interface Schnittstelle und Implementierung sind als Sprachkonstrukte (Klasse und Interface) getrennt. Zu einer Schnittstelle kann es beliebig viele Implementierungen geben Schnittstelle Schnittstelle Implementierung A Implementierung B Geheimnisprinzip plus Entkopplung der Schnittstelle Seite 20

21 Interface und ADT: Beispiel Stack Beispiel Stack: Interface OK ArrayStack Stack public interface Stack { void push ( int x ); void pop(); int pop(); VarStack Stack public class ArrayStack implements Stack { public class VarStack implements Stack { private int count; private int[] a = new int[10]; private int a0,a1,a2,a3, a5,a6,a7,a8,a9;... Konstruktor(en) Methoden-Implementierung Konstruktor(en) Methoden-Implementierung... Schnittstelle als eigenständiges Programmkonstrukt ist sinnvoll: Die Stack-Klasse(n) und Anwender sind maximal entkoppelt; Für eine Stack-Benutzer ist es unerheblich welche Variante er nutzt. Seite 21

22 Interface und ADT: Beispiel Vektor Beispiel Vektor KarthesischerVektor Vektor public interface Vektor { void add ( Vektor v ); PolarKoordVektor Vektor public class KarthesischerVektor implements Vektor { y private double x; private double y; x public void add ( Vektor v ) {... Problem? public class PolarKoordVektor implements Vektor { private double rho; l rho private double l; public void add ( Vektor v ) {... Seite 22

23 Interface und ADT: Beispiel Vektor Beispiel Vektor: Interface zweifelhaft public interface Vektor { public void add ( Vektor v ); KarthesischerVektor Vektor PolarKoordVektor public class KarthesischerVektor Vektor implements Vektor { private double x; private double y; public void add ( Vektor v ) { if ( v instanceof KarthesischerVektor) { Stapel interagieren nicht, Vektoren aber sehr wohl!... einfach... else {... kompliziert / Umwandeln enge Kopplung der beiden Vektor-Implementierungen wahrscheinlich nicht sinnvoll eine Vektor-Implementierung reicht wohl Seite 23

24 Interface und ADT: Stapel / Vektor Stapel Zustands-orientierte Klasse Objekte modellieren Stack-Variablen Stapel ist Container-Typ (stark Schnittstellenorientiert, Innenleben nicht interessant) Keine Operation, die mehr als einen Stack verarbeitet (art-fremde Stacks begegnen sich nie) Integer push pop top ADT Stack Signaturdiagramm Vektor Wert-orientierte Klasse Objekte modellieren Vektoren Operation, die mehr als einen Vektor-Wert verarbeiten (art-fremde Vektoren können sich begegnen) Stack add Vektor sub ADT Vektor Signaturdiagramm Seite 24

25 Interface und ADT: Stapel / Vektor Stapel Interface zur Vereinheitlichung von Implementierungsvarianten OK! Vektor Interface zur Vereinheitlichung von Implementierungsvarianten Wenig sinnvoll! Ein Interface als Zusammenfassung unterschiedlicher ImplementierungsVarianten kann sinnvoll sein, muss aber nicht! Seite 25

26 Interface als Gemeinsames unterschiedlicher Schnittstellen allgemeine Funktionalität ADT Bei einem Konstrukt (Klassendefinition) sind Schnittstelle und Implementierung getrennt (Geheimnisprinzip / Kapselung). Zu einer Schnittstelle gibt es genau eine Implementierung. Schnittstelle A als Interface weitere speziellere Funktionalitäten Interface Schnittstelle und Implementierung sind als Sprachkonstrukte (Klasse und Interface) getrennt. Schnittstelle A Schnittstelle A Zu einer Schnittstelle kann es beliebig Schnittstelle A1 Schnittstelle A2 viele Implementierungen geben Zu einer Schnittstelle kann es beliebig Implementierung X Implementierung Y viele weiter spezialisierte Schnittstellen geben. (Bieten mehr als Geheimnisprinzip plus Entkopplung der die Basis-Funktionalität) Schnittstelle plus Verallgemeinerung der Schnittstelle Seite 26

27 Interface als Gemeinsames unterschiedlicher Schnittstellen Grasfresser Grasfresser Grasfresser Milch-Lieferant Woll-Lieferant Kuh Schaf Grasfresser : können mit Gras gefüttert werden Kühe : können mit Gras gefüttert werden und geben Milch Schafe : können mit Gras gefüttert werden und geben Wolle Die Grasfresser müssen noch mit Gras gefüttert werden! Beim Füttern ist es egal, welches Tier gefüttert wird, solange es Gras fressen kann. Es kommt nur auf das Grasfressen an. Seite 27

28 Interface als Gemeinsames unterschiedlicher Schnittstellen public interface GrasFresser { void fresse(gras g); public final class Kuh implements GrasFresser { private boolean satt; public class Bauer { public final void fuettern(grasfresser[] stall, Gras[] grasvorrat) { int i = 0; for (GrasFresser fresser : stall) { fresser.fresse(grasvorrat[i++]); public final class Schaf implements GrasFresser { private boolean public void fresse(gras g) { satt = true; public void fresse(gras g) { satt = true; System.out.println("BAEHH"); public Milch melke() { satt = false; return new Milch(); public Wolle schere() { satt = false; return new Wolle(); Seite 28

29 Interface als Gemeinsames unterschiedlicher Schnittstellen public static void main(string[] args) { Bauer egon = new Bauer(); GrasFresser[] stall = new GrasFresser[3]; stall[0] = new Kuh(); stall[1] = new Schaf(); stall[2] = new Kuh(); Gras[] grasvorrat = grasvorrat[0] = new grasvorrat[1] = new grasvorrat[2] = new Nun fresst schön ihr GrasFresser! new Gras[3]; Gras(); Gras(); Gras(); egon.fuettern(stall, grasvorrat); Bauer egon public class Bauer { public final void fuettern(grasfresser[] stall, Gras[] grasvorrat) { int i = 0; for (GrasFresser fresser : stall) { fresser.fresse(grasvorrat[i++]); Seite 29

30 Klasse und Interface Klasse und Interface Eine Klasse kann mehrere Interfaces implementieren: Ihre Objekte sind in der Lage mehrere Rolle zu spielen. WollTier GrasFresser Gentlemen Verbrecher Schaf IrrerArzt Seite 30

31 Klasse und Interface public interface WollTier { Wolle schere(); WollTier GrasFresser public interface GrasFresser { void fresse(gras g); Schaf public final class Schaf implements GrasFresser, WollTier { private boolean public void fresse(gras g) { satt = true; public Wolle schere() { satt = false; return new Wolle(); Seite 31

32 Klasse und Interface Statischer und dynamischer Typ Statischer Typ: Der rein aus dem Programmtext erkennbare Typ eines Ausdrucks im Programmtext (Variable, Parameter, arithmetischer Ausdruck, etc.) Der statische Typ spielt in Java die erste Geige : er steuert die Code-Erzeugung des Compilers. WollTier wt = new Schaf(); wt.fresse(new Gras()); The method fresse(gras) is undefined for Type WollTier Fressen?: Geht nicht: Zum (statischen) Typ WollTier gibt es keine Methode fresse! Dynamischer Typ: Der Typ eines Objektes zur Laufzeit. Der dynamische Typ spielt in Java die zweite Geige : Er steuert die Feinheiten des Verhaltens. Der dynamische Typ muss immer zum statischen Typ passen. Grassfresser gf1 = new Schaf(); Grassfresser gf2 = new Kuh(); gf1.fresse(new Gras()); gf2.fresse(new Gras()); Fresse Gras nach Art der Schafe. Fresse Gras nach Art der Kühe Seite 32

33 Klasse und Interface public static void main(string[] args) { Bauer egon = new Bauer(); WollTier GrasFresser GrasFresser[] stall = new GrasFresser[2]; stall[0] = new Kuh(); stall[1] = new Schaf(); Gras[] grasvorrat = new Gras[2]; grasvorrat[0] = new Gras(); grasvorrat[1] = new Gras(); Schaf Cast: egon.fuettern(stall, grasvorrat); WollTier wt = new Schaf(); egon.scheren(new WollTier[]{ wt ) stall[1] hat den Typ GrassFresser, scheren erwartet WollTiere. Der GrassFresser in stall[1] muss mit (WollTier) als WollTier deklariert werden (Cast). Wolle w = egon.scheren(new WollTier[]{ (WollTier) stall[1] ); Seite 33

34 Klasse und Interface Statischer und dynamischer Typ : Cast Ein Ausdruck hat einen festen statischen Typ und zur Laufzeit (wechselnde) Werte mit jeweils einem eventuell anderen - dynamischen Typ. Der statische Typ kann mit einem Cast geändert werden, wenn das Objekt den geforderten Typ haben könnte. Zur Laufzeit wird geprüft, ob dies tatsächlich der Fall ist. GrasFresser[] stall = In stall[1] könnte ein WollTier sein, denn es gibt GrasFresser die WollTiere sind. Eine Prüfung ist aber sinnvoll, denn nicht alle GrasFresser sind WollTiere. WollTier GrasFresser (WollTier) stall[1] Schaf MilchTier Kuh Der Cast wird zur Laufzeit überwacht: Ist da wirklich ein Wolltier in stall[1]? Seite 34

35 Interface : Zusammenfassung Interface Das Konzept Interface ist sehr wichtig für einen modernen Programmierstil (nicht nur) in Java. Ein Interface trennt Verhalten und Verwendbarkeit von Implementierungen auf Sprachebene. Statt wie das Konzept der Schnittstelle auf konzeptioneller Ebene. Ein Interface definiert einen Typ: D.h. Eine Verwendungsmöglichkeit für Objekte! Eine Klasse, die ein Interface implementiert, kann Objekte erzeugen, die entsprechend verwendbar sind. Variablen und Parameter sollten als Typ (wenn möglich) ein Interface haben. Der Typ einer Variablen sollte die minimale Anforderung an deren Inhalte (Werte) formulieren. Seite 35

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Th Letschert UML Seite 1 Th Letschert UML - Klassen- / Paket- / Sequenzdiagramm - UML / OCL in Spezifikation und Implementierung

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces

14 Abstrakte Klassen, finale Klassen, Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt. Für eine abstrakte Klasse

Mehr

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

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen Auswertung von Ausdrücken Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt.

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces

14 Abstrakte Klassen, finale Klassen, Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt. Für eine abstrakte Klasse

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

Informatik II Übung 6 Gruppe 7

Informatik II Übung 6 Gruppe 7 Informatik II Übung 6 Gruppe 7 Leyna Sadamori leyna.sadamori@inf.ethz.ch DEBRIEFING Übung 5 2 U5A1-4 Im Prinzip alles richtig. Falls am Ende noch Zeit, dann Einsicht in die Best Of s 3 THEORIE Java Vererbung,

Mehr

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

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 7 Markus Reschke 14.10.2014 Vererbung in Java Vererbung ermöglicht es, Klassen zu spezialisieren Wiederverwendung vorhandener Klassen Kindsklasse erhält

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

Die abstrakte Klasse Expression:

Die abstrakte Klasse Expression: Die abstrakte Klasse Expression: Expression abstract evaluate() Add Neg Const 501 Die abstrakte Klasse Expression: Expression abstract evaluate() Add Neg Const Leider (zum Glück?) lässt sich nicht die

Mehr

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen 7. Schnittstellen Grundlagen zu Schnittstellen 7. Schnittstellen Eine Schnittstelle (Interface) ist eine Spezifikation eines Typs in Form eines Typnamens und einer Menge von Methoden, die keine Implementierungen

Mehr

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

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax Weitere Beispiele Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts public interface Funktion { boolean istimdefbereich(double x); double wert(double x); String gibbeschreibung(); public interface

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 13 Einstieg in die Informatik mit Java Schnittstellen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 13 1 Einführung 2 Definition einer Schnittstelle 3 Implementierung

Mehr

1 Abstrakte Klassen, finale Klassen und Interfaces

1 Abstrakte Klassen, finale Klassen und Interfaces 1 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

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7. CoMa 04 Java II Paul Boeck Humboldt Universität zu Berlin Institut für Mathematik 7. Mai 2013 Paul Boeck CoMa 04 7. Mai 2013 1 / 13 Verzweigungen Wenn-Dann Beziehungen if (BEDINGUNG) { else if (BEDINGUNG2)

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 13: Interfaces Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme 1. Teil: Interfaces Motivation Eigenschaften Besonderheiten Anonyme Klassen Lambda-Ausdrücke Praxis:

Mehr

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen Aufgabenblatt 4 Aufgabe 1 1. Erläutern Sie in eigenen Worten die Begriffe Datenstruktur, Datentyp und abstrakter Datentyp. Nutzen Sie das Beispiel

Mehr

7. Objektorientierung. Informatik II für Verkehrsingenieure

7. Objektorientierung. Informatik II für Verkehrsingenieure 7. Objektorientierung Informatik II für Verkehrsingenieure Klassen, Objekte und Attribute Buslinie und Haltestellen 3 Haltestellen und deren Eigenschaften Bauplan einer Haltestelle (Struktur) Konkrete

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

Beispiel: die Klasse Brüche

Beispiel: die Klasse Brüche Universität München, Hans-Peter Kriegel und Thomas Seidl Informatik II -138 Beispiel: die Klasse Brüche class Fraction { int num; Int denom; // numerator // denominator Fraction (int n, int d) { num =

Mehr

CS1005 Objektorientierte Programmierung

CS1005 Objektorientierte Programmierung CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Objektorientierung I : Statische Klassen Statische Aspekte (Modularisierung) Dynamische Aspekte (Klassen-Objekte) Seite 1 Th Letschert

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute

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

Theorie zu Übung 8 Implementierung in Java

Theorie zu Übung 8 Implementierung in Java Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept

Mehr

Informatik II Übung 06. Benjamin Hepp 5 April 2017

Informatik II Übung 06. Benjamin Hepp 5 April 2017 Informatik II Übung 06 Benjamin Hepp benjamin.hepp@inf.ethz.ch 5 April 2017 Nachbesprechung U5 5 April 2017 Informatik II - Übung 01 2 Nachbesprechung U5 1. Einfach verkettete Listen Keine Probleme 2.

Mehr

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

Mehr

Info B VL 8: Abstrakte Klassen & Interfaces

Info B VL 8: Abstrakte Klassen & Interfaces Info B VL 8: Abstrakte Klassen & Interfaces Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 8: Abstrakte

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

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik Programmieren II Innere Klassen Heusch 10, 13.10 Ratz 5.2.1, 9.8 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Innere Klassen Bisher kennen wir nur Klassen, die entweder zusammen

Mehr

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik Klassen und höhere Datentypen Objekte, Felder, Methoden Küchlin/Weber: Einführung in die Informatik Klassen Klasse (class) stellt einen (i.a. benutzerdefinierten) Verbund-Datentyp dar Objekte sind Instanzen

Mehr

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen?

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen? Generic Programming without Generics from JAVA5 Motivation Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen? Ein Bespiel: sie haben bereits eine Klasse zur Multiplikation von Matrizen

Mehr

Programmieren in Java -Eingangstest-

Programmieren in Java -Eingangstest- Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit

Mehr

Algorithmen und Programmierung III

Algorithmen und Programmierung III Musterlösung zum 4. Aufgabenblatt zur Vorlesung WS 2006 Algorithmen und Programmierung III von Christian Grümme Aufgabe 1 Amortisierte Analyse 10 Punkte Zu erst betrachte ich wie oft die letzte Ziffer

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

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

Informatik II. Übungsstunde 6. Distributed Systems Group, ETH Zürich

Informatik II. Übungsstunde 6. Distributed Systems Group, ETH Zürich Informatik II Übungsstunde 6 simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich Ablauf Besprechung der Vorlesung Uebungsbezogene Themen: Statisches & Dynamisches Type Checking Zeit zum Programmieren...

Mehr

Tafelübung 07 Algorithmen und Datenstrukturen

Tafelübung 07 Algorithmen und Datenstrukturen Tafelübung 07 Algorithmen und Datenstrukturen Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Vererbung Grundlagen Abstrakte

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

Prüfung Softwareentwicklung II (IB)

Prüfung Softwareentwicklung II (IB) Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IB 2 B, IB 2 C Sommersemester 2013 Prüfung Softwareentwicklung II (IB) Datum : 11.07.2013, 08:30 Uhr

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

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. ) Technische Informatik für Ingenieure (TIfI) WS 2006/2007, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Rekursion Datenstrukturen Merge S ( split, s, merge ) Beispiel:

Mehr

2.3 Implementierung und Anwendung von ADT Anwendung von ADT... am Beispiel "Stapel"

2.3 Implementierung und Anwendung von ADT Anwendung von ADT... am Beispiel Stapel 2.3 Implementierung und Anwendung von ADT 2.3.1 Anwendung von ADT. am Beispiel "Stapel" Ziel Implementierung einer Anwendung ohne Annahmen über die Implementierung der Typen Austauschen der Implementierung

Mehr

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Schnittstellen, Vererbung & Polymorphismus für Fortgeschrittene

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Schnittstellen, Vererbung & Polymorphismus für Fortgeschrittene Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Schnittstellen, Vererbung & Polymorphismus für Fortgeschrittene Motivation Aufgabe: Finanzbuchhaltungssystem für internationale Hotelkette

Mehr

Abschnitt 10: Typisierte Klassen

Abschnitt 10: Typisierte Klassen Abschnitt 10: Typisierte Klassen 10. Typisierte Klassen 10.1 Einführung: Grenzen der Typ-Polymorphie durch Vererbung 10.2 Grundlagen 10.3 Vererbung bei typisierten Klassen 10.4 Wildcards, obere und untere

Mehr

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 / 20 Polymorphie/Späte Bindung Abstrakte Klassen Interfaces 2 / 20 Definition: Polymorphie Der Begriff Polymorphie (manchmal

Mehr

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Grundzüge der Programmierung. Wiederverwendung VERERBUNG Grundzüge der Programmierung Wiederverwendung VERERBUNG Inhalt dieser Einheit Syntax: Vererbung in Java Superklassen - Subklassen Konstruktorenaufruf in Subklassen super, abstract und final 2 Code-Reuse

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

Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen. J. W. v. Goethe.

Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen. J. W. v. Goethe. Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen. J. W. v. Goethe http://www.zitate-online.de/autor/goethe-johann-wolfgang-von/ http://www.weimar-lese.de/files_weimar_lese/johann_wolfgang_von_goethe_bearbeitet_von_andreas_werner.jpg

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

// compiliert, aber Programmabbruch zur Laufzeit: einesuppe = ((EßbarerPilz)einPilz).kochen();

// compiliert, aber Programmabbruch zur Laufzeit: einesuppe = ((EßbarerPilz)einPilz).kochen(); Typecast class Pilz void suchen() void sammeln() class EßbarerPilz extends Pilz Suppe kochen() Suppe einesuppe = new Suppe(); return einesuppe; class GiftPilz extends Pilz void entsorgen() class Suppe

Mehr

Kapitel 5: Interfaces

Kapitel 5: Interfaces Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 5: Interfaces Folie 82 : Einleitung Betrachtet man die Programmierleistung für ein Produkt über einen längeren Zeitraum,

Mehr

Informatik II Übung 6

Informatik II Übung 6 Informatik II Übung 6 Gruppe 2 Carina Fuss cfuss@student.ethz.ch 11.4.2018 Carina Fuss 11.4.2018 1 Übung 6 Nachbesprechung Übung 5 Objektorientierung Vererbung, Polymorphie, abstrakte Klassen, Interfaces,

Mehr

Objektorientierte Konzepte

Objektorientierte Konzepte Objektorientierte Konzepte Objekt Klasse enthaltender Polymorphismus (Untertypen) Vererbung Objektorientierte Programmierung, Grundlagen und Ziele 1 Objekt Objekt kapselt Variablen und Routinen Interaktionen

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

Mehr

Programmieren in Java

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

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0 9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung

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

Klassen und ihre Beziehungen III: Mehrfache Vererbung, Rollen, Schnittstellen und Pakete

Klassen und ihre Beziehungen III: Mehrfache Vererbung, Rollen, Schnittstellen und Pakete 2 Klassen und ihre Beziehungen III: Mehrfache Vererbung, Rollen, und Pakete Martin Wirsing Ziele Den Begriff der einfachen und mehrfachen Vererbung verstehen Verstehen, wann Vererbung eingesetzt wird deklarationen

Mehr

Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen

Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen Th Letschert FH Gießen-Friedberg Th. Letschert OOP 2 Sichtbarkeitsbeziehungen und Geheimnisprinzip Sichtbarkeitsbeziehungen realisieren

Mehr

ALP II Dynamische Datenmengen Datenabstraktion

ALP II Dynamische Datenmengen Datenabstraktion ALP II Dynamische Datenmengen Datenabstraktion O1 O2 O3 O4 SS 2012 Prof Dr Margarita Esponda M Esponda-Argüero 1 Dynamische Datenmengen Dynamische Datenmengen können durch verschiedene Datenstrukturen

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

Programmieren 1 08 Objekte und Interfaces

Programmieren 1 08 Objekte und Interfaces Programmieren 1 08 Objekte und Interfaces Bachelor Medieninformatik Sommersemester 2015 Dipl.-Inform. Ilse Schmiedecke schmiedecke@beuth-hochschule.de 1 Objektorientierung: Von Static zu Instance Klasse

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

Einführung in die Systemprogrammierung

Einführung in die Systemprogrammierung Einführung in die Systemprogrammierung Virtuelle Methodentabellen Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 9. Juli 2015 Struktur der Objektorientierung Ein wenig Java: public

Mehr

Faulheit professionell: Fertige Datenbehälter. Das Java-Collections-Framework Typsicherheit Generische Klassen

Faulheit professionell: Fertige Datenbehälter. Das Java-Collections-Framework Typsicherheit Generische Klassen Faulheit professionell: Fertige Datenbehälter Das Java-Collections-Framework Typsicherheit Generische Klassen Das Java Collections Framework Grundlegende Interfaces Das Interface List Das Interface List

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2016/17 11. Vorlesung Elementare Datenstrukturen: Stapel + Schlange + Liste Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2-4 Zur Erinnerung Datenstruktur:

Mehr

Info B VL 11: Innere Klassen/Collections

Info B VL 11: Innere Klassen/Collections Info B VL 11: Innere Klassen/Collections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 11: Innere Klassen/Collections

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

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 07: Composite Classes Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2017 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 23 Inhalt

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Java 7 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 21.10.2015 Technische Universität Braunschweig, IPS Überblick OO in Java Vererbung Abstrakte Klassen und Interfaces 21.10.2015 Dr. Werner Struckmann

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

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1 Fachhochschule Stralsund Fachbereich Maschinenbau Lehrgebiet Informatik Prof. Dr.-Ing. Ch.Wahmkow Arbeitsblätter für die Lehrveranstaltung OOP I. Aufbau eines Java-Programmes JAVA 1 Escape-Sequenzen zur

Mehr

Tutoraufgabe 1 (Implementierung eines ADTs):

Tutoraufgabe 1 (Implementierung eines ADTs): Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Tutoriumslösung - Übung (Abgabe.05.0) F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe (Implementierung eines ADTs): Wir spezifizieren den ADT

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

Institut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur

Institut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 2. Februar 2017 Hinweise: Klausurtermine: Programmieren I Übungsklausur Programmieren I: 13. März

Mehr

Klausur: Java (Liste P)

Klausur: Java (Liste P) Klausur: Java (Liste P) SS05 Erlaubte Hilfsmittel: Gebundene! Unterlagen (Skript mit Anmerkungen, eigene Mitschrift) und maximal ein Buch. Bitte keine losen Blätter. Lösung ist auf den Klausurbögen anzufertigen.

Mehr

OCP Java SE 8. Lambda

OCP Java SE 8. Lambda OCP Java SE 8 Lambda Lambda-Ausdruck sieht ähnlich wie eine Deklaration einer Methode ohne Name und Ergebnistyp aus (a, b) -> b.compareto(a) Lambda Vor Java 8 Ausführbarer Programmcode ( Verhalten ) nur

Mehr

Interface. So werden Interfaces gemacht

Interface. So werden Interfaces gemacht Design Ein Interface (=Schnittstelle / Definition) beschreibt, welche Funktionalität eine Implementation nach Aussen anzubieten hat. Die dahinter liegende Algorithmik wird aber der Implementation überlassen.

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

Objektorientierte Programmierung. Kapitel 14: Interfaces

Objektorientierte Programmierung. Kapitel 14: Interfaces 14. Interfaces 1/26 Objektorientierte Programmierung Kapitel 14: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2013/14 http://www.informatik.uni-halle.de/ brass/oop13/

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte

Mehr

Philipp Güttler Progwerkstatt Letzte Änderung: Enums, Interfaces, Generics und Threads

Philipp Güttler Progwerkstatt Letzte Änderung: Enums, Interfaces, Generics und Threads Philipp Güttler 18.11.2008 Progwerkstatt Letzte Änderung: 09.12.2009 Enums, Interfaces, Generics und Threads Seite 2 Enums Enums, Interfaces und Generics 17.11.2008 Enum Typen komplexer Datentyp, der festen

Mehr

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

2.2 Spezifikation abstrakter Datentypen. 2.3 Implementierung und Anwendung von ADT. 2.4 Datenabstraktion und Objektorientierung Inhaltsverzeichnis (update) 2 Datenabstraktion 2.1 Begriffe 2.2 Spezifikation abstrakter Datentypen 2.2.1 Algebraische Spezifikation 2.2.2 Modellierende Spezifikation 2.3 Implementierung und Anwendung

Mehr

OCP Java SE 8. Lambda

OCP Java SE 8. Lambda OCP Java SE 8 Lambda Lambda-Ausdruck sieht ähnlich wie eine Deklaration einer Methode ohne Name und Ergebnistyp aus (a, b) -> b.compareto(a) Lambda Vor Java 8 Ausführbarer Programmcode ( Verhalten ) nur

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 05: Generics Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 19 Inhalt Generics

Mehr

Objekte und Klassen. INE2 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert, E.

Objekte und Klassen. INE2 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert, E. Objekte und Klassen INE2 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was geht es? typedef struct Konto { double saldo; int id; Konto; Modul "konto" konto.h konto.c Prozedurale Programmierung:

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

Einführung in die Programmiersprache Java II

Einführung in die Programmiersprache Java II Einführung in die Programmiersprache Java II ??????????? UML Klassendiagramm zeigt Klassen und ihre Beziehungen untereinander Visualisierung und Modellierung der statischen Struktur eines Systems Klassen

Mehr

Praktische Softwaretechnologie Vorlesung 4

Praktische Softwaretechnologie Vorlesung 4 Praktische Softwaretechnologie Vorlesung 4 Martin Giese Johann Radon Institute for Computational and Applied Mathematics Österr. Akademie der Wissenschaften Linz PSWT 2006 31. Oktober 2006 p.1/28 Die Klasse

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

Programmiermethodik 1. Klausur

Programmiermethodik 1. Klausur Programmiermethodik 1. Klausur 27. 6. 2013 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 21 2 20 3 19 4 19 5 21 6 20 Gesamt 120 1 Seite 2 von 18 Aufgabe 1) Objekt-Orientierung und Vererbung

Mehr

14. Java Objektorientierung. Klassen, Vererbung, Kapselung

14. Java Objektorientierung. Klassen, Vererbung, Kapselung 427 14. Java Objektorientierung Klassen, Vererbung, Kapselung Objektorientierung: Verschiedene Aspekte 428 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen

Mehr

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 15/16

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 15/16 EINI LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 15/16 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

Java Einführung Vererbung und Polymorphie. Kapitel 13

Java Einführung Vererbung und Polymorphie. Kapitel 13 Java Einführung Vererbung und Polymorphie Kapitel 13 Inhalt Klassifikation (UML) Implementierung von Vererbungshierarchien Überschreiben von Methoden Polymorphismus: Up-Casting und Dynamisches Binden Schlüsselwort

Mehr

Innere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen.

Innere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen. Innere Klassen Innere Klassen Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen. Literatur: Java Tutorial & Arnold, K., Gosling, J. und Holmes,D... Page 1 Innere Klassen Der erste

Mehr

Programmieren I. Kapitel 8. Vererbung

Programmieren I. Kapitel 8. Vererbung Programmieren I Kapitel 8. Vererbung Kapitel 8: Vererbung Ziel: Wesentliches objektorientiertes Konzept kennenlernen Subtypen Idee Probleme und Varianten Vererbung in Java dynamische Bindung abstrakte

Mehr