Objektorientierte Programmierung Studiengang Medieninformatik

Ähnliche Dokumente
Exkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

Objektorientierte Programmierung Studiengang Medieninformatik

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik

Funktionale und Objekt-Orientierte Programmierkonzepte

Info B VL 11: Innere Klassen/Collections

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur

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

Javakurs für Anfänger

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Graphical User Interfaces

Implementieren von Klassen

Deklaration einer Klasse Innere innerhalb Klassen einer in Ja anderen v a Klasse

EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ

Lebenszyklus von Threads

Objektorientierte Programmierung Studiengang Medieninformatik

OOP: Nebenläufigkeiten Threads. Dipl.-Inform. Arnold Willemer

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

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

Objektorientierte Konzepte

Technische Universität Braunschweig

Erste Java-Programme (Scopes und Rekursion)

Repetitorium Informatik (Java)

12 Abstrakte Klassen, finale Klassen und Interfaces

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

Programmieren in Java

Übergang von funktionaler zu OOP. Algorithmen und Datenstrukturen II 1

Fachhochschule Stuttgart Prof. Uwe Schulz 5. Juli 2006 Hochschule der Medien Klausur Informatik, EDV-Nr (42021) Seite 1 von 4

Klausur: Java (Liste P)

Einstieg in die Informatik mit Java

Institut für Programmierung und Reaktive Systeme 6. Juli Programmieren II. Übungsklausur

Institut für Programmierung und Reaktive Systeme 7. Juli Programmieren II. Übungsklausur

Teil 2: OOP und JAVA (Vorlesung 11)

14 Abstrakte Klassen, finale Klassen, Interfaces

Dr. Monika Meiler. Inhalt

Java 8. basierend auf Folien von Florian Erhard

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

Fachhochschule Stuttgart Prof. Uwe Schulz 14. Juli 2005 Hochschule der Medien Klausur Informatik, EDV-Nr (42021) Seite 1 von 4

Programmieren in Java

Hauptklausur: PRGII MD

2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article

14 Abstrakte Klassen, finale Klassen, Interfaces

Parallele und funktionale Programmierung Wintersemester 2015/ Übung Abgabe bis , 10:00 Uhr

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

Die abstrakte Klasse Expression:

1 Abstrakte Klassen, finale Klassen und Interfaces

Programmieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15. Institut für Angewandte Informatik

Institut für Informatik. Endterm Klausur zu Informatik I 20. Februar 2010

parallele Prozesse auf sequenziellen Prozessoren Ein Process ist ein typisches Programm, mit eigenem Addressraum im Speicher.

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

Punkte. Teil 1. Teil 2. Summe. 1. Zeigen Sie, dass der untenstehende Suchbaum die AVL-Bedingung verletzt und überführen Sie ihn in einen AVL-Baum.

Javakurs für Anfänger

Java Einführung Methoden. Kapitel 6

Programmierung Nachklausurtutorium

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1

Algorithmen und Datenstrukturen

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Ausnahmebehandlung in Java

Javakurs für Fortgeschrittene

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

Durch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei

Programmieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15. Institut für Angewandte Informatik

Programmieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15. Institut für Angewandte Informatik

Fragen zur OOP in Java

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

Grafische Benutzeroberflächen

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

Beispiel für überladene Methode

Propädeutikum Programmierung in der Bioinformatik

UNIVERSITÄT SIEGEN Fachbereich 12, Elektrotechnik und Informatik Fachgruppe Betriebssysteme / verteilte Systeme

6. Globalübung (zu Übungsblatt 8)

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Einführung in die Programmierung mit Java

Enumerations und innere Klassen

Klassenvariablen, Klassenmethoden

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Institut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur

Übungen zu Middleware Universität Erlangen-Nürnberg Informatik 4, 2007 Z-Java-Exceptions.fm

Objektorientierte Programmierung

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

