Übungsblatt 8 - Lehrstuhl Software-Systemtechnik - BTU Cottbus
Übungsblatt 8 - Lehrstuhl Software-Systemtechnik - BTU Cottbus
Übungsblatt 8 - Lehrstuhl Software-Systemtechnik - BTU Cottbus
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
3. Dezember 2013<br />
LS <strong>Software</strong>-<strong>Systemtechnik</strong><br />
Entwicklung von <strong>Software</strong>-Systemen<br />
<strong>Übungsblatt</strong> 8<br />
Aufgabe 1<br />
(2 Punkte)<br />
Welche Unterschiede bestehen zwischen Lastenheft und Pflichtenheft? Warum werden beide benötigt? In<br />
welcher Reihenfolge werden sie durch welche Prozessschritte erstellt?<br />
Aufgabe 2<br />
(6 Punkte)<br />
Beantworten Sie folgende Fragen für <strong>Software</strong>entwicklungsphasen.<br />
1. Was ist die Produkt-Definition?<br />
2. Was sind die Ergebnisse der Produkt-Definition?<br />
3. Was ist der Produkt-Entwurf?<br />
4. Was sind die Ergebnisse des Produkt-Entwurfs?<br />
5. Was ist der Unterschied zwischen Produkt-Entwurf und <strong>Software</strong>-Entwurf?<br />
6. Sowohl in der Produkt-Definition als auch im Produkt-Entwurf werden Modelle (Beschreibungen)<br />
des Produkts erstellt. Was ist der grundlegende Unterschied zwischen diesen Modellen?<br />
Aufgabe 3<br />
(5 Punkte)<br />
Wesentliches Ergebnis des <strong>Software</strong>-Entwurfs ist eine <strong>Software</strong>-Architektur. Stellen Sie möglichst vollständig<br />
dar, welche Rolle eine SW-Architektur im SW-Entwicklungsprozess spielt.<br />
Aufgabe 4<br />
(3 Punkte)<br />
Was versteht man unter folgenden Konzepten der Objektorientierung?<br />
1. Vererbung?<br />
2. Polymorphie?<br />
3. Kapselung?<br />
Aufgabe 5<br />
(15 Punkte)<br />
Auf der nächsten Seite des <strong>Übungsblatt</strong>es ist eine kleine Fallstudie gegeben. Lesen Sie sich diese genau<br />
durch und erstellen Sie dazu passend<br />
1. ein Kontextdiagram<br />
2. eine Verfeinerung des Kontextdiagramms aus 1. (DFD 0).<br />
Nehmen Sie hierbei an, dass das zu beschreibende System alle Anfragen, Bewerbungen, Rechnungen, Studienunterlagen<br />
sowie Testate verwaltet.<br />
Aufgabe 6<br />
(4 Punkte)<br />
Erklären Sie die charakteristischen Unterschiede bei einer synchronen und eine asynchronen Operation in<br />
einem Sequenzdiagram. Modellieren Sie beide Varianzten grafisch und erklären Sie kurz den Unterschied<br />
der Notation.<br />
Seite 1 von 2
3. Dezember 2013<br />
LS <strong>Software</strong>-<strong>Systemtechnik</strong><br />
Entwicklung von <strong>Software</strong>-Systemen<br />
Fallstudie - Fernstudium<br />
Die <strong>BTU</strong> <strong>Cottbus</strong> bietet Fernkurse für Studenten an. Dabei dauert jeder Kurs 20 Wochen und wird wöchentlich<br />
im Rahmen einer digitalen Übungssitzung und eines Testats organisiert. Am Ende des Kurses wird eine<br />
beaufsichtigte Prüfung durchgeführt.<br />
Ein Sachbearbeiter aus dem Studieredensekretariat befasst sich mit diesbezüglichen Anfragen und Anträgen<br />
sowie Bewerbungen von Studenten. Verfügen potentielle Bewerber über die nötigen Qualifikationen,<br />
werden diese gebeten, ein Antragsformular auszufüllen und an das Studierendensekretariat zu senden.<br />
Nachdem der Modulverantwortliche eine Bewerbung geprüft hat, geht diese zurück an das Studierendensekretariat.<br />
Dieses legt eine Liste der angenommenen Bewerber an. Dazu werden die Daten aus dem Antragsformular<br />
verwendet. Im Anschluss wird eine Rechnung erstellt, welche den angehenden Studenten<br />
zugesendet wird. Geleistete Zahlungen werden in einer Übersicht notiert, die ausstehende Forderungen dokumentiert.<br />
Die erste Charge von Studienmaterial sowie dazu passenden Testaten wird durch die Bibliothek<br />
an Studierende verschickt, sobald diese bezahlt haben (dazu haben die verantwortlichen Bibliothekare Zugriff<br />
auf die Übersicht der ausstehenden Forderungen).<br />
Die zurückgeschickten Testate werden durch das wissenschaftliche Personal kontrolliert. Die Ergebnisse<br />
werden anschließend zusammen mit Kommentaren bis zur nächsten Woche bzw. zum nächsten Block versendet.<br />
Weiterhin wird neues Material durch die Bibliothek nur dann versendet, sofern ein Student auch die<br />
Antworten für das aktuelle Testat zurückgeschickt hat.<br />
Das <strong>Übungsblatt</strong> ist bestanden, wenn bei jeder Aufgabe mindestens 50% der Punkte erreicht wurden. Jede<br />
Lerngruppe gibt eine gemeinsame Lösung in einer PDF-Datei mit einer maximalen Dateigröße von 2 MByte<br />
bis zum 05.12.2013 um 23:59 Uhr per eMail bei Ihrem Tutor sowie bei M.Schubanz@tu-cottbus.de ab.<br />
Ausnahmen kann der Tutor auf Nachfrage zulassen. Die mündliche Kontrolle der Lösung und Rückgabe<br />
des <strong>Übungsblatt</strong>es findet in der Woche vom 09.12.2013 statt.<br />
Seite 2 von 2
3. Dezember 2013<br />
LS <strong>Software</strong>-<strong>Systemtechnik</strong><br />
Entwicklung von <strong>Software</strong>-Systemen<br />
Material 8<br />
Lastenheft<br />
Quelle: http://www.stefan-baur.de/<br />
In [ . . . ] der Definitionsphase eines IT-Projektes stellt sich immer die Frage über die Vorgehensweise, die<br />
selbstverständlich immer vom jeweiligen Auftraggeber abhängig ist. Doch kann meines Erachtens unabhängig<br />
vom Auftraggeber folgender, grober Verlauf während der Anforderungsdefinition angestrebt werden:<br />
1. Lastenheft vom Auftraggeber erhalten<br />
2. Anforderungen erheben und Lastenheft korrigieren<br />
3. Korrigiertes Lastenheft vom Kunden absegnen lassen<br />
4. Pflichtenheft gegen Bezahlung erstellen<br />
5. Anhand des Pflichtenhefts den Aufwand schätzen<br />
6. Angebot und Vertrag<br />
Lastenheft vs. Pflichtenheft<br />
1. Während im Lastenheft die Anforderungen des zu entwickelnden Produkts aus Sicht des fachunkundigen<br />
Auftraggebers beschrieben werden, spiegelt das Pflichtenheft die Anforderungen des Lastenhefts<br />
im Hinblick auf eine risikoarme Umsetzung aus Sicht des fachkundigen Auftragnehmers wider. (Als<br />
Fach ist die technologische Gesamtheit zu verstehen, mit der das Produkt entwickelt wird.)<br />
2. Zur Erstellung eines Heftes scheint allerdings folgender Unterschied weitaus nützlicher zu sein: Das<br />
Lastenheft stellt die Problemstellung des Auftraggebers dar und das Pflichtenheft den Lösungsvorschlag<br />
des Auftragnehmers.<br />
Aufgabe 1<br />
Szenario:<br />
Ein Kunde möchte einen Internetdienst für Brettspiele in Auftrag geben.<br />
Die grobe Zielvorstellung des Kunden lautet:<br />
Dem einzelnen Benutzer soll das Spielen (von Brettspielen) mit anderen Benutzern über einen Internetdienst<br />
ermöglicht werden. Folgende Brettspiele sollen für den einzelnen Benutzer zunächst zur Verfügung<br />
stehen:<br />
• Mühle,<br />
• Dame<br />
• Schach<br />
Erstellen Sie ein Lastenheft!<br />
Seite 1 von 9
3. Dezember 2013<br />
LS <strong>Software</strong>-<strong>Systemtechnik</strong><br />
Entwicklung von <strong>Software</strong>-Systemen<br />
Architektur<br />
Quelle: R. Reussner, W. Hasselbing, „Handbuch der <strong>Software</strong>-Architektur“, dpunkt.verlag, 2008<br />
Definition:<br />
Die <strong>Software</strong>-Architektur ist die grundlegende Organisation eines Systems, dargestellt durch dessen Komponenten,<br />
deren Beziehungen zueinander und zur Umgebung sowie die Prinzipien, die den Entwurf und die<br />
Evolution des Systems bestimmen.<br />
Eine <strong>Software</strong>-Architektur beschreibt [...] nicht den detaillierten Entwurf, vielmehr geht es darum, die Zusammenhänge<br />
zwischen den Anforderungen und dem konstruierten System zu beschreiben, möglichst mit<br />
einer Begründung für die Entwurfsentscheidungen. Die Wahl einer bestimmten Architektur hat dann einen<br />
starken Einfluss auf die nicht funktionalen (qualitativen), technischen Eigenschaften der resultierenden Systeme.<br />
Beispiel: Drei-Schichten-Architektur<br />
Presentation tier<br />
The top-most level of the application<br />
is the user interface. The main function<br />
of the interface is to translate tasks<br />
and results to something the user can<br />
understand.<br />
>GET SALES<br />
TOTAL<br />
>GET SALES<br />
TOTAL<br />
4 TOTAL SALES<br />
Logic tier<br />
This layer coordinates the<br />
application, processes commands,<br />
makes logical decisions and<br />
evaluations, and performs<br />
calculations. It also moves and<br />
processes data between the two<br />
surrounding layers.<br />
GET LIST OF ALL<br />
SALES MADE<br />
LAST YEAR<br />
ADD ALL SALES<br />
TOGETHER<br />
Data tier<br />
Here information is stored and retrieved<br />
from a database or file system. The<br />
information is then passed back to the<br />
logic tier for processing, and then<br />
eventually back to the user.<br />
QUERY<br />
SALE 1<br />
SALE 2<br />
SALE 3<br />
SALE 4<br />
Database<br />
Storage<br />
Beispiel für eine Dreischichten-Architektur (Quelle: Wikipedia)<br />
Seite 2 von 9
3. Dezember 2013<br />
LS <strong>Software</strong>-<strong>Systemtechnik</strong><br />
Entwicklung von <strong>Software</strong>-Systemen<br />
Eine typische Drei-Schichten-Architektur besteht aus den folgenden Schichten:<br />
• Präsentationsschicht - Diese, auch Front-End bezeichnet, ist für die Repräsentation der Daten, Benutzereingaben<br />
und die Benutzerschnittstelle verantwortlich.<br />
• Logikschicht - Sie beinhaltet alle Verarbeitungsmechanismen. Hier ist die Anwendungslogik vereint.<br />
• Datenhaltungsschicht - Sie enthält die Datenbank und ist verantwortlich für das Speichern und Laden<br />
von Daten.<br />
Quelle: Wikipedia:<br />
Durch eine Schichtenarchitektur wird die Komplexität der Abhängigkeiten innerhalb des Systems<br />
reduziert und somit eine geringere Kopplung bei gleichzeitig höherer Kohäsion der einzelnen<br />
Schichten erreicht. Insbesondere werden durch sie Zyklen im Abhängigkeitsgraphen<br />
vermieden, insofern das Dependency Inversion Principle eingehalten wird. Dies hat Vorteile<br />
sowohl für das Verständnis wie auch für die Wartung des Systems.<br />
Vorteile einer Schichtenarchitektur:<br />
• Übersichtlichkeit<br />
• Schichten können einfach ausgetauscht werden, weil die einzelnen Schichten nicht miteinander verwoben<br />
sind (Beispiel: Datenbank austauschen)<br />
• Programmlogik ist von GUI getrennt<br />
• Getrennte Entwicklung wird vereinfacht<br />
Schematische Darstellung in einem Klassendiagramm<br />
Eine sehr vereinfachte Darstellung einer Architektur ist auf der nächsten Seite zu finden. Die 3-Schichten<br />
sind über das Entwurfsklassendiagramm für einen Artikel gezeichnet. Im Analyseklassendiagramm wäre<br />
nämlich nur die Klasse Artikel vorhanden, was aber zur Darstellung der 3-Schichten-Architektur ungeeignet<br />
wäre.<br />
Seite 3 von 9
3. Dezember 2013<br />
LS <strong>Software</strong>-<strong>Systemtechnik</strong><br />
Entwicklung von <strong>Software</strong>-Systemen<br />
javax.swing.JDialog<br />
Präsentations-Schicht<br />
ArtikelDialog<br />
Logik-Schicht<br />
Artikel<br />
java.io.FileReader<br />
Daten-Schicht<br />
ArtikelFileReader<br />
ArtikelFile<br />
Beispiele<br />
Schichtenarchitektur schematisch dargestellt anhand von Cluster-Hardware – Quelle: http://bobi.blog.com/<br />
Seite 4 von 9
Echtes Beispiel: http://www.openkm.com/Architecture.html<br />
3. Dezember 2013<br />
LS <strong>Software</strong>-<strong>Systemtechnik</strong><br />
Entwicklung von <strong>Software</strong>-Systemen<br />
Echtes Beispiel angelehnt an nicht mehr existierende Quelle von http://www.openkm.com/<br />
Seite 5 von 9
3. Dezember 2013<br />
LS <strong>Software</strong>-<strong>Systemtechnik</strong><br />
Entwicklung von <strong>Software</strong>-Systemen<br />
Einschub: Objektorientierung<br />
Entnommen aus:<br />
• Helmut Balzert, Lehrbuch der <strong>Software</strong>-Technik, 1996<br />
• Bernhard Lahres, Gregor Raýman, Praxisbuch Objektorientierung<br />
Beispiel<br />
• jedes Einfamilienhaus ist ein Objekt<br />
• Firma Nobel & Teuer hat Auftrag zum Verkauf eines<br />
Landhauses<br />
• zum ”Landhaus“-Objekt werden folgende Daten<br />
(auch Attributwerte) gespeichert: Haustyp, Name des<br />
Besitzers, Adresse des Landhauses, Wohnfläche, Anzahl<br />
der Bäder, Schwimmbad vorhanden, Baujahr,<br />
Verkaufspreis<br />
(Einfamilienhaus)<br />
Haustyp: Landhaus<br />
Besitzer: Dr. Kaiser<br />
Adresse: Konigstein<br />
Wohnfläche: 400 m 2<br />
Anzahl Bäder: 3<br />
Hat Schwimmbad: ja<br />
Garten: 5000 m 2<br />
Baujahr: 1976<br />
Verkaufspreis: 2 Mio e<br />
• Käufer möchte Verkaufspreis wissen ⇒ Funktion<br />
(auch Operation) auf Landhaus angewendet (Ein<br />
Objekt enthält Attributwerte, auf die nur über die<br />
Operationen zugegriffen werden kann. Die Attributwerte<br />
des Objekts sind verkapselt, d.h. von außen<br />
nicht sichtbar.)<br />
(Einfamilienhaus)<br />
Haustyp: Landhaus<br />
Besitzer: Dr. Kaiser<br />
Adresse: Konigstein<br />
Wohnfläche: 400 m 2<br />
Anzahl Bäder: 3<br />
Hat Schwimmbad: ja<br />
Garten: 5000 m 2<br />
Baujahr: 1976<br />
Verkaufspreis: 2 Mio e<br />
Verkaufspreis erfragen<br />
• Außer dem Objekt ”Landhaus“ werden noch andere Einfamilienhäuser angeboten.<br />
(Einfamilienhaus)<br />
Haustyp: Landhaus<br />
Besitzer: Dr. Kaiser<br />
Adresse: Konigstein<br />
Wohnfläche: 400 m 2<br />
Anzahl Bäder: 3<br />
Hat Schwimmbad: ja<br />
Garten: 5000 m 2<br />
Baujahr: 1976<br />
Verkaufspreis: 2 Mio e<br />
(Einfamilienhaus)<br />
Haustyp: Bungalow<br />
Besitzer: Herzog<br />
Adresse: Stiepel<br />
Wohnfläche: 250 m 2<br />
Anzahl Bäder: 2<br />
Hat Schwimmbad: nein<br />
Garten: 1500 m 2<br />
Baujahr: 1986<br />
Verkaufspreis: 1.5 Mio e<br />
(Einfamilienhaus)<br />
Haustyp: Stadthaus<br />
Besitzer: Urban<br />
Adresse: Bochum<br />
Wohnfläche: 200 m 2<br />
Anzahl Bäder: 2<br />
Hat Schwimmbad: nein<br />
Garten: 400 m 2<br />
Baujahr: 1990<br />
Verkaufspreis: 1 Mio e<br />
Seite 6 von 9
3. Dezember 2013<br />
LS <strong>Software</strong>-<strong>Systemtechnik</strong><br />
Entwicklung von <strong>Software</strong>-Systemen<br />
Beispiel<br />
• Sie haben zwar alle unterschiedliche Attributwerte,<br />
die aber von der gleichen Art sind. Man spricht von<br />
Attributen ”Haustyp“, ”Besitzer“ usw. Außerdem<br />
besitzen alle Objekte die gleiche Operation ”Verkaufspreis<br />
erfragen.“ Diese Objekte werden zu der<br />
Klasse ”Einfamilienhaus“ zusammengefasst. (Eine<br />
Klasse definiert die Attribute und Operationen ihrer<br />
Objekte.)<br />
Einfamilienhaus<br />
Haustyp<br />
Besitzer<br />
Adresse<br />
Wohnfläche<br />
Anzahl Bäder<br />
Hat Schwimmbad<br />
Garten<br />
Baujahr<br />
Verkaufspreis<br />
Verkaufspreis erfragen<br />
Geschäftshaus<br />
• Nobel & Teuer vermittelt nun auch Geschäftshäuser<br />
analog zu Einfamilienhäuser wird eine Klasse ”Geschäftshaus“<br />
gebildet<br />
Besitzer<br />
Adresse<br />
Anzahl Büroräume<br />
Geschosszahl<br />
Hat Aufzug<br />
Hat Tiefgarage<br />
Baujahr<br />
Verkaufspreis<br />
Verkaufspreis erfragen<br />
Anzahl Büroräume erfragen<br />
• vergleicht man beide Klassen fallen die gleichen Attribute ”Besitzer“ usw. auf diese werden in eine<br />
neue Klasse ”Immobilie“ eingetragen<br />
Immobilie<br />
Besitzer<br />
Adresse<br />
Baujahr<br />
Verkaufspreis<br />
Verkaufspreis erfragen<br />
Einfamilienhaus<br />
Adresse<br />
Wohnfläche<br />
Anzahl Bäder<br />
Hat Schwimmbad<br />
Garten<br />
Verkaufspreis erfragen<br />
Geschäftshaus<br />
Anzahl Büroräume<br />
Geschosszahl<br />
Hat Aufzug<br />
Hat Tiefgarage<br />
Verkaufspreis erfragen<br />
Anzahl Büroräume erfragen<br />
• die Klasse ”Immobilien“ vererbt alle ihre Attribute an die Klassen ”Einfamilienhaus“ und ”Geschäftshaus.“<br />
Die Klasse ”Einfamilienhaus“ besitzt also zusätzlich zu ihren eigenen Attributen und<br />
Operationen alle Attribute und Operationen der Klasse ”Immobilie.“<br />
• Polymorphismus bedeutet, dass dieselbe Botschaft an Objekte verschiedener Klassen einer Vererbungshierarchie<br />
gesendet werden kann und diese Objekte die Botschaft ganz unterschiedlich interpretieren<br />
können. So könnte ”Verkaufspreis erfragen“ angewendet bei ”Einfamilienhaus“ den Verkaufspreis<br />
erhöht um Mehrwertsteuer und Maklergebühr zurückgeben, wobei ”Verkaufspreis erfragen“<br />
angewendet bei ”Geschäftshaus“ nur den Verkaufspreis erhöht um die Maklergebühr zurückgibt<br />
Seite 7 von 9
3. Dezember 2013<br />
LS <strong>Software</strong>-<strong>Systemtechnik</strong><br />
Entwicklung von <strong>Software</strong>-Systemen<br />
Konzepte<br />
Kapselung von Daten<br />
Daten gehören in der Objektorientierung explizit einem Objekt, ein direkter Zugriff wie auf die Datenstrukturen<br />
wie in der strukturierten Programmierung ist nicht mehr erlaubt.<br />
Objekte haben damit also das alleinige Recht, ihre Daten zu verändern oder auch lesend auf sie zuzugreifen.<br />
Möchte ein Aufrufer (zum Beispiel ein anderes Objekt) diese Daten lesen oder verändern, muss er sich über<br />
eine klar definierte Schnittstelle an das Objekt wenden und eine Änderung der Daten anfordern.<br />
Der große Vorteil besteht nun darin, dass das Objekt selbst dafür sorgen kann, dass die Konsistenz der Daten<br />
gewahrt bleibt. Falls zum Beispiel zwei Dateneinträge immer nur gemeinsam geändert werden dürfen, kann<br />
das Objekt dies sicherstellen, indem eine Änderung eines einzelnen Wertes gar nicht vorgesehen wird.<br />
Ein weiterer Vorteil besteht darin, dass von einer Änderung der zugrunde liegenden Datenstruktur nur die<br />
Objekte betroffen sind, die diese Daten verwalten. Wenn jeder beliebig auf die Daten zugreifen könnte,<br />
wäre die Anzahl der Betroffenen in einem System möglicherweise sehr hoch, eine Anpassung entsprechend<br />
aufwändig.<br />
Durch das in der Objektorientierung gegebene Prinzip der Datenkapselung haben Sie also auf jeden Fall<br />
Vorteile, weil Sie die Konsistenz von Daten wesentlich einfacher sicherstellen können. Damit ist es auch<br />
einfacher, die Korrektheit Ihres Programms zu gewährleisten. Außerdem reduzieren Sie den Aufwand bei<br />
Änderungen. Die internen Daten und Vorgehensweisen eines Objekts können geändert werden, ohne dass<br />
andere Objekte ebenfalls angepasst werden müssten.<br />
Polymorphie<br />
Wörtlich übersetzt bedeutet Polymorphie ”Vielgestaltigkeit“. Mit Bezug auf Glühbirnen können wir diesen<br />
Begriff definitiv anwenden: Glühbirnen gibt es in den verschiedensten Formen und Gestalten. Wir können<br />
diese verschiedenen Formen aber alle an einer ganz definierten Stelle anbringen: in einer dafür vorgesehenen<br />
Fassung.<br />
Energiesparlampen können in dasselbe Gewinde geschraubt werden wie eine Birne, die von Greenpeace den<br />
Preis ”Umweltschwein des Jahres“ erhalten hat. Dass sich die einzelnen Birnen dann ganz unterschiedlich<br />
verhalten, ist nicht mehr relevant.<br />
Genau diese Möglichkeiten, die es für den (auf den ersten Blick banalen) Bereich der Glühbirnen gibt,<br />
möchten wir auch in unseren objektorientierten Systemen nutzen. Wir möchten Stellen in unserem Code<br />
haben, die es uns erlauben, einzelne Elemente auszutauschen – wie eine Fassung für Glühbirnen: Ein Berechnungsverfahren<br />
für eine bestimmte Aufgabe ist nicht mehr schnell genug für Ihre Ansprüche? Tauschen<br />
Sie es doch einfach gegen ein effizienteres Verfahren aus, und klinken Sie es in die dafür vorgesehene Fassung<br />
ein. Ein neues Übertragungsprotokoll für Daten muss unterstützt werden? Schrauben Sie es in die<br />
Fassung, in die schon alle anderen Übertragungsprotokolle eingesetzt werden konnten.<br />
Die Polymorphie im Zusammenspiel mit einem cleveren Systementwurf ermöglicht uns ein solches Vorgehen.<br />
Gegenstand des Entwurfs ist es, die Stellen zu finden, an denen Fassungen vorgesehen werden müssen,<br />
und die Objekte zu bestimmen, die in diese Fassungen geschraubt werden. An den richtigen Punkten eingesetzt,<br />
kann die Nutzung der Polymorphie dadurch zu wesentlich flexibleren Programmen führen. Sie<br />
steigert damit die Wartbarkeit und Änderbarkeit unserer <strong>Software</strong>.<br />
Seite 8 von 9
3. Dezember 2013<br />
LS <strong>Software</strong>-<strong>Systemtechnik</strong><br />
Entwicklung von <strong>Software</strong>-Systemen<br />
Vererbung<br />
Die Glühbirnen in unserem Beispiel können ganz unterschiedliche Formen aufweisen, der Energieverbrauch<br />
und die Leuchtkraft können sich erheblich unterscheiden. Trotzdem können wir sie alle in die gleiche Fassung<br />
schrauben, und, sofern sie nicht defekt sind, werden sie das tun, was wir von Glühbirnen erwarten: Sie<br />
leuchten.<br />
Wir stellen also fest, dass diese verschiedenen Glühbirnen eine grundlegende Gemeinsamkeit haben: Sie<br />
entsprechen einer Spezifikation, die es erlaubt, sie in eine genormte Fassung zu drehen und mit der in<br />
Deutschland vorgesehenen Standardstromspannung von 220 Volt zu<br />
betreiben.<br />
In einer objektorientierten Anwendung könnten wir diese Gemeinsamkeiten der verschiedenen Glühbirnenarten<br />
modellieren, indem wir die so genannte Vererbung der Spezifikation verwenden. Eine abstrakte<br />
Spezifikation, wie sie für Glühbirnen von einer Normungsorganisation kommt, gibt dabei vor, welche Eigenschaften<br />
die Objekte haben müssen, um die Spezifikation zu erfüllen. In objektorientierten Anwendungen<br />
würden wir in diesem Fall davon sprechen, dass die verschiedenen Arten von Glühbirnen ihre Spezifikation<br />
von der abstrakten Spezifikation erben, die als Norm ausgegeben worden ist.<br />
Die Vererbung der Spezifikation hängt sehr eng mit der Polymorphie zusammen. Dass unsere Elektrogeräte<br />
nämlich alle die Normen für den Stromanschluss erfüllen, macht sie austauschbar. Jedes von ihnen kann<br />
an die gleiche Steckdose angeschlossen werden und wird dann seine Arbeit verrichten.<br />
Seite 9 von 9