Aufgabe Malen zum Software-Engineering. Karl Friedrich Gebhardt

Größe: px
Ab Seite anzeigen:

Download "Aufgabe Malen zum Software-Engineering. Karl Friedrich Gebhardt"

Transkript

1 Aufgabe Malen zum Software-Engineering Karl Friedrich Gebhardt 8. Februar 2017

2 c 2010 Karl Friedrich Gebhardt Auflage vom 8. Februar 2017

3 Aufgabe Das folgende Dokument enthält eine Reihe von aufeinander aufbauenden Aufgaben, an denen hauptsächlich die Anwendung von Entwurfsmustern geübt werden soll. Außerdem soll Erfahrung im Programmieren und im Erstellen von UML-Diagrammen gewonnen werden. Die Aufgaben sind nicht im Team, sondern einzeln durchzuführen. Die Wahl der Programmiersprache ist freigestellt. Allerdings kann eine kompetente Betreuung bezüglich Programmiersprache nur in Java erfolgen. Abzugeben ist diese Dokumentation mit den Lösungen. i

4 ii

5 Inhaltsverzeichnis 1 Das Beispiel Malen 1 2 Entwurfsmuster Factory Method 5 3 Entwurfsmuster Abstract Factory 7 4 Entwurfsmuster Prototype 9 5 Entwurfsmuster Composite 11 6 Entwurfsmuster Bridge 13 7 Entwurfsmuster Decorator 15 8 Entwurfsmuster Observer 19 iii

