Softwaretechnik 1 Übung 2

Ähnliche Dokumente
3 Objektorientierte Konzepte in Java

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Kap. 36. SWING: Menüs. und weitere SWING-Container. Seán Dempsey

3 Objektorientierte Konzepte in Java

11. GUI-Programmierung mit SWING Überblick

Vererbung & Schnittstellen in C#

GetName(), GetName(), GetGeschlecht() und AelterWerden().

4 Vererbung, Polymorphie

Programmieren in Java

Kapitel 6. Vererbung

Kapitel 6. Vererbung

Objektorientierte Programmierung. Kapitel 12: Interfaces

Javakurs 2013 Objektorientierung

Algorithmen und Datenstrukturen 07

Java Einführung Abstrakte Klassen und Interfaces

Kapitel 6. Vererbung

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.

Java für Computerlinguisten

Große Übung Praktische Informatik 1

Software Engineering Klassendiagramme Einführung

Algorithmen und Datenstrukturen

1 Polymorphie (Vielgestaltigkeit)

A(T1) A(T2) A(T1) A(T2)

Applet Firewall und Freigabe der Objekte

UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme

Auszug aus JAX-WS Folien

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0

Tutorial04: Swing: Erstellen eines JFrames mit einem JSplitPane

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

Objektorientierte Programmierung

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern

Der EMF-generierte Code. 7. November 2012

Software-Engineering Software-Management

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003

Softwaretechnik. Prof. Tomas Bures, PhD., Dipl. Inf. Lenz Belzner, Dipl. Inf. Christian Kroiß

Software Engineering II

Java-Schulung Grundlagen

Selbststudium OOP4 Auftrag

Java Beans. von Raoul Schneider

WebService in Java SE und EE

Objektorientierte Programmierung

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

PIWIN 1 Übung Blatt 5

Java Schulung (Java 2 Java Development Kit 5 / 6)

GUI Programmierung mit JAVA Swing

Software Engineering Klassendiagramme Assoziationen

Einführung in die Programmierung für Wirtschaftsinformatik

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung

Folge 18 - Vererbung

Javakurs für Anfänger

13. Tutorium zu Programmieren

Programmentwicklung ohne BlueJ

5. Abstrakte Klassen

SimpleOOP Opensource OOP Plugin

Java I Vorlesung 11 Graphische Oberflächen mit Swing

Klausur vom 14. Juni Informatik 4

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung

Probeklausur: Programmierung WS04/05

Praktische Übung 'JUnit-Test'

Java: Vererbung. Teil 3: super()

Objektorientierte Programmierung

Java - Programmierung - Objektorientierte Programmierung 1

Klassendiagramm. (class diagram)

5.6 Vererbung. Vererbung

Objektorientierte Programmierung

Szenario 3: Service mit erweiterter Schnittstelle

Einführung in Javadoc

Grundlagen der Programmierung Prof. H. Mössenböck. 11. Objektorientierung

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Klassendefinitionen verstehen

NTB Druckdatum:

3. Konzepte der objektorientierten Programmierung

Themen. Web Service - Clients. Kommunikation zw. Web Services

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Objektorientierung: Klassen und Objekte

Projekt AGB-10 Fremdprojektanalyse

GUI Programmierung in Java

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Software-Architektur Design Patterns

Musterlösungen zur Klausur Informatik 3

Java Einführung Methoden in Klassen

Asynchrone Webservices mit Axis 1.x in Java

Neue Features in C# 2.0

Praktikum Betriebssysteme 1. Aufgabe (1)

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf

Java - Webapplikationen

XML-Frameworks in verschiedenen Programmiersprachen Proseminar Textkodierung und Auszeichnung

Programmieren in Java

Objektorientierte Programmierung. Kapitel 16: Pakete, Zugriffsschutz

Einführung in die. objektorientierte Programmierung

Transkript:

Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Softwaretechnik 1 Übung 2 25.5.2009

Aufgabe 1 Klassendiagram // do X firexoccurred(); <<interface>> XListener + xoccurred(e:xevent) * listeners 1 XListenable + x() # firexoccurred() + addxlistener(l:xlistener) + removexlistener(l:xlistener) <<uses>> Client <<uses>> MyListener XEvent - source:object + XEvent(s:Object) + getsource():object XEvent e = new XEvent(this); foreach (Listener l : listeners) { l.xoccurred(e); } Softwaretechnik 1 Übung 2 2

Aufgabe 1 Szenario Ein Objekt l der Klasse MyListener möchte exakt ein Mal darüber informiert werden, wenn in dem Objekt x vom Typ XListenable die Methode x() aufgerufen wird. Dazu meldet sich das Objekt l als Beobachter bei Objekt x an. Nach unbestimmter Zeit ruft ein Objekt der Klasse Client bei Objekt x die Methode x() auf. Daraufhin wird das Objekt l durch das Senden eines XEvents e über das Auftreten von x() informiert, greift auf die Quelle des Ereignis-Objekts e zu und meldet sich direkt im Anschluss als Beobachter von x ab. Softwaretechnik 1 Übung 2 3

