• Keine Ergebnisse gefunden

Softwaretechnik 2015/2016

N/A
N/A
Protected

Academic year: 2021

Aktie "Softwaretechnik 2015/2016"

Copied!
15
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Softwaretechnik 2015/2016

HAUPT-/ BACHELOR- SEMINAR ADAPTIVE SYSTEME

PST | PROF. DR. WIRSING 14. JUNI 2009

VORNAME NAME

PST Lehrstuhl

Prof. Dr. Matthias Hölzl Joschka Rinke

(2)

Übung 6:

19.11.2015

Fragen

Klausurtermin: 10.02.2016 12-14 Uhr

Besprechung Blatt05

AGENDA

(3)

3

Klassendiagramm Java-Implementierung:

Klassen: public class…

Interface: public interface…

Attribute: übernehmen und Sichtbarkeiten beachten

Operationen: als Methoden zu Klasse/Interface hinzufügen

Vererbung: Deklaration mit „extends“ und

Überschreibungen beachten (Konstruktor, abstrakte Methoden)

Interface Implementierung: Deklaration mit „implements“ und Methoden implementieren

Assoziationen: Multiplizitäten beachten

Aufgabe 1 – UML & Java

(4)

Aufgabe 1 – UML & Java

class Haus {private Garten garten;}

class Haus {private Tuer tuer = new Tuer();}

class Haus {private Set<Fenster> fenster = new HashSet<Fenster>();}

(5)

5

Modellierungsmöglichkeiten um ähnliches Verhalten/ähnliche Klassen leicht im System hinzufügen zu können:

Interfaces (nur gemeinsame Methodensignaturen)

Abstrakte Klassen (mindestens eine abstrakte Methode) Interfaces als „Spezialfall“ von abstrakten Klassen

Vererbung (Unterklasse „erbt“ alle Methoden/Attribute der Oberklasse)

Aufgabe 2 – Template Operation

(6)

Das System wird so umgebaut, dass die Klasse Vorstellung…

…als Interface implementiert wird.

…als abstrakte Klasse implementiert wird.

…nicht verändert wird und alle anderen Vorstellungsarten von ihr erben.

…entfernt wird und durch entsprechende unterschiedliche Vorstellungsarten ersetzt wird.

Aufgabe 2 – Template Operation

(7)

7

Vorteile der Verwendung von abstrakten Klassen sind?

Weniger Klassen im System und damit mehr Übersichtlichkeit

Vermeidung von redundantem Code

Mehr Struktur indem ähnliche Klassen als Unterklassen einer abstrakten Klasse implementiert werden

Vermeidung der Verwendung von Interfaces

Aufgabe 2 – Template Operation

(8)

Vorteile durch Verwendung von „Template Method Pattern“?

Unterklassen können ähnliche Methoden entsprechend unterschiedlich implementieren

Vermeidung von doppeltem und somit redundantem Code

Kontrolle darüber, was verändert wird, nämlich am besten nur genau die abstrakten Methoden der (abstrakten)Oberklasse

Aufgabe 2 – Template Operation

(9)

9

Hat ein Attribut einer Klasse die Sichtbarkeit protected, so ist es…

…nur in allen Subklassen der Klasse sichtbar.

…überall sichtbar.

…nur im gleichen Package sichtbar.

…nur im gleichen Package und in allen Subklassen sichtbar

…nur innerhalb der Klasse sichtbar

(10)

Welche Sichtbarkeiten gibt es?

public (+): überall sichtbar

private (-): nur in der Klasse sichtbar

protected (#): nur im gleichen package und in allen Subklassen sichtbar

default (~): nur im gleichen package sichtbar

Welche Attribute und Operationen sind wo sichtbar?

public: reservieren(…), oeffnen(), schliessen()

private: name, anzahlPlaetze, nummer, reihe, alter protected: openAir

Default (package): -

Aufgabe 2 – Template Operation

(11)

11

Attribute hinzufügen:

Welche Sichtbarkeit ist für Attribute in einer abstrakten Klasse (meist) sinnvoll?

protected, da dann die Attribute auch in den Subklassen sichtbar sind Also:

protected String datum Veranstaltung

protected String uhrzeit Veranstaltung

private boolean beamerOn Kinoveranstaltung

Aufgabe 2 – Template Operation

(12)

Operationen hinzufügen:

In welcher Klasse sind welche Operationen sinnvoll?

starten: Veranstaltung

beenden: Veranstaltung

zeigeWerbung: Kinoveranstaltung

zeigeFilm: Kinoveranstaltung

setBeamer: Kinoveranstaltung

getOpenAir: Veranstaltung

Aufgabe 2 – Template Operation

(13)

13

Wie wird die Klasse Theatervorstellung am besten hinzugefügt?

Theatervorstellung realisiert ebenfalls Vorstellung!

Sinnvolle Attribute:

- vorhang : boolean Sinnvolle Operationen:

+ vorhangOeffnen() + vorhangSchliessen()

Aufgabe 2 – Template Operation

(14)

Aufgabe 2 – Template Operation

(15)

15

Aufgabe 2 – Template Operation

Referenzen

ÄHNLICHE DOKUMENTE

dass Component nur die Methoden (dennoch sehr viele) enthält, die für alle Componenten sinnvoll sind...

• In Factories wird die Factory-Method meist als statisch angegeben, das ist aber nicht mehr möglich, wenn sie wie im Factory-Method Pattern als abstrakte

Kurzbeschreibung: Ein Content Manager (CM) entfernt Content aus der Mediathek, so dass alle externen Nutzer keinen Zugriff mehr auf den Content haben. Vorbedingung: Die

• Eine Klasse, die von mehreren Klassen erbt kann gleichnamige Attribute besitzen wodurch nicht immer eindeutig ist,.. welches Attribut wann

• Fake Object (drivers): enthalten funktionierende Implementierung, die aber so abgespeckt ist, dass sie im eigentlichen Programm nicht verwendet werden. Aufgabe 3

• Für eine abstrakte Klasse können offenbar keine Objekte angelegt werden :-). • Mit abstrakten können wir Unterklassen mit verschiedenen Implementierungen der

 Wenn eine Unterklasse einer abstrakten Klasse nicht alle abstrakten Methoden implementiert, dann ist die Unterklasse selber

Diese Informationen sind notwendig, da die Ergebnisse nur dann fair verglichen werden können, wenn sie unter Berücksichtigung verschiedener Kriterien (z. Zusammensetzung der