6 Kapitel 1 Das Beispiel Malen Mit dem folgenden Java-Programm Malen kann man mit der Maus in verschiedenen Farben auf ein JPanel malen. import import import java.awt.*; java.awt.event.*; javax.swing.*; public class Malen implements ActionListener, ItemListener, MouseMotionListener { private Container behaelter; public void setbehaelter (Container behaelter) { this.behaelter = behaelter; } private int altesx = 0; private int altesy = 0; private Color aktuellefarbe = Color.black; private JButton loeschknopf; private JComboBox farbwahl; private JButton endeknopf; private static final String private static final String private static final String private static final String private static final String schwarz = "Schwarz"; rot = "Rot"; gelb = "Gelb"; gruen = "Grün"; blau = "Blau"; public void init () { behaelter.setlayout (new FlowLayout ()); behaelter.setbackground (Color.gray); loeschknopf = new JButton ("Löschen"); loeschknopf.addactionlistener (this); loeschknopf.setforeground (Color.black); loeschknopf.setbackground (Color.lightGray); behaelter.add (loeschknopf); farbwahl = new JComboBox (); farbwahl.additemlistener (this); farbwahl.additem (schwarz); farbwahl.additem (rot); farbwahl.additem (gelb); farbwahl.additem (gruen); farbwahl.additem (blau); farbwahl.setforeground (Color.black); farbwahl.setbackground (Color.lightGray); behaelter.add (new JLabel ("Farbe: ")); 1

7 2 KAPITEL 1. DAS BEISPIEL MALEN behaelter.add (farbwahl); endeknopf = new JButton ("Ende"); endeknopf.addactionlistener (this); endeknopf.setforeground (Color.black); endeknopf.setbackground (Color.lightGray); behaelter.add (endeknopf); behaelter.addmousemotionlistener (this); } public void actionperformed (ActionEvent ereignis) { Object ereignisquelle = ereignis.getsource (); if (ereignisquelle == loeschknopf) { behaelter.repaint (); } else if (ereignisquelle == endeknopf) { System.exit (0); } } public void itemstatechanged (ItemEvent e) { if (e.getitem () == schwarz) aktuellefarbe = Color.black; else if (e.getitem () == rot) aktuellefarbe = Color.red; else if (e.getitem () == gelb) aktuellefarbe = Color.yellow; else if (e.getitem () == gruen) aktuellefarbe = Color.green; else if (e.getitem () == blau) aktuellefarbe = Color.blue; } public void mousedragged (MouseEvent e) { Graphics g = behaelter.getgraphics (); g.setcolor (aktuellefarbe); g.drawline (altesx, altesy, e.getx (), e.gety ()); altesx = e.getx (); altesy = e.gety (); } public void mousemoved (MouseEvent e) { altesx = e.getx (); altesy = e.gety (); } public void addiere (JComponent komponente) { behaelter.add (komponente); } public static void { } JFrame main (String[] argument) f = new JFrame ("Malen"); Malen m = new Malen (); m.setbehaelter (f.getcontentpane ()); m.init (); f.pack (); // Trick: Erzeugt Peer-Frame f.setsize (600, 400); f.setvisible (true); } Die Aufgaben dieses ersten Kapitels dienen dazu, das Programm näher kennenzulernen und durch Verbesserungen des Programms die Programmierfähigkeiten aufzuwärmen. Aufgaben:

8 3 Schreiben Sie die Klasse Malen ab. Übersetzen Sie das Programm und lassen Sie es als Anwendung laufen. 1. Erweitern Sie das Programm um die Farben Zyan (Color.cyan) und Magenta (Color.magenta). 2. Beim Farbwahlmenü soll die Hintergrund-Farbe die aktuelle Mal-Farbe sein. Die Vordergrund-Farbe soll man gut sehen können, d.h. soll Weiß oder Schwarz oder noch etwas Intelligenteres sein. 3. Wenn das Fenster überdeckt, vergrößert oder verkleinert wird, dann bleibt die Zeichnung im allgemeinen nicht erhalten, weil wir nicht dafür gesorgt haben, dass in diesen Fällen die Zeichnung wiederhergestellt wird. In dieser Übung wollen wir diesen Mangel beheben. Unsere Zeichnung besteht aus einer großen Anzahl kurzer Striche, die wir uns in einem Objekt der Klasse java.util.arraylist<strich> merken. Dazu ist es aber notwendig für die Striche eine eigene Klasse zu definieren, z.b. Strich. Ferner müssen wir unsere graphische Benutzeroberfläche etwas erweitern. Insbesondere benötigen wir ein JPanel, auf das wir unsere Zeichnung malen. Folgende Schritte sind nacheinander durchzuführen: (a) In der Klasse Malen bekommt behaelter ein BorderLayout. (b) Definieren Sie ein Datenelement vom Typ JPanel z.b mit Namen menue. Dieses wird instanziiert und mit behaelter.add (menue, BorderLayout.NORTH) oben in behaelter eingefügt. (c) Nun werden alle GUI-Komponenten anstatt in behaelter in menue eingefügt. (d) Schreiben Sie eine Klasse Zeichnung, die von JPanel erbt. Sie hat ein Datenelement vom Typ ArrayList<Strich>, das dann alle Strichobjekte aufnehmen soll. Dies muss instanziiert werden. (e) Schreiben Sie in der Klasse Zeichnung eine Methode loesche, die die ArrayList<Strich> neu instanziiert und dann die Methode repaint () aufruft. (f) Definieren Sie in der Klasse Malen ein Datenelement vom Typ Zeichnung, instanziieren Sie es und fügen Sie es in behaelter an der Stelle BorderLayout.CENTER ein. (g) Rufen Sie in der Methode init (letzte Zeile) die Methode addmousemotionlistener anstatt für behaelter für das Zeichnung-Objekt auf. (h) In der Methode actionperformed wird, wenn der Knopf Löschen gedrückt wurde, für das Zeichnung-Objekt nur die Methode loesche () aufgerufen. (i) In der Methode mousedragged wird das Graphics-Objekt anstatt vom behaelter von dem Zeichnung-Objekt geholt. (j) Schreiben Sie die Klasse Strich. (k) Das Programm sollte jetzt wieder getestet werden.

9 4 KAPITEL 1. DAS BEISPIEL MALEN (l) Schreiben Sie in der Klasse Zeichnung eine Methode addiere, um Objekte vom Typ Strich an die ArrayList zu addieren. (m) In der Methode mousedragged wird ein Strich-Objekt angelegt und mit addiere der Zeichnung hinzugefügt. (n) Für eine JComponente und das ist unsere Klasse Zeichnung wird die Methode paintcomponent (Graphics g) aufgerufen, wenn die Komponente neu dargestellt werden soll. Also müssen wir in Zeichnung die Methode public void paintcomponent (Graphics g) { super.paintcomponent (g); } definieren und so überschreiben, dass der Inhalt des ArrayList-Objekts neu gezeichnet wird. 4. Wahrscheinlich kommt bei Ihnen die Codesequenz g.setcolor (...); g.drawline (...); mindestens zweimal vor. Solche Codewiederholungen sind schwer wartbar und fehleranfällig. Der Code gehört eigentlich in die Klasse Strich. Definieren Sie also in dieser Klasse eine Methode public void zeichne (Graphics g)..., die einen Strich zeichnet. Verwenden Sie diese Methode anstatt der oben erwähnten Codesequenz. 5. Schreiben Sie eine Klasse DoppelStrich, die von der Klasse Strich erbt und die jeden Strich doppelt zeichnet (z.b. um drei Pixel versetzt). Wende diese Klasse an, wobei nur in der Methode mousedragged an einer einzigen Stelle der Klassenname Strich durch DoppelStrich ersetzt werden muss. 6. Bieten Sie für die beiden Stricharten ein Auswahlmenü an. 7. Bieten Sie weitere Strich arten an, d.h. irgendwelche interessante Verbindungen zwischen zwei Punkten (Rechtecke, Kreise usw). Die Methoden der Klasse Graphics können Sie da auf Ideen bringen. 8. Fügen Sie den bisher erstellten Code als Ergebnis in Ihre Dokumentation ein. 9. Erstellen Sie ein UML-Klassendiagramm und fügen Sie es in Ihre Dokumentation ein. 10. Kommentieren Sie das Design der Klassen Strich und DoppelStrich.

10 Kapitel 2 Entwurfsmuster Factory Method Wahrscheinlich haben Sie zur Unterscheidung der Stricharten in der Methode mousedragged einen if-else-konstrukt oder ein switch verwendet. Solche Konstrukte sind schwer zu warten. Ferner ist Ihre interessante Verbindung zwischen zwei Punkten vielleicht so, dass es nicht vernünftig ist, sie von Strich erben zu lassen. Wir wollen diese Probleme unter Ausnutzung des Polymorphismus folgendermaßen lösen: Aufgaben: 1. Definieren Sie in einer eigenen Datei eine Schnittstelle, die alle möglichen Verbindungen repräsentiert und folgende Methoden deklariert: public interface Verbindung void zeichne (Graphics g) Verbindung newverbindung (...) String tostring () 2. Lassen Sie Strich und alle anderen Verbindungstypen diese Schnittstelle implementieren. Dabei gibt newverbindung ein neues Strich-Objekt bzw entsprechend andere Objekte zurück. tostring gibt einfach den Klassennamen zurück, also etwa "Strich". 3. Ersetzen Sie in Zeichnung die Klasse Strich durch die Schnittstelle Verbindung. 4. Definieren Sie für jeden Verbindungstyp ein konstantes Objekt. (Eleganter: Legen Sie ein Feld von Verbindungen an, das dann alle konstanten Verbindungs-Objekte enthält.) Diese Objekte addieren Sie anstatt der Strings an die Auswahl-Combobox für die Verbindungstypen. (JComboBox ruft für jedes Item tostring () auf, um es darzustellen.) 5. Falls nicht schon geschehen, definieren Sie ein Datenelement vom Typ Verbindung etwa mit Namen aktuelleverbindung. In itemstatechanged belegen Sie dieses Klassenelement einfach mit e.getitem (), wenn itemstatechanged von der entsprechenden Combobox aufgerufen wird. 5

11 6 KAPITEL 2. ENTWURFSMUSTER FACTORY METHOD 6. Ersetzen Sie in mousedragged den if-else- oder switch-konstrukt durch einen einzigen newverbindung-aufruf für die aktuelle Verbindung. 7. Fügen Sie den bisher erstellten Code als Ergebnis in Ihre Dokumentation ein. 8. Erstellen Sie ein UML-Klassendiagramm. 9. Wie korrespondieren Ihre Klassen und deren Methoden zum Entwurfsmuster Factory Method bzw. welche Variante von Factory Method wird hier verwendet? Wie sähe die andere Variante aus?

12 Kapitel 3 Entwurfsmuster Abstract Factory Es gibt Leergut und Vollgut. Das Leergut kann Leergut oder Vollgut umrahmen und passt dabei seine Größe an. Das Vollgut kann in Leergut eingepasst werden. Dabei passt das Vollgut seine Größe an. Das Ganze gibt es für Rechtecke und Ovale, die aber gegenseitig nicht verwendbar sind. Bemerkung: Ein vernünftigeres Beispiel wären Schrauben und Muttern, metrisch und amerikanisch! Allerdings ist das nicht ohne weiteres in die bestehende Software zu integrieren. Aufgaben: 1. Diskutieren Sie, inwiefern Leer- und Vollgut etwas mit dem Entwurfsmuster Abstract Factory zu tun hat. (Was sind die Produkte? Was ist die Produktfamilie? Was benötigt man noch für das Muster?) 2. Erstellen Sie ein UML-Klassendiagramm. 3. Implementieren Sie das Klassendiagramm. 4. Fügen Sie den bisher erstellten Code als Ergebnis in Ihre Dokumentation ein. 5. Wie korrespondieren ihre Klassen und deren Methoden zum Entwurfsmuster Abstract Factory? 7

13 8 KAPITEL 3. ENTWURFSMUSTER ABSTRACT FACTORY

14 Kapitel 4 Entwurfsmuster Prototype Beim Entwurfsmuster Factory Method haben wir neue Verbindungen letztlich durch einen Kontruktoraufruf erzeugt. Jetzt wollen wir neue Verbindungen erzeugen, indem wir einen Prototypen (Strich, DoppelStrich usw.) klonen. Für die folgende Übung sollten Sie von dem Code ausgehen, den Sie zum Kapitel Factory Method erstellt haben. Aufgaben: 1. Schnittstelle Verbindung: Die Methode newverbindung (...) wird gestrichen. Stattdessen kommen neu hinzu: public Object clone (); public void aktualisierekoord (int xe, int ye); public void aktualisierefarbe (Color farbe); public Color getfarbe (); Ferner erweitert Verbindung die Schnittstelle Cloneable. 2. Lassen Sie Strich und alle anderen Verbindungstypen diese Schnittstelle implementieren. tostring gibt einfach den Klassennamen zurück, also etwa "Strich". 3. Die Item-Objekte der StrichWahl-JComboBox sind ja Verbindungen. Diese Verbindungen sollten jetzt (falls nicht sowieso schon gemacht) mit einer vernünftigen Anfangsfarbe, also etwa Schwarz angelegt werden. 4. altesx und altesy und aktuellefarbe wollen wir jetzt in den Prototypverbindungen verwalten. Daher können diese herausgestrichen werden. Dazu müssen dann noch einige Anpassungen im Code erfolgen. 5. Ersetzen Sie in mousedragged den newverbindung-aufruf durch einen clone ()-Aufruf. 6. Fügen Sie den bisher erstellten Code als Ergebnis in Ihre Dokumentation ein. 9

15 10 KAPITEL 4. ENTWURFSMUSTER PROTOTYPE 7. Erstellen Sie ein UML-Klassendiagramm. 8. Wie korrespondieren Ihre Klassen und deren Methoden zum Entwurfsmuster Prototype?

16 Kapitel 5 Entwurfsmuster Composite Aufbauend auf der Lösung zum Entwurfsmuster Factory Method wollen wir auch Aggregate von Verbindungen genau so wie eine Verbindung verwenden, d.h. wir wollen keinen Unterschied machen zwischen einer Elementarverbindung und einem Aggregat von Verbindungen. Ferner kann ein Aggregat selbst wieder in einem Aggregat enthalten sein. Aufgaben: 1. Erstellen Sie zunächst ein UML-Klassendiagramm ohne Berücksichtigung von GUI-Klassen. 2. Implementieren Sie das Klassendiagramm. 3. Fügen Sie den bisher erstellten Code als Ergebnis in Ihre Dokumentation ein. 4. Wie korrespondieren Ihre Klassen und deren Methoden zum Entwurfsmuster Composite? 11

17 12 KAPITEL 5. ENTWURFSMUSTER COMPOSITE

18 Kapitel 6 Entwurfsmuster Bridge Die Darstellung der geometrischen Gebilde erfolgt über die Klasse Graphics. Anstatt von Graphics wollen wir andere grafische Systeme verwenden. Z.B. wollen wir die Grafik in einer Textdatei ausgeben, wobei die Pixel durch den Anfangs-Großbuchstaben ihrer Farbe dargestellt werden. Ferner könnten wir die Grafik als SVG-Grafik ausgeben. 1. Diskutieren Sie, inwiefern die oben genannte Problematik etwas mit dem Entwurfsmuster Bridge zu tun hat. (Was ist die Abstraction-Hierarchie? Was ist die Implementor- Hierarchie?) 2. Erstellen Sie ein UML-Klassendiagramm. 3. Implementieren Sie das Klassendiagramm. 4. Fügen Sie den bisher erstellten Code als Ergebnis in Ihre Dokumentation ein. 5. Wie korrespondieren ihre Klassen und deren Methoden zum Entwurfsmuster Bridge? 13

19 14 KAPITEL 6. ENTWURFSMUSTER BRIDGE

20 Kapitel 7 Entwurfsmuster Decorator Im Beispiel zu Abstract Factory wurde ein Grafle zwischen Button pressed und Button released gezeichnet. Damit kann man die grafischen Gebilde größer und sichtbarer zeichnen. Dieses Modell wollen wir hier übernehmen. Dieses Modell hat zunächst folgende Struktur: 15

21 16 KAPITEL 7. ENTWURFSMUSTER DECORATOR Malen aktuellefarbe :Color Prototyp :Grafle[*] aktuellesgrafle :Grafle mousedragged (e :MouseEvent) mousemoved (e :MouseEvent) mousepressed (e :MouseEvent) mousereleased (e :MouseEvent) <<instantiate>> Zeichnung kurve :ArrayList<Grafle> addiere (:Grafle) loesche () paintcomponent (:Graphics) * <<interface>> Grafle zeichne (:Graphics) newgrafle (xa :int, ya :int, xe :int, ye :int, :Color) :Grafle tostring () :String getxa () :int getya () :int getxe () :int getye () :int setxe (:int) setye (:int) GrafleI xa :int ya :int xe :int ye :int farbe :Color Strich DoppelStrich delta :int Rechteck Oval Ein Grafle wird zunächst nur durch Anfangs- und Endpunkt dargestellt.

22 17 Bevor wir es zeichnen, wollen wir aussuchen können, welche Farben und welche Grafle-Arten (Strich, DoppelStrich, Rechteck, Oval usw.) wir addieren. 1. Diskutieren Sie, inwiefern die oben genannte Problematik etwas mit dem Entwurfsmuster Decorator zu tun hat. 2. Erstellen Sie ein UML-Klassendiagramm. 3. Implementieren Sie das Klassendiagramm. Dabei können Sie den bisherigen Code verwenden. 4. Fügen Sie den bisher erstellten Code als Ergebnis in Ihre Dokumentation ein. 5. Wie korrespondieren ihre Klassen und deren Methoden zum Entwurfsmuster Decorator?

23 18 KAPITEL 7. ENTWURFSMUSTER DECORATOR

24 Kapitel 8 Entwurfsmuster Observer Im Kapitel Decorator hatten wir auch eine Lösung gezeigt, bei der ein Grafle blinkt (Blinker). Um das zu realisieren, musste der Blinker-Thread die Methode repaint () von Zeichnung aufrufen. Das verletzt die Flow-Design-Regel, da Zeichnung schon immer die Methode zeichne (...) von Grafle und eben auch Blinker aufruft. <<interface>> Grafle * Zeichnung Strich Blinker Die Verletzung der Flow-Design-Regel hat als Problem zur Folge, dass wir den Fall, dass GrafleI noch keine Zeichnung hat, gesondert behandeln müssen. Die Anwendung des Entwurfsmusters Observer löst dieses Problem. Das derzeitige Klassendiagramm hat folgende Struktur: 19

25 20 KAPITEL 8. ENTWURFSMUSTER OBSERVER Zeichnung addiere (:Grafle) loesche () paintcomponent (:Graphics) Malen aktuellefarbe :Color aktuellesgrafle :Grafle Prototyp :Grafle[*] Dekoration :Dekorator[*] mousedragged (e :MouseEvent) mousemoved (e :MouseEvent) mousepressed (e :MouseEvent) mousereleased (e :MouseEvent) * <<interface>> Grafle zeichne (:Graphics) updatexe (:int) updateye (:int) setzeichnung (:Zeichnung) getzeichnung () :Zeichnung loesche () GrafleI xa :int ya :int xe :int ye :int farbe :Color :Zeichnung updatexe (:int) updateye (:int) loesche () Dekorator :Zeichnung zeichne (:Graphics) updatexe (:int) updateye (:int) newgrafle (:Grafle, xa :int, ya :int, xe :int, ye :int) :Grafle tostring () :String setzeichnung (:Zeichnung) loesche () Farbe Farbe :Color zeichne (:Graphics) Strich xa :int ya :int xe :int ye :int zeichne (:Graphics) updatexe (:int) updateye (:int) DoppelStrich delta :int Rechteck Oval Blinker Stopped :boolean Toggle :boolean :Thread loesche ()

26 21 1. Diskutieren Sie, wie die oben genannte Problematik mit dem Observer-Pattern gelöst wird. 2. Erstellen Sie ein UML-Klassendiagramm. 3. Implementieren Sie das Klassendiagramm. Verwenden Sie dabei den zur Verfügung gestellten Code in ~kfg/swe/blinker.zip. 4. Fügen Sie das Klassendiagramm und den erstellten Code als Ergebnis in Ihre Dokumentation ein.

Ereignisverwaltung und Layout-Typen

Ereignisverwaltung und Layout-Typen Ereignisverwaltung und Layout-Typen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Ereignisverwaltung

Mehr

Institut für Programmierung und Reaktive Systeme. GUIs mit Swing. Markus Reschke

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

Mehr

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

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,

Mehr

NTB Druckdatum: 01.04.13 -

NTB Druckdatum: 01.04.13 - AWT UND SWING AWT = abstract windowing toolkit Bausteine Eigenes Fenster Programmcode steht nicht im Main, sondern in einer separaten Klasse extends JFrame JWindow selbstständiges Fenster, ohne Rahmen

Mehr

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

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.

Mehr

Was passiert, wenn Button "Ok?" mit Maus angeklickt?

Was passiert, wenn Button Ok? mit Maus angeklickt? Ein Beispiel-Frame Was passiert, wenn Button "Ok?" mit Maus angeklickt? gar nichts!!! FH AACHEN UNIVERSITY OF APPLIED SCIENCES OOS Prof. Dr. H. Faßbender Ereignisverarbeitung 27. April 2016 1 Implementierung

Mehr

Konzepte objektorientierter Programmierung

Konzepte objektorientierter Programmierung Konzepte objektorientierter Programmierung Objekte Klassen Nachrichten Kapselung Einführung Vererbung heute! Konzepte objektorientierter Programmierung Was ist ein Objekt? Was ist eine Klasse? Was sind

Mehr

Java I Vorlesung 11 Graphische Oberflächen mit Swing

Java I Vorlesung 11 Graphische Oberflächen mit Swing Java I Vorlesung 11 Graphische Oberflächen mit Swing 5.7.2004 Swing Komponenten Layout-Manager Events Swing und Threads Die Java-Plattform 2 Die Java-Plattform 3 "Hello World" in Swing HelloWorldS.java

Mehr

Objektorientierte Software-Entwicklung

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

Mehr

Lösungen. 1. Aufgabe. // ActionExample.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.

Lösungen. 1. Aufgabe. // ActionExample.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event. Lösungen 1. Aufgabe // ActionExample.java import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; public class ActionExample extends JFrame int counter = 1; JLabel counterlabel; public

Mehr

Einstieg in die Informatik mit Java

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

Mehr

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen 1 Kapitel 7 Ziele 2 (Graphical User Interfaces) als Anwendungsbeispiel für die objektorientierte Programmierung kennenlernen Benutzung von Vererbung zur Erstellung individueller GUI-Klassen durch Erweiterung

Mehr

Graphical User Interfaces

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

Mehr

11. GUI-Programmierung mit SWING Überblick

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

Mehr

Eventhandling. Delegation model Eventhandler model

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

Mehr

GUI Programmierung mit JAVA Swing

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

Mehr

Ist eine Softwarekomponente, die dem Benutzer eines Computers die Interaktion mit der Maschine über grafische Symbole erlaubt

Ist eine Softwarekomponente, die dem Benutzer eines Computers die Interaktion mit der Maschine über grafische Symbole erlaubt GUI GUI = Graphical User Interface Ist eine Softwarekomponente, die dem Benutzer eines Computers die Interaktion mit der Maschine über grafische Symbole erlaubt Gute Übersicht über alle Funktionalitäten

Mehr

Ziel dieses Kapitels: Einführung in die Grundzüge der Programmierung graphischer Benutzeroberflächen (engl.: "graphical user interface", GUI) in Java

Ziel dieses Kapitels: Einführung in die Grundzüge der Programmierung graphischer Benutzeroberflächen (engl.: graphical user interface, GUI) in Java GUI-Programmierung in Java GUI-Programmierung in Java 2002 Prof. Dr. Rainer Manthey Informatik II 1 AWT und Swing Ziel dieses Kapitels: Einführung in die Grundzüge der Programmierung graphischer Benutzeroberflächen

Mehr

Kapitel 7: Ereignis-basierte Kommunikation

Kapitel 7: Ereignis-basierte Kommunikation Liste P: Programmieren mit Java WS 2001/2002, Prof. Dr. V. Turau, FH Wiesbaden Kapitel 7: Ereignis-basierte Kommunikation Folie 125 : Grafische Oberflächen Eine grafische Oberfläche besteht aus Komponenten.

Mehr

GUI-Programmierung. Teil I. Unterlagen zum Modul OOP mit Java V by MOU2/BFH-TI. Berner Fachhochschule Technik und Informatik

GUI-Programmierung. Teil I. Unterlagen zum Modul OOP mit Java V by MOU2/BFH-TI. Berner Fachhochschule Technik und Informatik GUI-Programmierung mit Java Teil I Unterlagen zum Modul OOP mit Java V 3.0 2007 by WBR1/BFH-TI 2011 by MOU2/BFH-TI GUI-Programmierung V3.0 2011 by WBR1&MOU2/BFH-TI Lernziele Die Kursteilnehmer sind in

Mehr

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI) 1 JAVA für Bauingenieure Alexander Karakas SS 2008 Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI) 21.05.2008 2 Was ist ein(e) GUI? GUI = Graphical User Interface = Graphische