Aufgabe 1 Sequenzdiagramm l:mylistener x:xlistenable :Client addxlistener(l) x() xoccurred(e) getsource() firexoccurred() create e:xevent removexlistener(l) Softwaretechnik 1 Übung 2 4

Aufgabe 2a) Welche der folgenden Modellierungen ist richtig, wenn man geeignete Multiplizitäten ergänzt? Markieren Sie die richtige Modellierung und ergänzen Sie sinnvolle Multiplizitäten. Begründen Sie ihre Entscheidung. Ohne Begründung gibt es keine Punkte. Softwaretechnik 1 Übung 2 5

Aufgabe 2a) Artikel 1 Artikel 0..*/ 1..* 1 1..* Titel Autor Titel Autor Ein Artikel hat genau einen Titel. Der Titel hat ohne Artikel keine Existenzberechtigung. Ein Artikel wird von einem oder mehreren Autoren geschrieben. Ein Autor kann an mehreren Artikeln beteiligt sein. Artikel Artikel Titel Autor Titel Autor Softwaretechnik 1 Übung 2 6

Aufgabe 2b) Geben Sie für jede Kombination der Objekt- und Klassendiagramme an, ob sie zusammen passen oder nicht. Wählen Sie zur Darstellung der Zugehörigkeit von Objektdiagramm zu Klassendiagramm eine geeignete Darstellung. Softwaretechnik 1 Übung 2 7

Aufgabe 2b) Klassendiagramm 1 OD1 a:a b:b OD2 a:a b1:b b2:b CD1 A 0..* 0..* B OD4 a1:a b1:b OD3 a1:a b1:b a2:a b2:b a2:a b2:b Softwaretechnik 1 Übung 2 8

Aufgabe 2b) Klassendiagramm 2 OD1 a:a b:b OD2 a:a b1:b b2:b CD2 A 0..* 1..* B OD4 a1:a b1:b OD3 a1:a b1:b a2:a b2:b a2:a b2:b Softwaretechnik 1 Übung 2 9

Aufgabe 2b) Klassendiagramm 3 OD1 a:a b:b OD2 a:a b1:b b2:b CD3 A 0..* 0..1 B OD4 a1:a b1:b OD3 a1:a b1:b a2:a b2:b a2:a b2:b Softwaretechnik 1 Übung 2 10

Aufgabe 2b) Klassendiagramm 4 OD1 a:a b:b OD2 a:a b1:b b2:b CD4 A 0..* B OD4 a1:a b1:b OD3 a1:a b1:b a2:a b2:b a2:a b2:b Softwaretechnik 1 Übung 2 11

Aufgabe 3 Parametervarianz in Java Welche Varianz wäre nach dem Substitutionsprinzip in Java zulässig? Welche Varianz ist in Java tatsächlich (bei vererbten Methoden) zulässig, welche nicht? Untersuchen Sie jeweils Ko- und Kontravarianz. Hinweise: mehrere Fragen in einer Aufgabe alle beantworten! Tipp: abhaken Softwaretechnik 1 Übung 2 12

Aufgabe 3 Parametervarianz in Java Tabelle aus der Vorlesung Eingabeparameter Ausgabeparameter (auch Rückgabewert und Ausnahmen) Parameter, die gleichzeitig Ein- und Ausgabeparameter sind Kontravarianz Kovarianz Invarianz Folgende Fragen sind empirisch zu beantworten: Lässt Java bei geerbten Methoden Kontravarianz der Eingabeparameter zu? Kovarianz der Eingabeparameter zu? Kontravarianz der Rückgabewerte zu? Kovarianz der Rückgabewerte zu? Softwaretechnik 1 Übung 2 13

Aufgabe 3 Parametervarianz in Java Bauen Sie eine Klasse A mit vier Methoden: Zwei Methoden (void) mit einem Eingabeparameter Zwei Methoden mit einem Rückgabewert (kein Eingabeparameter) und eine Klasse B die von A erbt und alle vier Methoden überschreibt: Versuchen Sie, den Eingabeparameter allgemeiner zu deklarieren den Eingabeparameter spezieller zu deklarieren den Rückgabewert allgemeiner zu deklarieren den Rückgabewert spezieller zu deklarieren Softwaretechnik 1 Übung 2 14

Problematik: Überschreiben oder Überladen? Wie stellt man sicher, dass die in B deklarierten Methoden die Methoden aus A überschreiben und nicht überladen? Lösungen: Abstrakte Methoden: machen Sie die vier Methoden in A abstrakt, die Klasse B aber nicht-abstrakt Markierung @Override: Indicates that a method declaration is intended to override a method declaration in a superclass. If a method is annotated with this annotation type but does not override a superclass method, compilers are required to generate an error message. (ab Java 1.5) Softwaretechnik 1 Übung 2 15

