Programmieren 2 Selbststudium Semesterwoche 4



Ähnliche Dokumente
GUI Programmierung mit JAVA Swing

Objektorientierte Software-Entwicklung

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

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

Graphische Benutzungsoberflächen

Applets. Applets. Applets. Applet: Java-Programm Eingebettet in einer HTML-Seite Ausführung von einem Java-fähigen Web-Browser oder sog.

NTB Druckdatum:

Objektorientierte Programmierung

Grundlagen der Programmierung APPLETS

Grafikausgabe mit dem Abstract- Windowing-Toolkit. Eine Einführung

Java: Vererbung. Teil 3: super()

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

GRAFISCHE BENUTZERSCHNITTSTELLEN

Java I Vorlesung 11 Graphische Oberflächen mit Swing

GUI Programmierung in Java

Java Projekt: Tic Tac Toe + GUI

Programmieren in Java

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

Einführung in die Programmierung

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

Grafische Benutzeroberflächen mit Swing

Benutzeroberflächen. Java Teil 4

Einstieg in die Informatik mit Java

2A Basistechniken: Weitere Aufgaben

Vererbung & Schnittstellen in C#

Swing Lernen am Code Teil 1

Ereignisbehandlung 21

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Praktische Übung 'JUnit-Test'

Klassen in Java. Klassen

Grafische Benutzeroberfläche mit Glade und Python

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Grundlagen der Programmierung (GP) Prof. Dr. H. Schlingloff Joachim Hänsel

Objektorientierte Programmierung. Kapitel 12: Interfaces

Software Engineering Klassendiagramme Assoziationen

Objektorientierte Programmierung

WhiteStarUML Tutorial

Informatik Kurs 12 André Hoffmann. Delphi. Einführung in die Windows- Programmierung

Prinzipien Objektorientierter Programmierung

Applet Firewall und Freigabe der Objekte

11. GUI-Programmierung mit SWING Überblick

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

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Kapitel 6. Vererbung

Swing :Komponenten I (Teil 2)

Objektorientierte Programmierung

Einführung in die Java- Programmierung

Java Design und Event Handling. Natascha Hoebel Professur Prof. R. V. Zicari. AWT SWING Layout Design Event Handling

Kapitel 6. Vererbung

Java Kurs für Anfänger Einheit 5 Methoden

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung

GUI-Programmierung in Java

5 Projekt Bankverwaltung

Übung Nr. 20 Freitag, 09:00-11:00 Uhr in E3.301

Ereignisse (Events) in Java

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Kap. 35 Swing: Grundlagen Kap Swing: Hauptfenster

Kapitel 6. Vererbung

U08 Entwurfsmuster (II)

Delegatesund Ereignisse

Die Erstellung eigener Strukturprofile

SWT. -The Standard Widget Toolkit- Inhaltsverzeichnis. Thomas Wilhelm SWT. 1. Was ist SWT?

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Java Einführung Abstrakte Klassen und Interfaces

Klausur vom 14. Juni Informatik 4

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

Schritt 1 - Ein Spielfeld

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Programmierkurs Java

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

WPF Steuerelemente Listbox, ComboBox, ListView,

Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick

Bauteilattribute als Sachdaten anzeigen

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen.

Einführung in die Informatik Tools

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Studentische Lösung zum Übungsblatt Nr. 7

Architekturbeschreibung Koala Editor

Internet Explorer Version 6

2 DAS BETRIEBSSYSTEM. 2.1 Wozu dient das Betriebssystem. 2.2 Die Bildschirmoberfläche (Desktop) Themen in diesem Kapitel: Das Betriebssystem

Programmieren 2 Übung Semesterwoche 4

Multimedia Engineering II - Übung 2

Ein Projekt mit JavaFX erstellen

Institut für Programmierung und Reaktive Systeme 26. April Programmieren II. 10. Übungsblatt

Java Einführung Collections

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Grundlagen von Python

Abstract Window Toolkit

LISP. Eine Einführung

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Test-Driven Design: Ein einfaches Beispiel

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Applets Belebung von Webseiten. Dipl.-Ing. Wolfgang Beer

Bedienungsanleitung Albumdesigner. Neues Projekt: Bestehendes Projekt öffnen:

Projekt AGB-10 Fremdprojektanalyse

Abschnitt 9: Schnittstellen: Interfaces

Tag 9: Grafische Benutzeroberflächen