Mehr

Grafische Benutzeroberflächen mit Swing

Grafische Benutzeroberflächen mit Swing Grafische Benutzeroberflächen mit Swing KW 30, Zentralübung Informatik II 2006-07-24 Klausur: Stichpunkte 1. Auswertung System.out.println("abc" instanceof String); Ergebnis von instanceof ist ein boolean,

Mehr

16 Zeichnen in Swing-Komponenten , Prof. Dr. D. Ratz

16 Zeichnen in Swing-Komponenten , Prof. Dr. D. Ratz 16 Zeichnen in Swing-Komponenten 2009 2014, Prof. Dr. D. Ratz 16.1 Grafische Darstellung von Komponenten Der Repaint-Manager sorgt für die grafische Darstellung der Komponenten Aktivierung beim erstmaligen

Mehr

Benutzeroberflächen. Abstract Windowing Toolkit, Rahmen, Wächter, Ereignisbehandlung, Ausgabe, Menüs.

Benutzeroberflächen. Abstract Windowing Toolkit, Rahmen, Wächter, Ereignisbehandlung, Ausgabe, Menüs. Benutzeroberflächen Abstract Windowing Toolkit, Rahmen, Wächter, Ereignisbehandlung, graphische Ausgabe, Menüs. Der Abstract Windowing Toolkit (awt) Jedes moderne Betriebssystem stellt bereit Fenster Menüs