Aufgabe 3 Parametervarianz in Java class X {} class Y extends X {} class Z extends Y {} abstract class A { abstract public void a1(y y); abstract public void a2(y y); abstract public Y b1( ); abstract public Y b2( ); } class B extends A { @Override public void a1( X y ) {} @Override public void a2( Z y ) {} @Override public X b1() { return null; } @Override public Z b2() { return null; } } The method a1(x) of type B must override or implement a supertype method The method a2(z) of type B must override or implement a supertype method The return type is incompatible with A.b1() Geht! Softwaretechnik 1 Übung 2 16

Aufgabe 3 Parametervarianz in Java Antwort: Java unterstützt bei vererbten Methoden nur Kovarianz der Rückgabewerte. Softwaretechnik 1 Übung 2 17

Aufgabe 4 Anforderungen an die Anwendung: 1 Menüleiste, bestehend aus Mindestens 2 Menüs Mit Namen und mnemonischem Buchstaben Pro Menü mindestens 3 Menüeinträge Mit Namen, Icon, Tastaturkürzel und mnemonischem Buchstaben 1 Werkzeugleiste, welche die selben Funktionen wie die Menüleiste anbietet. Alle Einträge der Werkzeugleiste müssen ein Icon sowie einen Tooltip besitzen Internationalisierung der Anwendung Internationalisierung aller in der Anwendung vorkommenden Texte Unterstützte Sprachen: Mindestens Deutsch und Englisch Softwaretechnik 1 Übung 2 18

Aufgabe 4 Sie können Actions verwenden, um sicherzustellen, dass sich zusammengehörende Menü- und Werkzeugleisteneinträge identisch verhalten. Erstellen Sie dazu eine eigene Klasse, welche AbstractAction erweitert. Softwaretechnik 1 Übung 2 19

Aufgabe 4 public class ConsoleAction extends AbstractAction { public ConsoleAction(String name, String shortdescription, char mnemonic, KeyStroke accelerator, Icon smallicon, Icon largeicon) { super(name, smallicon); putvalue(short_description, shortdescription); putvalue(mnemonic_key, (int) mnemonic); putvalue(accelerator_key, accelerator); putvalue(large_icon_key, largeicon); } Autoboxing } @Override public void actionperformed(actionevent e) { System.out.println((String) getvalue(short_description)); } Softwaretechnik 1 Übung 2 20

Aufgabe 4 Verwendung einer Action: Action openaction = new ConsoleAction("Open", "Open file", 'O', KeyStroke.getKeyStroke("ctrl O"), new ImageIcon("icons/open_S.png"), new ImageIcon("icons/open_L.png")); JMenuBar menubar = new JMenuBar(); JMenu file = new JMenu("File"); file.add(openaction); menubar.add(file); JToolBar toolbar = new JToolBar(); toolbar.add(openaction); Softwaretechnik 1 Übung 2 21

Aufgabe 4 Auslagern der sprachspezifischen Texte in eine separate Properties-Datei pro Sprache. Zugriff über java.util.resourcebundle ResourceBundle resources = ResourceBundle.getBundle("resources", new Locale("de")); Nur Sprache. Es gibt noch Konstruktoren mit Land und Variante. Auch möglich: Klasse schreiben, die von ListResourceBundle erbt und sprachspezifische Texte dort ablegen. Softwaretechnik 1 Übung 2 22

Aufgabe 4 Inhalt von resources_de.properties: action.accl.file.open=ctrl O action.accl.file.save=ctrl S action.icon.file.open=/icons/open.png action.icon.file.save=/icons/save.png action.mnem.file.open=o action.mnem.file.save=s action.name.file.open=open action.name.file.save=save Tastenkürzel definieren. Das für die Klasse KeyStroke zulässige Format findet sich in der Java-Dokumentation. Pfad zu den Icon-Dateien. Mnemonische Buchstaben. Auch möglich: Unicode z.b. \u00fc oder Index des Buchstaben. Beschriftung der Menüeinträge. Die Bezeichner auf der linken Seite können Sie frei wählen. Softwaretechnik 1 Übung 2 23

Aufgabe 4 Im Java-Quelltext können Sie auf diese Eigenschaften mit den festgelegten Bezeichnern zugreifen: KeyStroke accelerator = KeyStroke.getKeyStroke(resources.getString("action.accl.file.open")); Irgendeine Klasse im JAR URL url = SomeClass.class.getResource( resources.getstring("action.icon.file.open")); Icon icon = new ImageIcon(Toolkit.getDefaultToolkit().getImage(url)); Softwaretechnik 1 Übung 2 24