Transkript:

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" zu tun? Simulierte Mehrfach-Vererbung (multiple inheritance) Explizite Design-Vorgabe http://en.wikipedia.org/wiki/interface_(java) 2. Erklären Sie mit Ihren eigenen Worten kurz die Konzepte GUIKomponente, GUILayout und EventHandling. GUI-Komponenten sind einzelne Funktionsträger (Bauteile), welche in einer Software als grafische Ein- /Ausgabehilfen eingesetzt werden können. Beispiele für GUI-Komponenten: Button, Textfeld, Textlabel, Dropdown- bzw. Combo-Box, Radio-Button, Check-Box, aber auch die Menüliste, Toolbar, uvm. Ein GUI-Layout (oder "Layout-Manager") erlaubt die Gestaltung eines Containers. Mit Hilfe von GUI- Layouts lässt sich somit die Ausrichtung, Füllfarbe, Ränder, Positionierung von Frames und Panels bestimmen. Event Handling: Ein Ereignis (engl. "Event") dient in der Softwaretechnik zur Steuerung des Programmflusses. Das Programm wird nicht linear durchlaufen, sondern es werden spezielle Ereignisbehandlungsroutinen (engl. listener, observer, event handler) immer dann ausgeführt, wenn ein bestimmtes Ereignis auftritt (vergleiche Rückruffunktion). Ein verwandtes Konzept sind Interrupts. Ereignisse eignen sich besonders gut zur Implementierung von grafischen Benutzeroberflächen, wobei hier die Ereignisse meist Aktionen des Benutzers sind, wie zum Beispiel das Drücken einer Taste oder das Anklicken einer Schaltfläche. 3. Inwiefern hängen AWT und Swing zusammen? Swing gehört zu den Java Foundation Classes (JFC), die eine Sammlung von Bibliotheken zur Programmierung von grafischen Benutzerschnittstellen bereitstellen. Zu diesen Bibliotheken gehören Java2D, das Accessibility-API, das Drag & Drop-API und das Abstract Window Toolkit (AWT). Swing baut auf dem älteren AWT auf und ist mit den anderen APIs verwoben. Handout PRG2_SW4_OOP 4. Gehen Sie nochmals die Kontrollfragen A und B durch: 4.1. Benennen Sie je 2 elementare GUIKomponenten, Container und LayoutManager. Elementare GUI-Komponenten: Button, TextField, Label, Container: Frame, Panel LayoutManager: BorderLayout, FlowLayout, GridLayout, Null-Layout, 4.2. Wozu dient ein Panel? Panel ist die einfachste Container Klasse. Eine Anwendung kann Panels verwenden, um andere Komponenten (und/oder Container) zu verschachteln. http://java.sun.com/j2se/1.4.2/docs/api/java/awt/panel.html Seite 1 von 6

4.3. Illustrieren Sie, wie ein Frame seine GUI-Komponenten anordnet. Die Anordnung der GUI-Komponenten in einem Frame ist abhängig vom zugewiesenen LayoutManager. 4.4. GUI-Komponenten besitzen unter anderem die Methoden paint() und repaint(). Wer ruft diese auf? Wann? Die Methode paint() wird vom Betriebssystem aufgerufen, sobald z.b. die Grösse des Fensters geändert wird. Die Methode repaint() kann innerhalb der Java Anwendung aufgerufen werden und erzwingt indirekt den Aufruf der paint() Methode. 4.5. paint() besitzt einen formalen Parameter Graphics g. Was repräsentiert g? Zählen Sie 3 Methoden auf, welche man für g aufrufen kann. Graphics ist eine abstrakte Basisklasse für alle Grafikanwendungen. Graphics stellt grundlegende Zeichenfunktionen zur Verfügung wie z.b. drawline( ) drawoval( ) drawrect( ) drawstring( ) filloval( ) fillrect( ) Graphics speichert auch Status Informationen für die gezeichneten Objekte: den Component, auf welchem die Zeichenanwendung statt finden soll die gegenwärtige Farbe die gegenwärtige Schriftart http://java.sun.com/j2se/1.4.2/docs/api/java/awt/graphics.html 4.6. Wozu dient die Methode add() in den Beispielen 1 und 2? Da die Klasse SwitchGUI die Klasse Frame erweitert, wird die Methode add( ) von der Klasse Frame geerbt. Mit dieser Methode werden Komponenten dem Container (Frame) hinzugefügt. 4.7. Zeichnen Sie das Klassendiagramm zum Beispiel 1 auf. Seite 2 von 6

5. Implementieren Sie das Beispiel 1 (SwitchGUI). Erweitern Sie das GUI so, dass man auch über einen Button "Close" an der Position: BorderLayout.EAST die Anwendung beenden kann. import java.awt.*; import java.awt.event.*; public class SwitchGUI extends Frame implements ActionListener // GUI Elemente erzeugen (Zugriffsmodifizierer ist je "Package"!) Label state = new Label("The Switch is off."); Button on = new Button("On"); Button off = new Button("Off"); Button close = new Button("Close"); public SwitchGUI() // Frame initialisieren settitle("switch"); setsize(150, 150); setresizable(); // LayoutManager setzen setlayout(new BorderLayout()); // ActionListener des Frames für close Button setzen close.addactionlistener(this); // GUI zusammensetzen add(on, BorderLayout.NORTH); add(state, BorderLayout.CENTER); add(off, BorderLayout.SOUTH); add(close, BorderLayout.EAST); // Frame sichtbar machen setvisible(); public void windowiconified(windowevent e) public void windowopened(windowevent e) public void windowclosed(windowevent e) public void windowdeiconified(windowevent e) public void windowactivated(windowevent e) public void windowdeactivated(windowevent e) public void actionperformed(actionevent e) System.exit(0); Seite 3 von 6