Mehr

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

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 17. Juli 2015 Hinweise: Klausurtermine: Programmieren II Übungsklausur Programmieren I: 7. September

Mehr

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik GUI-Programmierung mit Swing

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik GUI-Programmierung mit Swing Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik GUI-Programmierung mit Swing AWT und Swing Java enthält zwei Pakete zur Programmierung graphischer Oberflächen. java.awt: Das Abstract

Mehr

Intensivkurs Java. Prof. Dr. Karl Friedrich Gebhardt

Intensivkurs Java. Prof. Dr. Karl Friedrich Gebhardt Intensivkurs Java Prof. Dr. Karl Friedrich Gebhardt c 1996 2015 Karl Friedrich Gebhardt Auflage vom 31. August 2015 Prof. Dr. K. F. Gebhardt Duale Hochschule Baden-Württemberg Stuttgart Angewandte Informatik

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

Funktionale und Objekt-Orientierte Programmierkonzepte

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

Mehr

Swing :Komponenten I (Teil 2)

Swing :Komponenten I (Teil 2) l Bei Swing handelt es sich um eine Programmierschnittstelle und Grafikbibliothek zum Programmieren von grafischen Benutzeroberflächen l Swing stellt eine Menge von Klassen zur Verfügung l Swing wurde

Mehr

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 Programmieren II Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Events in Java Graphische Anwendungen werden über Events gesteuert.

