Ereignisverarbeitung in Java
|
|
|
- Julia Sternberg
- vor 9 Jahren
- Abrufe
Transkript
1 Ereignisverarbeitung in Java Michael Dienert 18. Juli 2012 Inhaltsverzeichnis 1 Kommandozeile oder grafische Oberfläche 2 2 Ereignisse, Ereignisquellen und Ereignisabhörer Ereignisse Ereignisquellen Ereignisabhörer Ereignisbehandlung Beispiel Beschreibung des Beispielprogramms Innere Klassen 6 5 Adapterklassen 6 6 Anonyme Klassen 7 A Beispielprogramm 8 Vorwort Es wird immer behauptet, Java sei eine einfache Programmiersprache. Das stimmt, wenn man Java mit C/C++ vergleicht. Es gibt in Java z.b. keine Pointer, die einem in C/C++ das Leben wirklich schwer machen können. Was Java schwierig macht, ist eigentlich nur der Riesenumfang der Klassenbibliothek, die so groß ist, dass man sie als nicht Profi-Entwickler wahrscheinlich nie ganz kennenlernen kann. Dieser kleine Text hier beschäftigt sich mit der Erzeugung und Abfrage von Ereignissen (Events), mit der der Anwender eine grafische Oberfläche bedient. Natürlich kann man sich auf den Standpunkt stellen und sagen, alles was im Folgenden kommt möchte ich im Detail nicht wissen, die für die Verarbeitung von Events nötigen Methoden erzeugt meine Entwicklungsumgebung automatisch. 1
2 Was machen Sie aber, wenn Sie beim Editieren Ihres Quelltextes versehentlich einige Zeilen dieses automatisch erzeugten Codes löschen? Wie wollen Sie das wieder reparieren, wenn Sie nicht selbst ein wenig Bescheid über Events wissen? Und da ereignisgesteuerte Programmierung der Schlüssel jeder grafischen Benutzeroberfläche ist, muss man ein paar Grundkenntnisse zu Events einfach haben. 1 Kommandozeile oder grafische Oberfläche Softwareanwendungen kann man grob in zwei grosse Gruppen einteilen: 1. Kommandozeilen-Anwendungen: hier übergibt der Anwender beim Programmaufruf mit der Kommandozeile eine Reihe von Parametern. Die Anwendung läuft daraufhin ab und liefert schliesslich ein Ergebnis. Eventuell sind unterwegs noch ein paar Eingaben zu machen, wichtiges Kennzeichen von Kommandozeilen- Anwendungen ist jedoch, dass der Ablauf durch die Programmstruktur fest vorgegeben ist. Derartige Programme lassen sich auch in Java leicht schreiben, die main-methode stellt dazu ein String-Array zur Verfügung, das die Kommandozeilenparameter aufnimmt. 2. Programme mit grafischer Benutzerschnittstelle: diese Programme werden vom Anwender durch Tastatureingaben oder Mausklicks während der Programmlaufzeit gesteuert. Der Programmierer einer solchen Anwendung hat nun keinerlei Einfluss auf die Reihenfolge der Anwender-Aktionen. Das bedeutet, die Anwendung muss jederzeit auf eine solche Aktion reagieren können: das Programm wartet in einer Endlosschleife auf diese Aktionen und wenn eine eintritt, wird eine entsprechende Methode aufgerufen. Die Endlosschleife wartet also, bis irgendein Ereignis eintritt. Man nennt dies Ereignisbasierte Programmierung. 2 Ereignisse, Ereignisquellen und Ereignisabhörer 2.1 Ereignisse Aus der Sicht des Anwenders ist klar, was ein Ereignis ist: z.b. ein Mausklick auf eine Schaltfläche (Button). Wie wird so ein Schaltflächen-Klick aber innerhalb des Programms dargestellt? Java ist eine echte objektorientierte Sprache, was liegt also näher, als ein Event innerhalb des Programms als Objekt darzustellen: Ein Event ist ein Objekt Um ein Objekt erzeugen zu können, muss natürlich eine entsprechende Klasse existieren. Diese Klassen für unterschiedliche Ereignisse sind bereits vordefiniert und werden dem jeweiligen Programm mit dem Paket java.awt.event zur Verfügung gestellt. Ein Beispiel: die Klasse java.awt.event.mouseevent. Objekte dieser Klasse stellen Eigenschaften und Methoden zur Verfügung, die Details über den Zustand der Maus liefern. Z.B. die Methoden getx() und gety() liefern die aktuellen Mauskoordinaten. Wenn nun die Maus bewegt, gezogen (=bewegt mit gedrückter Taste) oder eine Maustaste gedrückt oder losgelassen wird, wird ein MouseEvent-Objekt erzeugt. Wer das Objekt erzeugt erfahren Sie im nächsten Kapitel. 2
3 2.2 Ereignisquellen Eine Ereignisquelle ist, wie könnte es auch anders sein, ein Objekt. Soweit nichts Neues. Aber dieses Objekt erzeugt automatisch Event-Objekte, wenn ein entsprechendes Ereignis auftritt. Ein Beispiel für Maus-Ereignisquellen sind Objekte aller GUI-Klassen von Java (also Unterklassen der Klasse java.awt.component). Objekte dieser Klassen erzeugen also Objekte der Klasse MouseEvent, wenn irgendeine Benutzeraktion mit der Maus auftritt. Mit der Methode getsource(), die jedes Event-Objekt besitzt, kann man herausfinden, welche Grafikkomponente das Ereignisobjekt erzeugt hat, wer also die Quelle des Event-Objekts ist. 2.3 Ereignisabhörer Die Ereignisabhörer (EventListener) sind selbstverständlich auch Objekte. Wir sehen: alles ist ein Objekt (in Java). Doch das Besondere an diesen Objekten ist, dass sie informiert werden möchten, wenn ein spezielles Ereignis auftritt. Das funktioniert so: Jede Ereignisquelle hat eine Liste, auf der alle EventListener-Objekte stehen, die informiert werden sollen, wenn ein Ereignis auftritt. Um diese Liste zu verwalten hat jede Ereignisquelle Methoden um EventListeners in die Liste einzutragen oder zu entfernen. (add - remove - Methoden). Das Eintragen eines Listeners in diese Liste nennt man registrieren. Die add- remove-methoden erwarten als Parameter ein EventListener-Objekt. Noch eine wichtige Besonderheit: die Ereignisabhörer sind - wie alles andere in Java auch - Objekte. Allerdings gibt es keine fertigen EventLister - Klassen, sondern nur Interfaces. Das heisst, alle EventListener wie z.b. MouseListener oder MouseMotionListener sind Klassen, die nur abstrakte, also leere Methoden (nur den Methodenkopf, ohne Rumpf) enthalten. Diese leeren Methoden muss man als Programmierer erst innerhalb einer eigenen Klasse mit echten Methoden überschreiben - man sagt implementieren - bevor man EventListener-Objekte bilden kann. Warum aber liefert Sun mit Java EventListener-Interfaces und nicht gleich fertige Klassen mit und zwingt damit die Programmierer alle Methoden eines Interfaces zu implementieren? Die Antwort ist einfach: es ist genau diese individuelle Implementierung, die den tatsächlichen Java-Code enthält, der als Reaktion auf ein Event ausgeführt werden soll! 2.4 Ereignisbehandlung Wie wird nun ein registrierter Ereignisabhörer über ein bestimmtes Ereignis informiert? Die Ereignisquelle übergibt einfach das Ereignisobjekt an die entsprechende Methode eines registrierten Abhörers. Welche Methode das Ereignisobjekt übergeben bekommt, hängt von der Art des Ereignisses ab. Das MouseListener-Interface stellt zum Beispiel die 5 Methoden: 3
4 1. mouseclicked(mouseevent e) 2. mouseentered(mouseevent e) 3. mouseexited(mouseevent e) 4. mousepressed(mouseevent e) 5. mousereleased(mouseevent e) zur Verfügung. Zwei weitere Methoden, 6. mousedragged(mouseevent e) 7. mousemoved(mouseevent e) werden von MouseMotionListener-Interface definiert. Schaut man sich nun die Dokumentation der MouseEvent-Klasse an fällt auf, dass MouseEvent-Objekte die folgenden 7 Konstanten besitzen: 1. public static final int MOUSE_CLICKED 2. public static final int MOUSE_DRAGGED 3. public static final int MOUSE_ENTERED 4. public static final int MOUSE_EXITED 5. public static final int MOUSE_MOVED 6. public static final int MOUSE_PRESSED 7. public static final int MOUSE_RELEASED Zu jeder dieser Konstanten gibt es also genau eine entsprechende Methode im MouseListener bzw. MouseMotionListener Interface. Wird nun die Maus bewegt oder gezogen, erzeugt die Ereignisquelle (z.b. eine Schaltfläche, Button), ein MouseEvent-Objekt. Dieses wird von der Schaltfläche an die entsprechende Methode des registrierten MouseMotionListener-Objekts übergeben. Bedient man die (OSX) bzw. eine der Maustasten (X11), bekommt die entsprechende Methode des MouseListener-Objekts das MouseEvent-Objekt übergeben. Da Sie, als Entwickler diese Methoden selbst geschrieben haben (schreiben mussten!), können Sie auf diese Weise eine beliebige Funktionalität mit einem MouseEvent verbinden. 3 Beispiel Das im Anhang A enthaltene Beispiel demonstriert noch einmal das oben Beschriebene. Der Programmcode ist erhältlich bei oder bei Leider ist David Flanagans Seite im Moment nich in Betrieb. Der Download von O Reilly funktioniert. Das zugehörige Buch von David Flanagan, Java Examples in a Nutshell, 2. Auflage, gibt s ebenfalls bei O Reilly. 4
5 3.1 Beschreibung des Beispielprogramms Hier ein paar Erläuterungen zum Quellcode. Da wäre zunächst die Klassendeklaration: public class ScribblePanel extends JPanel implements MouseListener, MouseMotionListener {... Was sagen uns diese beiden Zeilen? Der Klassenname ist ScribblePanel und ScribblePanel erbt von der Klasse JPanel. JPanel kann man sich einfach als eine rechteckige Zeichenfläche vorstellen, auf der man zeichnen und die grafische Komponenten enthalten kann. Ausserdem implementiert unsere ScribblePanel-Klasse die beiden Schnittstellen MouseListener und MouseMotionListener. Abbildung 1 zeigt diese Vererbungsstruktur. JPanel <<interface>> MouseListener <<interface>> MouseMotionListener ScribblePane1 Abbildung 1: Vererbung und Implementieren von Interfaces Implementiert man eine Schnittstelle, muss man alle ihre Methoden überschreiben. Geht man durch den weiteren Programmcode, wird man tatsächlich alle 7 bereits oben besprochenen Methoden dieser beiden Interfaces vorfinden. Dass einige davon einen leeren Methodenkörper haben heisst einfach nur, dass wir die zugehörigen MouseEvents nicht abfangen, man muss diese Methoden dennoch implementieren! In diesem Beispielprogramm wird lediglich das Drücken der Maustaste (mousepressed) und Ziehen mit gedrückter Taste (mousedragged) mit einer Methode hinterlegt. Weiter im Text. Das Beispiel ist eine Klasse, die keine main-methode enthält. Um es zu testen, muss man eine weitere Klasse schreiben, die ein Fenster auf dem Bildschirm öffnet, ein Objekt unserer ScribblePanel-Klasse bildet und dieses Objekt in das Fenster einfügt und sichtbar macht. Was hat es nun mit dem ScribblePanel-Objekt auf sich? Denken wir wieder an Abb. 1. Also gelten folgende Aussagen: das ScribblePanel-Objekt ist ein JPanel-Objekt (Vererbung) es ist aber auch ein MouseListener-Objekt 5
6 und es ist gleichzeitig ein MouseMotionListener-Objekt Wenn das gilt, gelten aber auch folgende Aussagen: das ScribblePanel-Objekt ist eine Maus-Ereignisquelle, da JPanel eine GUI-Komponente ist und alle GUI-Komponenten MouseEvents erzeugen können. gleichzeitig ist das ScribblePanel-Objekt aber auch ein Listener für Mause-Ereignisse, eben ein MouseListener-Objekt Das erklärt nun die beiden ersten Befehle des Konstruktors: this.addmouselistener(this); this.addmousemotionlistener(this); Da ist also die bereits erwähnte add-methode um einen Listener zu registrieren. Parameter der add-methode muss ein EventListener-Objekt sein: Das Wörtchen this steht für ein beliebiges, von dieser Klasse instanziertes Objekt, eben ein ScribblePanel-Objekt. Als Ereignisquelle trägt dieses Objekt zwei Listener-Objekte in seine Liste der registrierten Abhörer ein. Und diese beiden Listener-Objekte sind wiederum das Objekt selbst! Oder einfacher: das Objekt registriert sich selbst als Ereignisabhörer, bei einem Maus- Ereignis benachrichtigt sich das Objekt folglich selbst. Der Rest des Programmcodes sei an dieser Stelle nicht besprochen, da er durch die von David Flanagan eingefügten Kommentare für sich selbst spricht. 4 Innere Klassen Anstelle dieser Pseudo-Mehrfachvererbung, bei der ein Objekt merkwürdigerweise vom Typ JPanel und gleichzeitig vom Typ MouseListener ist, hätten wir doch ganz einfach zwei neue Klassen erzeugen können, die jeweils nur das MouseListenerund das MouseMotionListener-Interface implementieren und hätten von diesen Klassen jeweils ein Objekt gebildet und dieses an die addxxxlistener-methoden übergeben. Der Nachteil dieser Vorgehensweise wäre aber, dass dann die Methoden, die zu den jeweiligen Mausereignissen gehören, in einer anderen Datei stehen. Das macht die Lesbarkeit des Programms nicht eben besser. Und da hat sich Sun die sogenannten Inneren Klassen einfallen lassen: eine innere Klasse ist eine Klasse, die innerhalb einer anderen Klasse deklariert wird. Sie hat Zugriff auf alle Eigenschaften und Methoden der äusseren Klasse. Statt die beiden oben beschriebenen Listener-Klassen auszulagern, könnten wir diese als innere Klassen schreiben. 5 Adapterklassen Mit den inneren Klassen ist noch nicht viel gewonnen. Die inneren Klassen implementieren eine Listener-Schnittstelle, folglich müssen wir alle abstrakten Methoden der 6
7 Schnittstelle schreiben (implementieren). Einigen Programmierern war wohl das Tippen von so vielen leeren Methoden lästig und da hat Sun sich nochmals was Neues einfallen lassen: die Adapterklassen. Eine Adapterklasse ist eine Klasse, die eine Schnittstelle implementiert. Hier als Beispiel die MouseAdapter-Klasse: class MouseAdapter implements MouseListener{ public void mouseclicked(mouseevent e){; public void mouseentered(mouseevent e){; public void mouseexited(mouseevent e){; public void mousepressed(mouseevent e){; public void mousereleased(mouseevent e){; vergleicht man dies mit der ursprünglichen Deklaration des MouseListener-Interfaces: interface MouseListener extends EventListener{ void mouseclicked(mouseevent e); void mouseentered(mouseevent e); void mouseexited(mouseevent e); void mousepressed(mouseevent e); void mousereleased(mouseevent e); könnte man beinahe den kleinen aber entscheidenden Unterschied übersehen: bei der MouseAdapter-Klasse sind die Methoden nun nicht mehr abstrakt! Und sie müssen deshalb auch nicht alle überschrieben werden. Wie funktioniert das? Man erzeugt einfach eine neue Klasse, die von der Adapterklasse erbt und überschreibt nur die Methoden, für die man sich interessiert. All diesen Aufwand mit den Adapterklassen und den ListenerInterfaces musste man nur treiben, um ein EventListener-Objekt (in unseren Beispielen ein MouseListener- / MouseMotionListener-Objekt) zu erzeugen. Und dieses Objekt wird zu allem Überfluss sofort an die add-methoden der GUI-Komponente übergeben. Niemand interessiert sich für den Namen dieses Objekts und auch nicht für seine Klasse. Und weil das so ist, hat Sun sich nochmal was einfallen lassen: 6 Anonyme Klassen Für anonyme Klassen gilt: sie werden innerhalb einer Klasse deklariert, sind also eine Variante der inneren Klassen 7
8 eine anonyme Klasse ist Unterklasse einer anderen Klasse oder implementiert ein Interface anonyme Klassen werden innerhalb einer einzigen Anweisung deklariert und gleichzeitig wird ein Objekt von ihnen gebildet nach dem Schlüsselwort new steht der Standardkonstruktor der Oberklasse oder der Name der Schnittstelle Hier ein Code-Beispiel, wie unser MouseMotionListener-Objekt mit Hilfe einer anonymen Klasse und einer Adapterklasse gebildet werden kann: addmouselistener( new MouseAdapter(){ public void mousepressed(mouseevent e){ moveto(e.getx(), e.gety()); ); Dieses Beispiel besteht tatsächlich nur aus der Anweisung: addmouselistener(mouselistener);. Und der Parameter dieser Methode, das MouseListener-Objekt wird als namenloses Objekt einer namenlosen Klasse gebildet, die von MouseAdapter erbt. In dieser anonymen Unterklasse wird nur eine Methode der Adapterklasse überschrieben. Das ist in diesem Fall erlaubt, da die Methoden der Adapterklasse nicht mehr abstrakt sind. In den meisten Javaprogrammen werden Sie derartige Code-Konstruktionen finden. Wegen der besseren Lesbarkeit ziehe ich persönlich jedoch den zuerstbeschriebenen Ansatz vor. Auch wenn es etwas mehr Tipparbeit bedeutet. A Beispielprogramm 8
9 Abbildung 2: Klassendefinition und Objekterzeugung in Java /* * Copyright (c) 2000 David Flanagan. All rights reserved. * This code is from the book Java Examples in a Nutshell, 2nd Edition. * It is provided AS-IS, WITHOUT ANY WARRANTY either expressed or implied. * You may study, use, and modify it for any non-commercial purpose. * You may distribute it non-commercially as long as you retain this notice. * For a commercial use license, or to purchase the book (recommended), * visit */ package com.davidflanagan.examples.gui; import javax.swing.*; // For JPanel component import java.awt.*; // For Graphics object import java.awt.event.*; // For Event and Listener objects /** * A simple JPanel subclass that uses event listeners to allow the user * to scribble with the mouse. Note that scribbles are not saved or redrawn. **/ public class ScribblePane1 extends JPanel implements MouseListener, MouseMotionListener { protected int last_x, last_y; // Previous mouse coordinates public ScribblePane1() { // This component registers itself as an event listener for // mouse events and mouse motion events. this.addmouselistener(this); this.addmousemotionlistener(this); // Give the component a preferred size setpreferredsize(new Dimension(450,200)); // A method from the MouseListener interface. Invoked when the // user presses a mouse button. public void mousepressed(mouseevent e) { last_x = e.getx(); // remember the coordinates of the click last_y = e.gety(); // A method from the MouseMotionListener interface. Invoked when the // user drags the mouse with a button pressed. public void mousedragged(mouseevent e) { int x = e.getx(); // Get the current mouse position int y = e.gety(); // Draw a line from the saved coordinates to the current position this.getgraphics().drawline(last_x, last_y, x, y); last_x = x; // Remember the current position last_y = y; // The other, unused methods of the MouseListener interface. public void mousereleased(mouseevent e) { public void mouseclicked(mouseevent e) { public void mouseentered(mouseevent e) { public void mouseexited(mouseevent e) { // The other, unused, method of the MouseMotionListener interface. public void mousemoved(mouseevent e) { 9
Einführung in die OOP mit Java
Einführung in die OOP mit Java Das Event-Hanlding Übersicht Event - Handling Das im JDK 1.1 Grundlagen Ereignistypen Ereignisquellen Adapterklassen für den Nachrichtenverkehr Variante1: Implementierung
Einführung in die Programmierung für NF. Übung 08
Einführung in die Programmierung für NF Übung 08 Inhalt Eventbehandlung in Java Swing Einführung in die Programmierung für NF Übung 08 2 Eventbehandlung in Java Swing Wir haben bereits einige grafische
Einstieg in die Informatik mit Java
1 / 15 Einstieg in die Informatik mit Java Ereignisverwaltung und Layout-Typen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 15 1 Ereignis-Verwaltung 2 Layout-Typen GridLayout
Wiederholung. Klassenhierarchie:
Wiederholung Klassenhierarchie: class Unter extends Ober {... Die Unterklasse Unter erweitert die Funktionalität ihrer Oberklasse Ober. Objekte der Klasse Unter können anstelle von Objekten der Klasse
I. Grundlagen II. Ereignistypen III. Ereignisempfänger. Event-Handling (EH)
I. Grundlagen II. Ereignistypen III. Ereignisempfänger IV. Ereignisquellen V. Adapterklassen Event-Handling (EH) I. Grundlagen II. Ereignistypen III. Ereignisempfänger IV. Ereignisquellen V. Adapterklassen
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
IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1
IT I: Heute abstrakte Methoden und Klassen Interfaces Interfaces List, Set und Collection 22.11.2018 IT I - VO 7 1 Wissensüberprüfung Überschreiben von Methoden: Aufruf der Methode der Oberklasse ist oft
Abstrakte Klassen, Interfaces
Abstrakte Klassen, Interfaces INE2, Mittwoch 8.00-9.35 / TE561 M. Thaler, [email protected] Office TG208 http://www.zhaw.ch/~tham 1 Um was gehtes? Problemstellung Klassenhierachie - verschiedene geometrische
Eventhandling. Delegation model Eventhandler model
Eventhandling Dient der Kommunikation der Controlls mit der eigentlichen Anwendung. Prinzipiell gibt es zwei verschiedene Verfahren für das Eventhandling Delegation model Eventhandler model Die Arbeit
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
Programmierung Nachklausurtutorium
Programmierung Nachklausurtutorium Laryssa Horn, Tim Engelhardt 20 März 2018 Klassen Wofür wir Klassen brauchen: Definieren ein Bauplan eines Objektes Bauplan enthält Attribute und Methoden Klasse Beispiel
11. GUI-Programmierung mit SWING Überblick
11. GUI-Programmierung mit SWING Überblick 11.1 Einführung 11.2 Einfache Swing Komponenten 11.3 Ereignisbehandlung und Adapterklassen 11.4 Zeichnen 11.5 Dialoge 11.6 Layout Manager 11.7 Komplexere Swing
Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der
Vererbung Vererbung ist ein Konzept der objektorientierten Programmierung,, die es ermöglicht neue Klassen von bereits vorhandenen Klassen abzuleiten. In einer abgeleiteten Klasse (subclass) muss nur spezifiziert
Institut für Programmierung und Reaktive Systeme. GUIs mit Swing. Markus Reschke
GUIs mit Swing Markus Reschke 28.08.2014 Beispiel: Ein einfaches GUI-Programm Siehe Painter.java Markus Reschke GUIs mit Swing 2 GUI Frameworks in Java AWT war das erste GUI-Framework, welches mit Java
Fragen zur OOP in Java
- 1 - Inhalt Was bedeutet OOP?... 2 Was versteht man unter einer Klasse?... 2 Wie nennt man die Mitglieder einer Klasse?... 2 Wie erzeugt man Objekte?... 2 Wie greife ich auf Member einer Klasse zu?...
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:
Einführung in die Informatik - Teil 4b - Zeichnen mit der Maus im JBuilder
Eckart Modrow Zeichnen mit der Maus im JBuilder S. 1 Einführung in die Informatik - Teil 4b - Zeichnen mit der Maus im JBuilder Inhalt: 1. Arbeiten mit der Maus 2. Aufgaben Literaturhinweise: Küchlin/Weber:
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
Objektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 2 22.03.2017 Was bisher geschah... Klassen und Objekte Attribute und Methoden Klasse Bruch
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
Graphische Benutzungsoberflächen mit Java. Einführung in NetBeans
Graphische Benutzungsoberflächen mit Java Einführung in NetBeans Graphische Benutzungsoberflächen! Interaktion mit dem Programm! Datenein- und ausgabe! Rückmeldungen über Verarbeitung der Daten! Visualisierung
Design Patterns I. Observer, Listener & MVC
Design Patterns I Observer, Listener & MVC Design Patterns I - Gliederung - Was sind Design Patterns? - Definition von Design Patterns - Entstehung - Nutzen & Verwendung - MVC - Model, View, Controller
Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:
Musterlösung Übung 7 Aufgabe 1 Sehen wir uns zu allererst das gegebene Forth Programm an: 0 3 new - list constant list1 list1 5 new - list constant list2 list1 6 new - list constant list3 list2 2 new -
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
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
Geschachtelte Klassen
Geschachtelte Klassen Die Programmiersprache Java bietet nicht nur die Möglichkeit innerhalb von Klassen Datenfelder und Methoden zu definieren, sondern auch Klassen. Solche Klassen heißen en geschachtelte
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
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1
Kapitel 7 Grafische Benutzeroberflächen Grafische Benutzeroberflächen 1 Ziele Grafische Benutzeroberflächen (Graphical User Interfaces) als Anwendungsbeispiel für die objektorientierte Programmierung kennenlernen.
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
Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3
Programmieren mit Java Modul 5 Objekte Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Klassen und Objekte 3 2.1 Klassen.................................... 4 2.2 Objektvariablen und Methoden.......................
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
Graphical User Interfaces
Graphical User Interfaces SEP 184 Toolkits es gibt verschiedene Toolkits (= Sammlungen von Klassen, Anbindungen an Betriebssystem, etc.) für grafische Oberflächen Abstract Windows Toolkit (AWT) Swing Standard
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
EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ
EAD II Übung 5 Graphische Benutzungsoberfläche mit BlueJ Graphische Benutzungsoberfläche (GUI) Fenster, das weitere Komponenten zur Darstellung und Interaktion enthält spezielle Standardbibliotheken erforderlich,
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
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
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
GUI Programmierung mit JAVA Swing
GUI Programmierung mit JAVA Swing Komponenten Layout Event Handling Imaging 2001 Thomas Weiler 1 JAVA Swing Bibliothek zur Erstellung grafischer Benutzerschnittstellen in JAVA Bietet Klassen für grafische
Grafikprogrammierung mit Java Teil 1/2
Grafikprogrammierung mit Java Teil 1/2 Martin Tischmann 15. Juni 2009 Inhaltsverzeichnis Das Abstract Windowing Toolkit Anlegen eines Fensters Die Methode paint Das grafische Koordinatensystem Schließen
Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen
Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Anonyme Klassen
Objektorientierte Programmierung
Objektorientierte Programmierung Exkurs: Graphische Benutzeroberflächen FH Braunschweig/Wolfenbüttel Sommersemester 2009 1 / 22 Gliederung I Wiederholung Klassen, Objektorientierung (Kapitel 10,11) Exkurs:
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
Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus
Vererbung Generalisierung und Spezialisierung Vererbung und Polymorphismus Wir wollen in unserem Aquarium verschiedene Arten von Fischen schwimmen lassen. In einem ersten Ansatz definieren wir nicht nur
Implementieren von Klassen
Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und
Präsentation Interfaces
Einführung in Java Präsentation Interfaces Nozar Delassaei Marvi Inhalt 1. Erinnerung Klasse Objekte Beispiel Klasse Abstrakte Klasse Beispiel Abstrakte Klasse Mehrfachvererbung-1 Mehrfachvererbung-2 2.
Aufgabe Malen zum Software-Engineering. Karl Friedrich Gebhardt
Aufgabe Malen zum Software-Engineering Karl Friedrich Gebhardt 8. Februar 2017 c 2010 Karl Friedrich Gebhardt Auflage vom 8. Februar 2017 Aufgabe Das folgende Dokument enthält eine Reihe von aufeinander
JButton, JCheckBox, JRadioButton. Programmieren II. Vorlesung 7. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2009.
Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2009 1 / 30 2 / 30 JButton, JCheckBox, JRadioButton In Swing existieren drei wesentliche Klassen für Schaltflächen: JButton für normale
Grundlagen der Programmierung (GP) Prof. Dr. H. Schlingloff Joachim Hänsel
Grundlagen der Programmierung (GP) Prof. Dr. H. Schlingloff Joachim Hänsel 17. 6. 2010 Kapitel 8: Java-Programmierung 8.1 Ereignisbehandlung, Benutzungsschnittstellen 8.2 Graphikprogrammierung 8.1 Ereignisbehandlung
Javakurs für Anfänger
Javakurs für Anfänger Einheit 11: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes
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
Java Game Development Fabian Birzele Programmierpraktikum 2008 / 2009
Java Game Development Fabian Birzele Programmierpraktikum 2008 / 2009 Fabian Birzele, LMU Institut für Informatik, Lehrstuhl für Praktische Informatik und Bioinformatik, 2008: Programmierpraktikum 1 Ziele
Prinzipien der objektorientierten Programmierung (OOP)
Die Ziele der OOP sind: - bessere Warbarkeit - Wiederverwendbarkeit 1.) Datenkapselung Prinzipien der objektorientierten Programmierung (OOP) Komplexe Datenstrukturen (wie zb ein Stack) werden vom Anwendungsprogramm
Objektorientierte Software-Entwicklung
Objektorientierte Software-Entwicklung Priv.-Doz. Dr. Rolf Hennicker 08.01.2003 AWT und Swing AWT (Abstract Window Toolkit) und Swing 2 AWT (Abstract Window Toolkit) und Swing AWT und Swing bieten eine
INE2 OOP mit Java 3 Abstrakte Klassen und Interfaces
INE2 OOP mit Java 3 Abstrakte Klassen und Interfaces Abstrakte Klassen Interfaces (Schnittstelle) Mehrfachvererbung mit Interfaces Interfaces vs. abstrakte Klassen Innere Klassen Anonyme Klassen Adapterklassen
Vererbung und Polymorphie
Vererbung und Polymorphie Marc Satkowski, Sascha Peukert 29. September 2016 C# Kurs Gliederung 1. Methodenüberladung 2. Vererbung Polymorphie Methoden- & Eigenschaftsüberschreibung Weitere Schlüsselwörter
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
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,
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
Graphische Benutzungsoberflächen
Graphische Benutzungsoberflächen Graphische Benutzungsoberflächen (graphical user interfaces, GUI) dienen zur interaktiven Bedienung von Programmen, Ein- und Ausgabe mit graphischen Techniken und visuellen
Ein erstes "Hello world!" Programm
OOP Henrik Horstmann 14. September 2014 Inhaltsverzeichnis Inhaltsverzeichnis 1 Bedeutung der Symbole...1 2 Die Benutzer Oberfläche von HOOPLU...2 2.1 Projekte öffnen und speichern...2 2.2 Die Klasse Program
Java für Bauingenieure
1 JAVA für Bauingenieure Alexander Karakas SS 2008 Objektorientierte Programmierung 30.04.2008, CIP Pool Objektorientierte Programmierung Übersicht 2 Klasse und Objekt Polymorphismus und Vererbung Klassen
Funktionale und Objekt-Orientierte Programmierkonzepte
Funktionale und Objekt-Orientierte Programmierkonzepte Prof. Marc Fischlin, Wintersemester 15/16 Kapitel 17: GUI, Threads und verschachtelte Klassen 13. Oktober 2010 Dr.Marc Fischlin Kryptosicherheit 1
