Richard Bubel & Martin Hentschel
|
|
- Andrea Müller
- vor 6 Jahren
- Abrufe
Transkript
1 Einführung in Software Engineering Übung 9: Design Patterns Richard Bubel & Martin Hentschel 31. Januar TUD M. Hentschel 1
2 Aufgabe 9.1 (7 Punkte) Ziel: Entwurfsmuster verstehen und anwenden Beschreibung: Anwendung Registrierkasse (Cash Register) erfasst Positionen eines Kassenbelegs und berechnet den Gesamtbetrag TUD M. Hentschel 2
3 Aufgabe 9.1a (2 Punkte) Ziel: Entwurfsmuster Strategy anwenden Beschreibung: Angezeigte Positionen anhand Beschreibung filterbar Aufgabe: Anforderung mit Entwurfmuster Strategy implementieren TUD M. Hentschel 3
4 Aufgabe 9.1a (Lösungsvorschlag) Struktur VisualbParadigmbforbUMLbStandardbEditionwTUbDarmstadtv CashRegisterFrame 1updateShownReceiptwvb:bvoid <<create>> <<create>> ReceiptPrinter 1ReceiptPrinterwfilterb:bIReceiptPositionFilterv 1printReceiptwreceiptb:bReceiptvb:bString filter 1 <<Interface>> IReceiptPositionFilter 1acceptwpositionb:bReceiptPositionvb:bboolean -filterb:bstring DescriptionReceiptPositionFilter 1DescriptionReceiptPositionFilterwfilterb:bStringv 1acceptwpositionb:bReceiptPositionvb:bboolean AllReceiptFilter 1AllReceiptFilterwv 1acceptwpositionb:bReceiptPositionvb:bboolean TUD M. Hentschel 4
5 Aufgabe 9.1a (Lösungsvorschlag) Quellcode public interface IReceiptPositionFilter { public boolean accept(receiptposition position); TUD M. Hentschel 5
6 Aufgabe 9.1a (Lösungsvorschlag) Quellcode public class AllReceiptFilter implements IReceiptPositionFilter public boolean accept(receiptposition position) { return true; TUD M. Hentschel 6
7 Aufgabe 9.1a (Lösungsvorschlag) Quellcode public class DescriptionReceiptPositionFilter implements IReceiptPositionFilter { private String filter; public DescriptionReceiptPositionFilter(String filter) { this.filter = public boolean accept(receiptposition position) { if (position!= null) { String description = position.getdescription(); return description!= null && description.contains(filter); else { return false; TUD M. Hentschel 7
8 Aufgabe 9.1a (Lösungsvorschlag) Quellcode public class ReceiptPrinter { private IReceiptPositionFilter filter; public ReceiptPrinter(IReceiptPositionFilter filter) { this.filter = filter; public String printreceipt(receipt receipt) { //... for (ReceiptPosition position : positions) { if (filter == null filter.accept(position)) { //... // TUD M. Hentschel 8
9 Aufgabe 9.1a (Lösungsvorschlag) Quellcode public class CashRegisterFrame extends JFrame { protected void updateshownreceipt() { // Get filter text String filtertext = filterfield.gettext(); // Create new text to show in receipt area IReceiptPositionFilter filter = filtertext!= null &&!filtertext.isempty()? new DescriptionReceiptPositionFilter(filterText) : new AllReceiptFilter(); ReceiptPrinter printer = new ReceiptPrinter(filter); String receipttext = printer.printreceipt(receipt); // Update shown text receiptarea.settext(receipttext); TUD M. Hentschel 9
10 Aufgabe 9.1b (2,5 Punkte) Ziel: Entwurfsmuster Observer anwenden Beschreibung: Kassenbeleg in zwei Fenstern editierbar Aufgabe: Anforderung mit Entwurfmuster Observer implementieren TUD M. Hentschel 10
11 Struktur (Observable) Visual:Paradigm:for:UML:Standard:EditionbTU:DarmstadtO CashRegisterFrame jcashregisterframebtitle:::string$:receipt:::receipto jdisposebo:::void pupdateshownreceiptbo:::void receiptobserver 0 CashRegisterFramev0 jupdatebo:::observable$:arg:::objecto:::void ReceiptPosition receipt <<Interface>> Observer jupdatebo:::observable$:arg:::objecto:::void ><<y positions 0 Receipt jaddpositionbposition:::receiptpositiono:::void ><<y Observable 1changed:::boolean obs jaddobserverbo:::observero:::void jdeleteobserverbo:::observero:::void psetchangedbo:::void jnotifyobserversbarg:::objecto:::void TUD M. Hentschel 11
12 Quellcode (Observable) import java.util.linkedlist; import java.util.list; import java.util.observable; public class Receipt extends Observable { private List<ReceiptPosition> positions = new LinkedList<ReceiptPosition>(); public void addposition(receiptposition position) { if (positions.add(position)) { setchanged(); notifyobservers(position); // Resets changed flag TUD M. Hentschel 12
13 Quellcode (Observable) import java.util.observable; public class CashRegisterFrame extends JFrame { private Observer receiptobserver = new Observer() public void update(observable o, Object arg) { updateshownreceipt(); ; public CashRegisterFrame(String title, Receipt receipt) { /*... */ this.receipt.addobserver(receiptobserver); /*... public void dispose() { this.receipt.deleteobserver(receiptobserver); super.dispose(); protected void updateshownreceipt() { /*... */ TUD M. Hentschel 13
14 Struktur (Listener) Visual:Paradigm:for:UML:Standard:EditionATU:Darmstadt< CashRegisterFrame -CashRegisterFrameAtitle:::StringO:receipt:::Receipt< -disposea< pupdateshownreceipta<:::void Receipt -addpositionaposition:::receiptposition<:::void -addreceiptlisteneralistener:::ireceiptlistener<:::void -removereceiptlisteneralistener:::ireceiptlistener<:::voida< -firereceiptpositionaddedae:::receiptevent<:::void 1jj> positions ReceiptPosition <<create>> ReceiptEvent baddedposition:::receiptposition receiptlistener 0 receipt listeners -ReceiptEventAsource:::ReceiptO:addedPosition:::ReceiptPosition< -getsourcea<:::receipt -getaddedpositiona<:::receiptposition 0 1jj0 CashRegisterFrame#0 -receiptpositionaddedae:::receiptevent<:::void <<Interface>> IReceiptListener -receiptpositionaddedae:::receiptevent<:::void <<use>> <<Interface>> EventListener EventObject TUD M. Hentschel 14
15 Quellcode (Listener) import java.util.eventlistener; public interface IReceiptListener extends EventListener { public void receiptpositionadded(receiptevent e); TUD M. Hentschel 15
16 Quellcode (Listener) import java.util.eventobject; public class ReceiptEvent extends EventObject { private ReceiptPosition addedposition; public ReceiptEvent(Receipt source, ReceiptPosition addedposition) { super(source); this.addedposition = public Receipt getsource() { return (Receipt)super.getSource(); public ReceiptPosition getaddedposition() { return addedposition; TUD M. Hentschel 16
17 Quellcode (Listener) import javax.swing.event.eventlistenerlist; public class Receipt { private EventListenerList listeners = new EventListenerList(); public void addreceiptlistener(ireceiptlistener listener) { if (listener!= null) { listeners.add(ireceiptlistener.class, listener); public void removereceiptlistener(ireceiptlistener listener) { if (listener!= null) { listeners.remove(ireceiptlistener.class, listener); TUD M. Hentschel 17
18 Quellcode (Listener) import javax.swing.event.eventlistenerlist; public class Receipt { private EventListenerList listeners = new EventListenerList(); protected void firereceiptpositionadded(receiptevent e) { IReceiptListener[] toinform = listeners.getlisteners( IReceiptListener.class); for (IReceiptListener l : toinform) { l.receiptpositionadded(e); TUD M. Hentschel 18
19 Quellcode (Listener) import java.util.linkedlist; import java.util.list; public class Receipt { private List<ReceiptPosition> positions = new LinkedList<ReceiptPosition>(); public void addposition(receiptposition position) { if (positions.add(position)) { firereceiptpositionadded(new ReceiptEvent(this, position)); // TUD M. Hentschel 19
20 Quellcode (Listener) public class CashRegisterFrame extends JFrame { private IReceiptListener rcptlistener = new IReceiptListener() public void receiptpositionadded(receiptevent e) { updateshownreceipt(); ; public CashRegisterFrame(String title, Receipt receipt) { /*... */ receipt.addreceiptlistener(rcptlistener); /*... public void dispose() { receipt.removereceiptlistener(rcptlistener); super.dispose(); protected void updateshownreceipt() { /*... */ TUD M. Hentschel 20
21 Struktur (Bean) Visual:Paradigm:for:UML:Standard:Edition_TU:DarmstadtI CashRegisterFrame ycashregisterframe_title:::stringx:receipt:::receipti ydispose_i:::void pupdateshownreceipt_i:::void yprop_positions:::string < receipt Receipt receiptlistener yaddposition_position:::receiptpositioni:::void yaddpropertychangelistener_propertyname:::stringx:listener:::propertychangelisteneri:::void yremovepropertychangelistener_propertyname:::stringx:listener:::propertychangelisteneri:::void < CashRegisterFramev< ypropertychange_evt:::propertychangeeventi:::void <<Interface>> PropertyChangeListener ypropertychange_evt:::propertychangeeventi:::void 1jjN listeners <<use>> PropertyChangeEvent 1jjN ReceiptPosition ReceiptPosition < pcs < source PropertyChangeSupport <<create>> yaddpropertychangelistener_propertyname:::stringx:listener:::propertychangelisteneri:::void yremovepropertychangelistener_propertyname:::stringx:listener:::propertychangelisteneri:::void yfireindexedpropertychange_propertyname:::stringx:index:::intx:oldvalue:::objectx:newvalue:::objecti:::void yfirepropertychange_propertyname:::stringx:oldvalue:::objectx:newvalue:::objecti:::void TUD M. Hentschel 21
22 Quellcode (Bean) import java.beans.propertychangesupport; public class Receipt { public static final String PROP_POSITIONS = "positions"; private PropertyChangeSupport pcs = new PropertyChangeSupport(this); private List<ReceiptPosition> positions = new LinkedList<ReceiptPosition>(); public void addposition(receiptposition position) { int index = positions.size(); if (positions.add(position)) { pcs.fireindexedpropertychange(prop_positions, index, null, position); TUD M. Hentschel 22
23 Quellcode (Bean) import java.beans.propertychangelistener; public class Receipt { public void addpropertychangelistener(string propertyname, PropertyChangeListener listener) { if (listener!= null) { pcs.addpropertychangelistener(propertyname, listener); public void removepropertychangelistener(string propertyname, PropertyChangeListener listener) { if (listener!= null) { pcs.removepropertychangelistener(propertyname, listener); TUD M. Hentschel 23
24 Quellcode (Bean) import java.beans.propertychangelistener; public class Receipt { public void addpropertychangelistener(string propertyname, PropertyChangeListener listener) { if (listener!= null) { pcs.addpropertychangelistener(propertyname, listener); public void removepropertychangelistener(string propertyname, PropertyChangeListener listener) { if (listener!= null) { pcs.removepropertychangelistener(propertyname, listener); TUD M. Hentschel 24
25 Quellcode (Bean) import java.beans.propertychangeevent; import java.beans.propertychangelistener; public class CashRegisterFrame extends JFrame { private PropertyChangeListener receiptlistener = new PropertyChangeListener() public void propertychange(propertychangeevent evt){ updateshownreceipt(); ; public CashRegisterFrame(String title, Receipt receipt) { /*... */ receipt.addpropertychangelistener(receipt.prop_positions, receiptlistener); /*... */ TUD M. Hentschel 25
26 Quellcode (Bean) import java.beans.propertychangeevent; import java.beans.propertychangelistener; public class CashRegisterFrame extends JFrame public void dispose() { receipt.removepropertychangelistener(receipt.prop_positions, receiptlistener); super.dispose(); protected void updateshownreceipt() { /*... */ TUD M. Hentschel 26
27 Aufgabe 9.2 (2 Punkte) Ziel: Angewendete Entwurfsmuster erkennen Beschreibung: Ausschnitt der Java 6 API Spezifikation einer Klasse gegeben Aufgabe: Entwurfsmuster des Ausschnitts nennen Elemente der Java API den Bestandteilen des Entwurfmusters zuordnen TUD M. Hentschel 27
28 Aufgabe 9.2a (Lösungsvorschlag) Class javax.swing.abstractlistmodel TUD M. Hentschel 28
29 Aufgabe 9.2a (Lösungsvorschlag) Class javax.swing.abstractlistmodel Observer Design Pattern Subjekt AbstractListModel Beobachter verwalten addlistdatalistener(listdatalistener), getlistdatalisteners(), removelistdatalistener(listdatalistener) Beobachter informieren firecontentschanged(... ), fireintervaladded(... ), fireintervalremoved(... ) Konkretes Subjekt BasicDirectoryModel, DefaultComboBoxModel,... Abstrakter Beobachter ListDataListener Konkrete Beobachter JComboBox TUD M. Hentschel 29
30 Aufgabe 9.2b (Lösungsvorschlag) Class javax.swing.jfilechooser extends javax.swing.jcomponent TUD M. Hentschel 30
31 Aufgabe 9.2b (Lösungsvorschlag) Class javax.swing.jfilechooser extends javax.swing.jcomponent Strategy Design Pattern Kontext Abstrakte Strategie Strategie-Methode Konkrete Strategien JFileChooser FileFilter accept(file) BasicFileChooserUI.AcceptAllFileFilter, FileNameExtensionFilter TUD M. Hentschel 31
Hintergrund und Motivation
Zentrale Aspekte der Komponentenorientierung 2. JavaBeans als Komponenten Java-GUI-Elemente sind Beans Typischer Aufbau von Beans Bound properties Constrained Properties Speichern Literatur: Sun, JavaBeans
MehrObserver-Pattern (Java vs..net vs. Qt) Seminar Software-Entwurf Tim Rademacher
Observer-Pattern (Java vs..net vs. Qt) Seminar Software-Entwurf Tim Rademacher Gliederung Einführung in Design Patterns Das Observer-Pattern Ein Beispiel Das Observer-Pattern in Java Das Interface Observer
MehrProgrammieren 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.
MehrObserver-Beispiel. Observer-Beispiel
Observer-Beispiel Aufgabenstellung Aus einer Liste möglicher Farben soll jeweils eine Farbe auswählbar sein. Bei jeder Auswahländerung wird in einem Fenster die aktuelle Farbe dargestellt und in einem
MehrProgrammieren 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
Mehr16. Dezember 2004 Dr. M. Schneider, P. Ziewer
Technische Universität München WS 2004/2005 Fakultät für Informatik Lösungsvorschläge zu Blatt 8 A. Berlea, M. Petter, 16. Dezember 2004 Dr. M. Schneider, P. Ziewer Übungen zu Einführung in die Informatik
MehrJava Einführung Abstrakte Klassen und Interfaces
Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer
MehrWiederholung: Objektorientierte Oberflächen-Programmierung mit Java und Swing
Wiederholung: Objektorientierte Oberflächen-Programmierung mit Java und Swing Heinrich Hußmann Ludwig-Maximilians-Universität München Sommersemester 2003 Ludwig-Maximilians-Universität München Prof. Hußmann
Mehr// Zeigt den insgesamt einbezahlten Betrag auf der Bank. // Muss 1600 GE sein. System.out.println("Current Bank balance: " + b.
/ Testtreiberklasse, welche das Bankensystem testet. Es werden neue Bankkonten angelegt und Geld deponiert, abgehoben und transferiert. public class Main { / Main Methode fuehrt bestimmte Testfaelle aus.
Mehrpublic class SternchenRechteckGefuellt {
Java programmieren: Musterlösungen Konsolen-Aufgaben Aufgabe 1: Gefüllte Rechtecke zeichnen Schreiben Sie ein Programm, das ein durch Sternchen gefülltes Rechteck zeichnet. Der Benutzer soll Breite und
MehrEinstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
MehrJava-Schulung Grundlagen
Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings
MehrAbschließendes Übungsblatt
Abschließendes Übungsblatt Dieses Übungsblatt wurde von Nora Wester im Rahmen des Praktikums in der Lehre erstellt. Die Übungsaufgaben orientieren sich an den existierenden Übungsblättern und wurden ohne
MehrJava - Programmierung - Objektorientierte Programmierung 1
Java - Programmierung - Objektorientierte Programmierung 1 // Klassen und Objekte public class KlaObj public static void main(string args []) Klasse1 a; a = new Klasse1("heute", 47); Klasse1 b = new Klasse1
MehrJavakurs 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
MehrAbteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2
Inhalt 1. Drag and Drop (DnD) 1. Transfer-Mechanismus 2. Transfer-Support 3. Cursor-Symbole 4. Einführendes Beispiel 5. Komponenten DnD-fähig machen 6. Standard DnD-Verhalten ändern Folie 1 Lernziele Sie
MehrJOGGA Der Jogging-Companion
JOGGA Der Jogging-Companion GLIEDERUNG: (1) Idee (2) Funktionen (3) Codebeispiele IDEE: Jeder Jogger kennt das Problem: Man rafft sich auf um eine Runde zu laufen, schwitzt während dessen ohne Ende und
MehrHandbuch für die Erweiterbarkeit
Handbuch für die Erweiterbarkeit Inhalt Pakete für die Erweiterbarkeit... 2 Actions... 2 Items... 2 Itemset... 2 Die UseCaseNewAction... 3 Eigene Shapes... 4 Der Shape Container... 5 User Objects... 6
MehrSommersemester 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
MehrSoftwaretechnologie - Wintersemester 2012/2013 - Dr. Günter Kniesel
Übungen zur Vorlesung Softwaretechnologie - Wintersemester 2012/2013 - Dr. Günter Kniesel Übungsblatt 10 - Lösungshilfe Aufgabe 1. CRC-Karten (7 Punkte) Es geht um die Modellierung der folgenden Bibliotheks-Anwendung:
MehrProbe-Klausur Software Engineering Fachbereich BW, für WINFO
Probe-Klausur Software Engineering Fachbereich BW, für WINFO Dipl.-Ing. Klaus Knopper 17.04.2007 Hinweis: Bitte schreiben Sie auf das Deckblatt und auf jede Seite Ihren Namen und Ihre Matrikelnummer, bevor
MehrProgrammieren in Java
Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang
MehrPraktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel
Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel FB Physikalische Technik Musterlösungen Teil 4 Aufgabe 1 package teil4; import javax.swing.*; public class Ei { int haltung, ident; String
MehrInstitut für Informatik
Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2009 Praktikum: Grundlagen der Programmierung Aufgabenblatt 11 Prof. R. Westermann, R. Fraedrich,
MehrJava Beans. Übersicht, Eigenschaftstypen, Heutiger Stand.
Java Beans Übersicht, Eigenschaftstypen, Heutiger Stand. 1 Definition Eine Bean ist eine wieder verwendbare Softwarekomponente basierend auf der JavaBeans-Spezifikation von Sun, die sich visuell mit einem
Mehr11. 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
MehrProgrammieren 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
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)
MehrDHBW 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;
MehrJava Beans. http://java.sun.com/beans/
Java Beans http://java.sun.com/beans/ Software Komponenten Eine Software Komponente ist ein eigenständiges, flexibles und einfach wieder verwendbares Stück Software. In Java: + Plattformunabhängigkeit
MehrKapitel 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
Mehrclass BahnTest2 { public static void main(string[] args) { Zug myice = new Zug("ICE Duisburg", 1200, 0, 50); BahnCardFahrer kunde2 = new BahnCardFahre
class BahnTest2 { public static void main(string[] args) { Zug myice = new Zug("ICE Duisburg", 1200, 0, 50); BahnCardFahrer kunde2 = new BahnCardFahrer(args[0], myice, (new Integer(args[1])).intValue());
MehrII.4.1 Unterklassen und Vererbung - 1 -
1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.4.1 Unterklassen und Vererbung
Mehr5. Übung zu Software Engineering
5. Übung zu Software Engineering WS 2009/2010 Henning Heitkötter Desktop-Anwendung AUFGABE 13 1 Schichtenarchitektur Strukturierung komplexer Anwendungen Anforderungen: Flexibilität, Robustheit, Wartbarkeit,
MehrInfo B VL 8: Abstrakte Klassen & Interfaces
Info B VL 8: Abstrakte Klassen & Interfaces Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 8: Abstrakte
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 5 Lösungsvorschlag Objektorientierte Programmierung 22. 05. 2006 Lösung 9 (SMS-Eingabe am
MehrAK-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
MehrGUI 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
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin
MehrU08 Entwurfsmuster (II)
U08 Entwurfsmuster (II) Inhalt der Übung Diskussion und Implementierung von Entwurfsmustern Übungsaufgaben Aufgabe 1 (Queue) Gegeben ist das folgende Analysemodell einer Warteschlange (Queue): Eine Warteschlange
MehrTeil 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
Mehr1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)
Praktische Informatik (Software) Vorlesung Softwareentwicklung 1 Prof. Dr. A. Ferscha Hauptklausur am 01. 02. 2001 Zuname Vorname Matr. Nr. Stud. Kennz. Sitzplatz HS / / / Punkte Note korr. Fügen Sie fehlende
MehrUML / Fujaba. Generierung von Java-Quellcode aus UML-Diagrammen. Marcel Friedrich
UML / Fujaba Generierung von Java-Quellcode aus UML-Diagrammen Marcel Friedrich Agenda Einleitung Struktur Verhalten Klassendiagramme Storydiagramme Statecharts Action methods 2 Thema Codegenerierung mit
MehrMusterlösung Stand: 5. Februar 2009
Fakultät IV Elektrotechnik/Informatik Probeklausur Einführung in die Informatik I Hinweis: Diese Probeklausur ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der Teilleistung TL 2 (Programmiertest)
MehrTutorial04: Swing: Erstellen eines JFrames mit einem JSplitPane
Hochschule Harz Programmierung2 Tutorial 04: FB Automatisierung und Informatik Dipl.-Inf., Dipl.-Ing. (FH) M. Wilhelm Programmierung 2 für MI / WI Thema: Swing, JSplitPane und I/O Versuchsziele Kenntnisse
MehrLösungsvorschläge. zu den Aufgaben im Kapitel 4
Lösungsvorschläge zu den Aufgaben im Kapitel 4 Aufgabe 4.1: Der KNP-Algorithmus kann verbessert werden, wenn in der Funktion nexttabelle die Zuweisung next[tabindex] = ruecksprung; auf die etwas differenziertere
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
MehrDer EMF-generierte Code. 7. November 2012
Der EMF-generierte Code 7. November 2012 Überblick Wie sieht der aus einem EMF-Modell generierte Code aus? Wie ist die Beziehung zwischen Modell und Code? Wie kann generierter Code durch handgeschriebenen
MehrListe 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
Mehr7 Angewandte Objektorientierung
Eines der traurigsten Dinge im Leben ist, dass ein Mensch viele gute Taten tun muss, um zu beweisen, dass er tüchtig ist, aber nur einen Fehler zu begehen braucht, um zu beweisen, dass er nichts taugt.
MehrDaniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers
Design Patterns Daniel Warneke warneke@upb.de 08.05.2006 Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns 1/23 Übersicht Einleitung / Motivation Design Patterns Beispiele Rolle des
MehrSchnittstellen, Stack und Queue
Schnittstellen, Stack und Queue Schnittstelle Stack Realisierungen des Stacks Anwendungen von Stacks Schnittstelle Queue Realisierungen der Queue Anwendungen von Queues Hinweise zum Üben Anmerkung: In
MehrDas Model View Controller (MVC) Konzept
Das Model View Controller (MVC) Konzept Ziel: Erhöhung der Flexibilität und Reduktion der Komplexität von GUI-Programmen durch Standard- Struktur (MVC-Pattern). Geht zurück auf Smalltalk. View 1 View 2
MehrProgrammieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
MehrProbeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
MehrAnalyse und Modellierung von Informationssystemen
Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2014/15 1 / 24 Singleton-Muster 2 / 24 Das Singleton Im einfachsten Fall wird ein Singleton über
MehrAufgabenblatt Nr. 5 Generizität und TicTacToe
Aufgabenblatt Nr. 5 Generizität und TicTacToe 1 Generische Sortier-Methode 1.1 Aufgabe: Entwickeln einer generischen Sortiermethode für Objekte mit der Schnittstelle Comparable Ihnen ist aus der Vorlesung
MehrJava Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff
Java Reflection Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff Java Reflection Die Java Reflection API liefert per Introspection Informationen über Klassen => Meta-Daten.
MehrII.3.1 Rekursive Algorithmen - 1 -
1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.3.1 Rekursive Algorithmen -
MehrFH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Interfaces
10 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Interfaces Aber: Mehrfachvererbung von Klassen ist in Java nicht erlaubt. Ausweg Definition eines Interfaces, z.b.:
Mehrjcontentpane.setlayout(new BorderLayout()); // unten JPanel unten = new JPanel(); unten.setlayout( new BoxLayout(unten, BoxLayout.
04.07.2011 Lösungsvorschlag 1. Aufgabe (12 + 12 Punkte): Screendesign : im Center: Label mit Bild 3P: Panel im West mit BoxLayout und TextField, Scrollpane und TextArea 4P: Panel im East mit FlowLayout
MehrStapel (Stack, Keller)
Stapel (Stack, Keller) Eine wichtige Datenstruktur ist der Stapel. Das Prinzip, dass das zuletzt eingefügte Element als erstes wieder entfernt werden muss, bezeichnet man als LIFO-Prinzip (last-in, first-out).
MehrProbeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und
MehrTest-Driven Design: Ein einfaches Beispiel
Test-Driven Design: Ein einfaches Beispiel Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 2 Ziele Veranschaulichung der Technik des Test-Driven Design am Beispiel eines Programms
MehrJavaBeans. Marc Monecke monecke@informatik.uni-siegen.de
JavaBeans Übersicht Marc Monecke monecke@informatik.uni-siegen.de Praktische Informatik Fachbereich Elektrotechnik und Informatik Universität Siegen, D-57068 Siegen 3. Juni 2003 Inhaltsverzeichnis 1 JavaBeans-Grundlagen
MehrArten von Klassen-Beziehungen
Arten von Klassen-Beziehungen Untertypbeziehung: Ersetzbarkeit Vererbung von Code aus Oberklasse irrelevant Vererbungsbeziehung: Klasse entsteht durch Abänderung anderer Klassen Ersetzbarkeit irrelevant
MehrAllgemeine Hinweise:
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 12/13 Einführung in die Informatik I Wiederholungsklausur Prof. Dr. Helmut Seidl, A. Lehmann,
MehrSE Besprechung. Übung 4 Architektur, Modulentwurf
SE Besprechung Übung 4 Architektur, Modulentwurf SE, 22.11.11 Mengia Zollinger 2.1 Architekturstile (6 Punkte) 2.1.A Ausgabe eines Monatsabos an Angestellte Lösung: Pipe-and-Filter Beispiel Lösung [Benz,
MehrBenutzerauthentifizierung und Zugriffsschutz mit JAAS
Benutzerauthentifizierung und Zugriffsschutz mit JAAS Werner Eberling werner.eberling@mathema.de www.mathema.de Übersicht Altbekanntes kurz erwähnt Java Security Des Kaisers neue Kleider JAAS Zu Ihren
MehrGroße Übung Praktische Informatik 1
Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,
MehrProgrammieren 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
Mehr1 Polymorphie (Vielgestaltigkeit)
1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen
MehrBeispiellösung der Klausur zu Objektorientierte Programmierung mit Java 09. Juli 2004 (SS 2004)
Beispiellösung der Klausur zu Objektorientierte Programmierung mit Java 09. Juli 2004 (SS 2004) A Bearbeitungszeit: 120 Minuten NICHT MIT BLEISTIFT SCHREIBEN! Name: Vorname: Matrikelnummer: Nr Max Bewertung
MehrJavaBeans Properties und Events
JavaBeans Properties und Events J. Heinzelreiter WS 2004/05 JavaBeans - Literatur Bücher L. Vanhelsuwé: Mastering JavaBeans R. Leinecker et al: JavaBeans Unleashed Bruce Eckel: Thinking in Java Tutorial
MehrJAVA für Nichtinformatiker - Probeklausur -
JAVA für Nichtinformatiker - Probeklausur - Die folgenden Aufgaben sollten in 150 Minuten bearbeitet werden. Aufgabe 1: Erläutere kurz die Bedeutung der folgenden Java-Schlüsselwörter und gib Sie jeweils
MehrIch liebe Java && Ich liebe C# Rolf Borst
Ich liebe Java && Ich liebe C# Rolf Borst Java oder C#? Einführung public class Einfuehrung { private int gesamtzahl = 0; /* Ermittelt die Anzahl der geraden und durch drei teilbaren Zahlen */ public String
MehrJava Beans von Christian Beck-Wörner. Inhalt. Was ist ein Bean Konzept von Beans Entwicklung eines Beans Eigenschaften von Beans Testumgebung: BDK
Java Beans von Christian Beck-Wörner Inhalt Was ist ein Bean Konzept von Beans Entwicklung eines Beans Eigenschaften von Beans Testumgebung: BDK Was ist ein Bean? Ein JavaBean ist eine wiederverwendbare
MehrBean-Mapping mit MapStruct
Machst Du noch Reflection oder annotierst Du schon? Bean-Mapping mit MapStruct Thomas Much thomas@muchsoft.com www.muchsoft.com 1 20 Jahre Java, 18 Jahre Beans JavaBeans JAXBEntities 2015 2006 2005 2000
MehrProf. 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
MehrDr. Monika Meiler. Inhalt
Inhalt 13 MVC-Architektur... 13-2 13.1 Das MVC-Konzept... 13-2 13.1.1 Entwurfsmuster... 13-2 13.1.2 Mechanismus der MVC-Architektur... 13-3 13.1.3 Klassen java.util.observable und java.util.observer...
MehrALP II Dynamische Datenmengen
ALP II Dynamische Datenmengen Teil III Iteratoren Iterator-Objekt O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 22. ALP2-Vorlesung, M. Esponda 2 Motivation: Iteratoren Wir haben für die Implementierung
MehrKapitel 14. Systemarchitektur
1 Kapitel 14 Ziele 2 Grundprinzipien der verstehen Schichtenarchitekturen kennenlernen Modelle und Programme mit Paketen strukturieren Eine Architektur für eine einfache Bankanwendung konstruieren Grundprinzipien
Mehr7. Architektur interaktiver Systeme
7. Architektur interaktiver Systeme 7.1 Entkopplung durch Sichten 7.2 Ereignisgesteuerter Programmablauf 7.3 Benutzungsoberflächen (Fortsetzung) Layout-Manager Definition Ein Layout-Manager ist ein Objekt,
MehrMusterlösungen zur Klausur Informatik 3
Musterlösungen zur Klausur Informatik 3 Justus-Liebig-Universität Gießen Wintersemester 2003/2004 Aufgabe 1 (6 Punkte) Man kreuze bei den folgenden Deklarationen und Definitionen jeweils an, ob sie aus
MehrDecorator Pattern. Analyse- und Design-Pattern CAS SWE FS14. Roland Müller Samuel Schärer
Decorator Pattern Analyse- und Design-Pattern CAS SWE FS14 Roland Müller Samuel Schärer Entwurfsmuster der «Gang of Four» Strukturmuster fassen Klassen und Objekte zu grösseren Strukturen zusammen Adapter
MehrGrundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung
Grundlagen der Programmierung Prof. H. Mössenböck 14. Schrittweise Verfeinerung Entwurfsmethode für Algorithmen Wie kommt man von der Aufgabenstellung zum Programm? Beispiel geg.: Text aus Wörtern ges.:
MehrMobile und Verteilte Datenbanken
Mobile und Verteilte Datenbanken Java RMI Vorlesung Wintersemester 2010/2011 groppe@ifis.uni-luebeck.de Institut für Informationssysteme Universität zu Lübeck Java Remote Method Invocation (RMI) Realisierung
Mehr1 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,
MehrWie ich lernte die API zu lieben. 19. März 2013. bernhard.groehling@sicsec.de 08142-4425 037 sic[!]sec GmbH Industriestraße 29-31 82194 Gröbenzell
Burp- Burp- Wie ich lernte die zu lieben 19. März 2013 bernhard.groehling@sicsec.de 08142-4425 037 sic[!]sec GmbH Industriestraße 29-31 82194 Gröbenzell Burp- Was erwartet uns? Das erwartet euch Theorie:
MehrJava Schulung (Java 2 Java Development Kit 5 / 6)
2. Grundlagen der Objektorientierung 2.1 Klassen, Attribute, Methoden Klassen Eine Klasse beschreibt als Bauplan Gemeinsamkeiten einer Menge von Objekten ist also ein Modell, auf dessen Basis Objekte erstellt
Mehr04 - Actions. Actions
Actions Motivation!In verschiedenen Swing-Komponenten werden ausgelöste Aktionen durch ActionListener behandelt.!häufig werden gleiche Aktionen durch verschiedene Swing-Komponenten ausgelöst. Z.B. durch
MehrSystem.out.println("TEXT");
Inhaltsübersicht - Erstes Beispiel - Datentypen - Ausdrücke und Operatoren - Schleifen / Bedinungen - Struktogramme - Grundgerüst eines Programms in JAVA - Einlesen von Daten Erstes Beispiel public class
Mehrvon Anja Austermann Drag and Drop
von Anja Austermann Drag and Drop »Drag and Drop«ist die Bezeichnung für den Datentransfer zwischen unterschiedlichen Anwendungen mit grafischer Benutzeroberfläche. Zur Zeit arbeitet Drag and Drop in Java
MehrVersuchsziele Kenntnisse in der Anwendung von: Sortieren mit Klassen Benutzung von generischen Klassen o Definition o Sortierung.
Hochschule Harz Programmierung1 Tutorial 11: FB Automatisierung und Informatik Dipl.-Inf. Dipl.-Ing. (FH) M. Wilhelm Programmierung 1 für MI / WI Thema: Sortieren und generische Klassen Versuchsziele Kenntnisse
MehrTutorium zur Vorlesung Programmieren
Tutorium zur Vorlesung Programmieren 8. Tutorium Joshua Gleitze 19. Dezember 2016 IPD Koziolek Beispiellösung Beispiellösung für das 3. Übungsblatt, inklusive Tests: joshuagleitze.de/tutorien/programmieren1617/code/beispiellösung3
Mehr1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen
1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen II.2.3 Datenabstraktion - 1 - public class Rechteck { Selektoren
MehrIn Track B generell gute Java-Kenntnisse vorausgesetzt!
Gliederung Track A (Technik, montags): A1. Eingabe- und Ausgabetechnik bei Rechnersystemen A2. Technik der digitalen Bildverarbeitung A3. Technik der digitalen Tonverarbeitung A4. Technik der digitalen
MehrTeil 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,...
MehrXML-Frameworks in verschiedenen Programmiersprachen Proseminar Textkodierung und Auszeichnung
XML-Frameworks in verschiedenen Programmiersprachen Proseminar Textkodierung und Auszeichnung Matthias Bethke bethke@linguistik.uni-erlangen.de Linguistische Informatik Universität Erlangen-Nürnberg Sommersemester
Mehr