Mehr

Programmieren 2 Selbststudium Semesterwoche 4

Programmieren 2 Selbststudium Semesterwoche 4 Programmieren 2 Selbststudium Semesterwoche 4 Kapitel 11.1, 11.2 und 11.3 1. Das Konzept "Interface" ist wichtig und ist uns schon mehrfach begegnet. In welchen Zusammenhängen hatten wir es schon mit "Interfaces"

Mehr

Eingabe von Texten. Vorlesung Software-Entwicklung / Folie 101

Eingabe von Texten. Vorlesung Software-Entwicklung / Folie 101 Eingabe von Texten SWE-101 Komponente TextField: einzeiliger, edierbarer Text Ereignisse: ActionEvent (wie bei Button) ausgelöst bei der Eingabe von Return einige Methoden (aus der Oberklasse TextComponent):

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

Programmieren II. Java im Vergleich zu anderen Sprachen. Einführung: GUI. Einführung: Grafische Benutzeroberflächen. Dr.

Programmieren II. Java im Vergleich zu anderen Sprachen. Einführung: GUI. Einführung: Grafische Benutzeroberflächen. Dr. Programmieren II Dr. Klaus Höppner Hochschule Darmstadt SS 2008 1 / 22 2 / 22 Einführung: GUI Fast alle Programme besitzen mittlerweile eine grafische Benutzeroberfläche (engl: Graphical User Interface,

Mehr

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 Programmieren II Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Event-Modelle in Java Graphische Anwendungen werden über Events

Mehr

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 Programmieren II Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Event-Modelle in Java Graphische Anwendungen werden über Events

Mehr

GUI Programmierung in Java

GUI Programmierung in Java vs und niemals mischen! Daher muss man sich für eine Klasse entscheiden 1 (Abstract Window Toolkit) schwergewichtige Alle Elemente werden vom Betriebssytem gemalt sehen aus wie alle anderen Programme auf

Mehr

Universität Paderborn Prof. Dr. Stefan Böttcher. Abschluss von Kapitel 2: Programmierung Grafischer Oberflächen mit der Swing-Bibliothek

Universität Paderborn Prof. Dr. Stefan Böttcher. Abschluss von Kapitel 2: Programmierung Grafischer Oberflächen mit der Swing-Bibliothek Abschluss von Kapitel 2: Programmierung Grafischer Oberflächen mit der Swing-Bibliothek 1 Ereignis-orientierte Programmierung Prinzipien Programm besteht aus einer Reihe von Dämonen (=Listener) Dämon (=Listener)

Mehr

Grafische Benutzeroberflächen

Grafische Benutzeroberflächen Gilbert Beyer und Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Aufgabe Ein Benutzer soll zwei Zahlen in ein Programm

Mehr

Abstrakte Klassen, Interfaces

Abstrakte Klassen, Interfaces Abstrakte Klassen, Interfaces INE2, Mittwoch 8.00-9.35 / TE561 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was gehtes? Problemstellung Klassenhierachie - verschiedene geometrische

Mehr

Objektorientierte Programmierung

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:

Mehr

Universität Paderborn Prof. Dr. Stefan Böttcher. Kapitel 3: Java Applets

Universität Paderborn Prof. Dr. Stefan Böttcher. Kapitel 3: Java Applets Kapitel 3: Java Applets 1 Was sind Applets? kleine in Fenstern ausführbare Programme typisch: Aufruf im Browserfenster als Teil einer HTML-Seite Anfang des umgebenden HTML-Textes

Mehr

Programmieren II. Zeichnen in Swing-Komponenten. Heusch 18 Ratz Institut für Angewandte Informatik

Programmieren II. Zeichnen in Swing-Komponenten. Heusch 18 Ratz Institut für Angewandte Informatik Programmieren II Zeichnen in Swing-Komponenten Heusch 18 Ratz 16.1 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Zeichnen in Swing-Komponenten (1) Eine Swing-Komponente kann nicht

Mehr

Heute. Grafische Benutzeroberflächen (Anonyme) innere Klassen Einfache Simulationen main / ausführbare jar-files IT I - VO 11 1

Heute. Grafische Benutzeroberflächen (Anonyme) innere Klassen Einfache Simulationen main / ausführbare jar-files IT I - VO 11 1 Heute Grafische Benutzeroberflächen (Anonyme) innere Klassen Einfache Simulationen main / ausführbare jar-files 17.01.2017 IT I - VO 11 1 Organisatorisches Noch zwei UE und eine Wissensüberprüfung Heute

Mehr

import java.awt.*; import java.awt.event.*; import javax.swing.*;

import java.awt.*; import java.awt.event.*; import javax.swing.*; Swing Workshop Dieser Workshop enthält grundsätzliche Informationen über Swing und Java und regt mit einigen Beispielen und Übungen zum weiteren Erkunden dieses Themengebietes an. Kapitel 1: Das erste

Mehr

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de Stand FTE2 Anfang 4. Semester plus Projekt Multiuhren_Thread Ich gehe im Hinblick auf Klassenarbeiten und der Abschlussprüfung davon aus, dass Sie das Skript OOP JAVA2 durchgearbeitet haben. Wir haben

Mehr

J.1. J.1 GUI-Programmierung in in Java. 2002 Prof. Dr. Rainer Manthey Informatik II 1

J.1. J.1 GUI-Programmierung in in Java. 2002 Prof. Dr. Rainer Manthey Informatik II 1 GUI-Programmierung in Java GUI-Programmierung in in Java 2002 Prof Dr Rainer Manthey Informatik II 1 AWT und Swing Ziel dieses Kapitels: : Einführung in die Grundzüge der Programmierung graphischer Benutzeroberflächen

Mehr

Graphische Benutzungsoberflächen

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

Mehr

Grafik-Programmierung

Grafik-Programmierung Grafik-Programmierung In dieser Übung beschäftigen wir uns zunächst mit elementaren Grundlagen der Grafikprogrammierung. In der nächsten Übung werden wir dies auf Spiele anwenden. Aufgabe 1: Einfache Grafik:

Mehr

Projektarbeit Java. 4-Gewinnt. Berner Fachhochschule. 2004, Labor für Technische Informatik

Projektarbeit Java. 4-Gewinnt. Berner Fachhochschule. 2004, Labor für Technische Informatik Berner Fachhochschule Hochschule für Technik und Informatik, HTI Fachbereich Elektro- und Informatik Labor für technische Informatik Projektarbeit Java 4-Gewinnt 2004, Labor für Technische Informatik Dateiname:

Mehr

Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick

Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick 1 Einführung 2 Einfache Swing Komponenten 3 Ereignisbehandlung und Adapterklassen 4 Layout Manager 5 Komplexere Swing Komponenten Prof. Dr.

Mehr

Probeklausur Informatik 2 Sommersemester 2013

Probeklausur Informatik 2 Sommersemester 2013 Probeklausur Informatik 2 Sommersemester 2013 1 Probeklausur Informatik 2 Sommersemester 2013 Name: Matrikelnummer: Hilfsmittel: Es sind alle schriftlichen Unterlagen, aber keine elektronischen Hilfsmittel

Mehr

Java. Prof. Dr. Stefan Enderle NTA Isny

Java. Prof. Dr. Stefan Enderle NTA Isny Java Prof. Dr. Stefan Enderle NTA Isny 7. Oberflächenprogrammierung JFrame Die Klasse JFrame bietet eine Basis für Programme mit graphischer Benutzeroberfläche. Das folgende Programm legt ein Objekt der

Mehr

GUIs in Java und ihre Programmierung

GUIs in Java und ihre Programmierung GUIs in Java und ihre Programmierung Einführung GUI = Graphical User Interface graphische Benutzerschnittstelle Java Tutorial java.sun.com/docs/books/tutorial/index.html Java Documentation (in Version

Mehr

Teil 1: Grundeigenschaften von Rechnern und Software

Teil 1: Grundeigenschaften von Rechnern und Software Blatt Nummer: 1 Teil 1: Grundeigenschaften von Rechnern und Software Aufgabe 1.1 [3P] Nennen Sie mindestens 3 Arten von Programmen zur Softwareentwicklung Editor, Compiler, Linker, Debugger, Interpreter,...

Mehr

Hauptklausur: PRGII MD

Hauptklausur: PRGII MD Hauptklausur: PRGII MD Aufgabe 1 (18 Punkte) Betrachten Sie folgenden binären Suchbaum. a) Geben Sie die Knoten des Baumes in postorder aus. anne, helmut, harald, bert, arno, manuel, uwe, thorsten, sebastian,

Mehr

8.6 Visualisierung der Sortieralgorithmen

8.6 Visualisierung der Sortieralgorithmen 8.6 Visualisierung der Sortieralgorithmen 8.6.1 Problemstellung Schauen Sie sich den folgenden Quelltext eines Java-Applets an: import java.awt.*; import javax.swing.*; import java.awt.event.*; public

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

Liste Programmieren Java Überblick

Liste Programmieren Java Überblick Liste Programmieren Java Überblick 1 Was ist Java? 2 Klassen und Objekte 3 Vererbung 4 Schnittstellen 5 Innere Klassen 6 Exceptions 7 Funktionsbibliothek 8 Datenstrukturen und Algorithmen 9 Ein-/Ausgabe

Mehr

Grundlagen der Informatik für Ingenieure I

Grundlagen der Informatik für Ingenieure I 10. Eventhandling in Java 10.1 Eventhandling 10.2 Listener 10.3 Adapter 10.7 Listener (Übersicht).1 10.1 Eventhandling 10.1 Eventhandling Eventhandling in Java ist Teil des AWT-package. Es dient der Kommunikation

Mehr

Anweisungen zur Ablaufsteuerung

Anweisungen zur Ablaufsteuerung Anweisungen zur Ablaufsteuerung if-else switch while do-while for Ausdrücke Ein Ausdruck ist eine Folge von Variablen, Operatoren und Methodenaufrufen, der zu einem einzelnen Wert ausgewertet wird. Operanden

Mehr

Swing Lernen am Code Teil 1

Swing Lernen am Code Teil 1 Swing Lernen am Code Teil 1 Swing Fenster erzeugen import java.awt.* import java.awt.event.* import javax.swing.* class SwingDemo{ static JFrame Fenster; public static void main(string[] args){ } } Fenster

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 12 Grafische Benutzerschnittstellen... 12-2 12.1 Komponenten... 12-2 12.1.1 AWT und Swing... 12-2 12.1.2 Beispiel Hallo Welt!... 12-3 12.2 Ereignisverarbeitung... 12-6 12.3 Grafik... 12-10 12.3.1

Mehr

Sommersemester Implementierung III: GUI und Verhalten (Teil 2)

Sommersemester Implementierung III: GUI und Verhalten (Teil 2) Sommersemester 2003 Implementierung III: GUI und Verhalten (Teil 2) 26 Aufgabe 5 Implementierung III: GUI und Verhalten (Teil 2) Umfang: 1 Woche Punkte: 50 P. Als Nächstes soll die Implementierung des

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

Grafische Benutzeroberflächen

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

Mehr

Ereignisbehandlung 21

Ereignisbehandlung 21 Ereignisbehandlung 21 3 Ereignisbehandlung Dieses Kapitel beschäftigt sich mit der Ereignisbehandlung, d.h. der Reaktion eines Programms auf Eingaben durch benutzende Personen. Nach einigen ersten Beispielen

Mehr

Der Ball kann angezeigt werden: anzeigen( ) {... } Der Ball kann z.b. seine Größe verändern: groesseaendern(int veraenderung) {... } usw.

Der Ball kann angezeigt werden: anzeigen( ) {... } Der Ball kann z.b. seine Größe verändern: groesseaendern(int veraenderung) {... } usw. Objekt-Orientierung Die ersten objektorientierten Sprachen wurden ab 1967 entwickelt (Simula, Smalltalk). Die Grundidee besteht darin, Objekte der realen Welt abzubilden. Java-Programme bestehen aus Klassen.

Mehr

Hochschule der Medien Prof. Uwe Schulz 14. Juli 2010 Klausur Informatik, EDV-Nr. 40301 Seite 1 von 5. Teil 2: Aufgaben

Hochschule der Medien Prof. Uwe Schulz 14. Juli 2010 Klausur Informatik, EDV-Nr. 40301 Seite 1 von 5. Teil 2: Aufgaben Hochschule der Medien Prof Uwe Schulz 14 Juli 2010 Klausur Informatik, EDV-Nr 40301 Seite 1 von 5 Name: Matr Nr: Teil 2: Aufgaben Hilfsmittel: alle außer tragbare Computer und Nachbar Bearbeitungszeit:

Mehr

Design Patterns I. Observer, Listener & MVC

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

Mehr

Objektorientierte Programmierung OOP Objektorientierte Programmierung (OOP) mit Java

Objektorientierte Programmierung OOP Objektorientierte Programmierung (OOP) mit Java 9 Übungen: Applets Objektorientierte Programmierung OOP Objektorientierte Programmierung (OOP) mit Java 1. Java-Applet mit Text 2. Java-Applet mit Bild und Text 3. Java-Applet mit Grafik 9 Applets 4. Java-Applet

Mehr

Plotten von Kreisen ( nach Jack Bresenham ) (C) Ac bis

Plotten von Kreisen ( nach Jack Bresenham ) (C) Ac bis Plotten von Kreisen ( nach Jack Bresenham ) (C) Ac 3-1990 bis 2-2017 Wie zeichnet der Computer Kreise? Natürlich mithilfe von Pixels, picture elements, also kleinen Bildpunkten. Die beste Approximation

Mehr

2. Vererbung und Kapselung

2. Vererbung und Kapselung 2. Vererbung und Kapselung Die Objekte der Klasse BALL werden im Gegensatz zu den Objekten von KREIS noch nicht graphisch dargestellt. Um die BALL-Objekte auch graphisch darzustellen zu können, muss BALL

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

Abstrakte Klassen und Schnittstellen. Abstrakte Klassen und Schnittstellen. Abstrakte Klassen und Schnittstellen. Vererbung von abstrakten Methoden

Abstrakte Klassen und Schnittstellen. Abstrakte Klassen und Schnittstellen. Abstrakte Klassen und Schnittstellen. Vererbung von abstrakten Methoden und und Definieren Typen (nicht instanziierbare ) Können Methoden- und Attributdefinitionen enthalten Methoden können abstrakt definiert werden (Methoden ohne Rumpf) und abstrakte werden vererbt(einfache

Mehr

Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus

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

Mehr

Einführung in Swing. Graphical User Interface

Einführung in Swing. Graphical User Interface Einführung in Swing Ho Ngoc Duc IFIS - Universität zu Lübeck Graphical User Interface Ein GUI-Programm beinhaltet: Graphische Darstellung der Anwendungsdaten und Interaktionsmöglichkeiten in Fenstern Steuerung

Mehr

Java Projekt: Tic Tac Toe + GUI

Java Projekt: Tic Tac Toe + GUI Java Projekt: Tic Tac Toe + GUI Rechnerpraktikum aus Programmierung im WS 2005/06 unter der Leitung von Dr. Michael Hahsler Tadeh Amirian (h0253821) 10.01.2006 1) Problemdefinition Beim TicTacToe Spiel

Mehr

Graphische Benutzungsoberflächen mit Java. Einführung in NetBeans

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

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

Instrumentierung und Dekodierung

Instrumentierung und Dekodierung 116 Copyright 1996-1998 by Axel T. Schreiner. All Rights Reserved. Instrumentierung und Dekodierung Erweiterung der Grafikklassen Das awt-paket erweitert alle Klassen für Grafikobjekte in java.awt, so

Mehr

Universität Karlsruhe (TH)

Universität Karlsruhe (TH) Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Kapitel X Zeichnen mit Java2D SWT I Sommersemester 2009 Prof. Walter F. Tichy David Meder Literatur Informationen zu Java2D finden Sie in

Mehr

Javakurs für Fortgeschrittene

Javakurs für Fortgeschrittene Javakurs für Fortgeschrittene Einheit 03: Swing Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Einführung in GUI-Programmierung Motivation Grundlagen von Swing Praxis: UI für

Mehr

Ein Manager mit CardLayout layout/cards.java

Ein Manager mit CardLayout layout/cards.java 201 Copyright 1996-1998 by Axel T. Schreiner. All Rights Reserved. Ein Manager mit CardLayout layout/cards.java CardLayout dient vor allem zum Aufbau von Inspektoren: In der gleichen Fläche soll je nach

Mehr

Teil 1: Grundeigenschaften von Rechnern und Software

Teil 1: Grundeigenschaften von Rechnern und Software Blatt Nummer: 1 Teil 1: Grundeigenschaften von Rechnern und Software Aufgabe 1.1 [2P] Welcher fundamentale Unterschied besteht zwischen dem Zweck eines Computer von dem Zweck anderer Maschinen (etwa einer

Mehr

Ereignisse (Events) in Java

Ereignisse (Events) in Java Ereignisse (Events) in Java werden durch Aktionen an GUI-Komponenten ausgelöst Quelle: GUI-Komponente, die ein Ereignis als Instanz einer Event-Klasse erzeugt Beispiel: ein Button, der angeklickt wird

Mehr

/** Main-Methode erzeugt einen neuen Editor zum Testen */ public static void main(string[] args) { new Editor();

/** Main-Methode erzeugt einen neuen Editor zum Testen */ public static void main(string[] args) { new Editor(); Bereich: Grafische Benutzeroberflächen (UI), Events (2) Editor Package: de.dhbwka.java.exercise.ui.editor Klasse: Editor Aufgabenstellung: Schreiben Sie einen kleinen Texteditor mit Swing! Keine Panik,

Mehr

5 Das Projekt Apfelwein

5 Das Projekt Apfelwein Kapitel 5 Zustandsorientierte Modellierung (Teil 1) Seite 1 5 Das Projekt Apfelwein Bemerkung: In der 10. Jahrgangsstufe (G8) werden die Schüler in die zustandsorientierte Programmierung eingeführt. Dies

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

Medientechnik. Übung 2 Java Swing

Medientechnik. Übung 2 Java Swing Medientechnik Übung 2 Java Swing Planung Nr Zeitraum Thema 1 20.04. 25.04. Bildretusche mit Gimp 2 27.04. 01.05. GUI Programmierung 3 04.05. 08.05. Model-View Controller 4 18.05. 22.05. Bildfilter 5 26.05.

Mehr

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung Aufgabe Editor package BA.GUI.Swing; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.logging.level; import java.util.logging.logger;

Mehr

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Graphische Benutzerschnittstellen I GUI erzeugen Seite 1 GUI GUI: Graphical User Interface Graphische Benutzeroberfläche Seite 2

Mehr

Software Engineering Entwurfsmuster (update: 11.6.)

Software Engineering Entwurfsmuster (update: 11.6.) Software Engineering Entwurfsmuster (update: 11.6.) Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Entwurfsmuster Entwurfsmuster (Design Patterns) geben bewährte

Mehr

Programmierkurs C++ Abstrakte Klassen und Methoden

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

Mehr

Rückblick. Geltungsbereich von lokalen Variablen? Wo leben lokale Variablen? Geltungsbereich von Instanzvariablen? Wo leben Instanzvariablen?

Rückblick. Geltungsbereich von lokalen Variablen? Wo leben lokale Variablen? Geltungsbereich von Instanzvariablen? Wo leben Instanzvariablen? Rückblick Geltungsbereich von lokalen Variablen? Wo leben lokale Variablen? Geltungsbereich von Instanzvariablen? Wo leben Instanzvariablen? Was sind statische Methoden? Was sind statische Variablen? Was

Mehr

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

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 -

Mehr

...erinnern Sie sich? oopjs4b / kwhbkd4r

...erinnern Sie sich? oopjs4b / kwhbkd4r ...erinnern Sie sich? oopjs4b / kwhbkd4r !" Ereignisbehandlung in awt/swing führt Liste interessierter Behandler GUI- Komponente (z.b. Knopf) wird eingetragen trägt ein Ereigniskanal fertigt ab neuer Behandler

Mehr

Kapitel X - Zeichnen mit Java2D

Kapitel X - Zeichnen mit Java2D Kapitel X - Zeichnen mit Java2D SWT I Sommersemester 2010 Walter F. Tichy, Andreas Höfer, Korbinian Molitorisz IPD Tichy, Fakultät für Informatik KIT die Kooperation von Forschungszentrum Karlsruhe GmbH

Mehr