6. Implementieren Sie in Anlehnung an das Beispiel 2 (LineGUI) eine neue Anwendung CircleGUI. Über eine Scrollbar lässt sich der Radius eines Kreises vorgeben, welcher entsprechend im Frame gezeichnet wird. import java.awt.*; import java.awt.event.*; public class CircleGUI extends Frame implements ActionListener, WindowListener, AdjustmentListener // GUI Elemente erzeugen private int diameter; private Scrollbar slider; //(orientation, value, size of the bubble, minimum, maximum) public CircleGUI() // Frame initialisieren settitle("circlegui"); setsize(200, 200); setresizable(); // Scrollbar initialisieren slider = new Scrollbar(Scrollbar.HORIZONTAL, 0, 1, 0, 100); slider.addadjustmentlistener(this); // LayoutManager setzen setlayout(new FlowLayout()); // GUI zusammensetzen add(slider); // Implementiert WindowListener addwindowlistener(this); // Frame sichtbar machen setvisible(); public CircleGUI(int diameter) this(); setdiameter(diameter); public void setdiameter(int diameter) this.diameter = diameter; repaint(); // Direkt in das Frame zeichnen // Methode paint() von Frame wird überschrieben Seite 4 von 6

public void paint(graphics g) super.paint(g); // paint() der Oberklasse aufrufen this.diameter = slider.getvalue(); g.filloval(100-(diameter/2), 120-(diameter/2), diameter, diameter); // WindowListener public void windowclosing(windowevent e) System.exit(0); // ActionListener public void windowiconified(windowevent e) public void windowopened(windowevent e) public void windowclosed(windowevent e) public void windowdeiconified(windowevent e) public void windowactivated(windowevent e) public void windowdeactivated(windowevent e) public void actionperformed(actionevent e) // AdjustmentListener public void adjustmentvaluechanged(adjustmentevent e) setdiameter(e.getvalue()); http://java.sun.com/j2se/1.4.2/docs/api/java/awt/scrollbar.html http://java.sun.com/j2se/1.4.2/docs/api/java/awt/graphics.html http://www.mpi-inf.mpg.de/departments/d5/teaching/ss05/is05/java/gotojava2.2/html/k100211.html Handout PRG2_SW4_DAT 7. Gehen Sie nochmals die Kontrollfragen A, B und C durch. 8. Implementieren Sie die Klasse Balloon gemäss Handout. Zusätzlich soll ein Ballon aber das Attribut Color color (vgl. java.awt.color) besitzen. Zwei Ballone sind genau dann gleich, wenn Sie in der Aufschrift (text) und in der Farbe (color) übereinstimmen. Passen Sie equals() entsprechend an. Testen Sie equals() mit Hilfe der Methode main() oder mit JUnit. 9. Welche Methode müssen Sie nun auch noch anpassen? import java.util.set; import java.util.hashset; import java.awt.color; public class Balloon private String text; private int size; private Color color; public Balloon(String t, Color c) text = t; color = c; size = 0; public void blowup() size = size + 5; public void deflate() size = 0; Seite 5 von 6

public boolean equals(object other) // 1. Test auf Identität if (this == other) return ; // 2. Test auf null if (other == null) return ; // 3. Test auf Vergleichbarkeit if (other.getclass()!= this.getclass()) return ; )))) // 4. Vergleich relevanter Felder if ((!text.equals(((balloon)other).text) (!color.equals(((balloon)other).color return ; return ; public static void main(string[] args) Balloon b1 = new Balloon("Hochschule Luzern", Color.BLACK); Balloon b2 = new Balloon("Hochschule Luzern", new Color(0,0,0)); Balloon b3 = new Balloon("Hochschule Luzern", Color.WHITE); Balloon b4 = new Balloon("Modul Programmieren 2", Color.BLACK); b2.blowup(); b3.blowup(); System.out.println(b1.equals(b1)); System.out.println(b1.equals(b2)); System.out.println(b1.equals(b3)); System.out.println(b1.equals(b4)); System.out.println(b2.equals(b2)); System.out.println(b2.equals(b3)); System.out.println(b2.equals(b4)); System.out.println(b3.equals(b3)); System.out.println(b3.equals(b4)); System.out.println(b4.equals(b4)); Vergleichsbefehl Vergleich von "text": Vergleich von "text" und "color": System.out.println(b1.equals(b1)); System.out.println(b1.equals(b2)); System.out.println(b1.equals(b3)); System.out.println(b1.equals(b4)); System.out.println(b2.equals(b2)); System.out.println(b2.equals(b3)); System.out.println(b2.equals(b4)); System.out.println(b3.equals(b3)); System.out.println(b3.equals(b4)); System.out.println(b4.equals(b4)); Seite 6 von 6