Vorlesung Softwaretechnik

Übungen zu LE_23B, Teil 1

Ausgabe 2003-03-11

Lutz Prechelt

 

1.      Beim Entwurfsmuster Kompositum besteht ein Problem darin, dass auch die Blätter die Operationen implementieren, die eigentlich nur für zusammengesetzte Komponenten sinnvoll sind.

-          Modifizieren Sie das Entwurfsmuster Kompositum so,   dass dieses Problem nicht mehr auftritt.

-          Was geschieht nach Ihrer Modifikation beim dem  Versuch, auf Bestandteile eines Blattes zuzugreifen?

-          Welche Lösung halten Sie für besser? Warum?

 

 

2.      Gegeben ist die Klasse Kommunikationskanal, die die reine Übertragung von Nachrichtenpaketen übernimmt. Dieser Kommunikationskanal soll nun flexibel eine Zuschaltung von separat  implementierten Zusatzfunktionen wie Bitsicherung, Verschlüsselung und Kompression in beliebiger Verkettung zulassen.

 

  class Kommunikationskanal {

    void verbindungAufbauen(Kommunikationskanal) {...}

    void verbindungAbbauen() {...}

    void verbindungZuruecksetzen() {...}

    void sende(String s) {...}

    String empfange() {...}

  } 

 

-          Welches Entwurfsmuster setzen Sie ein?

-          Geben Sie ein Klassendiagramm an. Dazu ist eine leichte Änderung an Kommunikationskanal nötig (und erlaubt)

-          Was bedeutet diese Änderung für die Praxis, wenn nachträglich Entwurfsmuster verwendet werden sollen?

-          Lässt sich daraus eine Entwurfsregel ableiten? Diskutieren Sie diese mit zwei oder drei Kollegen.

-          Fügen Sie in das Klassendiagramm auch Konstruktoren ein.

-          Geben Sie einen Konstruktoraufruf an, der einen Kanal erzeugt, der beim Senden verschlüsselt,    dann komprimiert, dann sichert.

-          Die obige Schnittstelle von Kommunikationskanal ist an einer Stelle naiv. An welcher?
Wie kann man das reparieren?