Aufgabe11. Methode test1. import java.util.hashmap; import java.util.arraylist; public class Aufgabe11 {

Informatik II. Semesterklausur

Algorithmen und Programmierung II

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017

Vererbung P rogram m ieren 2 F örster/r iedham m er K apitel 11: V ererbung 1

pue13 January 28, 2017

Funktionales Programmieren mit objektorientierten Sprachen

Programmierung für Mathematik HS11

class BahnTest2 { public static void main(string[] args) { Zug myice = new Zug("ICE Duisburg", 1200, 0, 50); BahnCardFahrer kunde2 = new BahnCardFahre

Nebenläufigkeit mit Java

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a);

3 Objektorientierte Konzepte in Java

Einführung in die Programmierung für Nebenfach Medieninformatik. Beat Rossmy, Michael Kirsch

Transkript:

Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 13 14.06.2017

Heute: Anonyme Objekte Lokale Klassen Anonyme Klassen Anonyme Funktionen "Anonym" = ohne Namen

Anonyme Objekte (1) Objekt mit Namen p: Position p=new Position(2, 3); System.out.println(p); Objekt ohne Namen (anonymes Objekt): System.out.println(new Position(2, 3));

Anonyme Objekte (2) Anderes Beispiel: Objekte mit Namen p und q: Position p=new Position(2, 3); Position q=new Position(1, 1); System.out.println(p.add(q)); Objekte ohne Namen (anonyme Objekte): System.out.println(new Position(2, 3).add(new Position(1, 1)));

Anonyme Objekte (3) Beispiel aus dem Laborprojekt: public static void main(string[] args) new GameFrame();

Lokale Klassen Beispiel aus dem Laborprojekt: lokale Klasse MyThread @Override public void update(observable arg0, Object arg1) if (config.turn==mycolor &&!config.gameover()) class MyThread extends Thread // lokale Klasse @Override public void run() makemove(findmove()); new MyThread().start(); // anonymes Objekt

Lokale Klassen Eine lokale Klasse ist nur in dem Block erreichbar, in dem sie deklariert worden ist. Außerhalb dieses Blocks ist sie nicht definiert (genauso wie lokale Variablen). Anonyme Klassen Oft benötigt man nur ein einziges Objekt der lokalen Klasse. Dann bietet Java die Möglichkeit, sogar ohne Vergabe eines Klassennamens ein Objekt einer lokalen Klasse zu erzeugen. Die Klasse bleibt sozusagen anonym.

Anonyme Klassen (1) Anonyme Klassen haben keinen Namen. Daher haben anonyme Klassen auch keinen eigenen Konstruktor (der Konstruktor heißt ja immer so wie die Klasse). Wie erzeugen wir dann ein Objekt einer anonymen Klasse? Durch Aufruf des Standardkonstruktors einer Oberklasse, im äußersten Fall der Klasse Object, der "Mutter aller Klassen". Von einer anonymen Klasse lässt sich immer nur ein einziges Objekt erzeugen.

Anonyme Klassen (2) Beispiel aus dem Laborprojekt: anonyme Klasse @Override public void update(observable arg0, Object arg1) if (config.turn==mycolor &&!config.gameover()) Thread th=new Thread() // anonyme Klasse, abgeleitet von Thread @Override public void run() makemove(findmove()); ; th.start();

Anonyme Klassen (3) Beispiel aus dem Laborprojekt: anonyme Klasse und anonymes Objekt @Override public void update(observable arg0, Object arg1) if (config.turn==mycolor &&!config.gameover()) new Thread() // anonymes Objekt // anonyme Klasse, abgeleitet von Thread @Override public void run() makemove(findmove());.start();

Anonyme Klassen (4) Häufig angewendet: anonyme Klassen, die Listener erweitern JButton button = new JButton("Klick mich"); button.addactionlistener(new ActionListener() // anonymes Objekt // anonyme Klasse public void actionperformed(actionevent evt) System.out.println("Button angeklickt"); );

Anonyme Funktionen (1) Funktion mit Namen increment: int increment(int a) int b=a+1; return b; Anonyme Funktion in Java 8: (int a) -> int b=a+1; return b; Einfacher: (int a) -> return a+1; Noch einfacher (mit Typ-Inferenz): (a) -> a+1

Anonyme Funktionen (2) Anonyme Funktion in der Programmiersprache Python: lambda a : a+1 # bedeutet: a -> a+1 Lamda-Kalkül (Church, Kleene 1932) Schreibweise: λa.a+1 Anwendung: print (lambda a : a+1) (3) 4 Einfacher: print 3+1 4 Anonyme Funktion in der funktionalen Programmiersprache Haskell: (\a -> a + 1) 3 4 Einfacher: 3+1 4

Anonyme Funktionen (3) Aber: Anonyme Funktionen werden für die Anwendung auf Listen gebraucht, als Parameter für Funktionen höherer Ordnung, z.b. map: Python: print map(lambda a : a+1, [1, 2, 3]) [2, 3, 4] Haskell: map (\a -> a + 1) [1, 2, 3] [2, 3, 4]

Anonyme Funktionen (4) Oder filter: Python: print filter(lambda a : a%2==0, [1, 2, 3, 4, 5, 6]) [2, 4, 6] Haskell: filter (\a -> a 'mod' 2==0) [1, 2, 3, 4, 5, 6] [2, 4, 6]

Die gute Nachricht: Vorlesung 12 (Threads) und Vorlesung 13 (anonyme Klassen) sind nicht klausurrelevant.

Das war's! Dies war meine letzte Vorlesung an der Hochschule! Ihnen viel Erfolg bei den Klausuren und schöne Semesterferien!