22.08.2013 Aufrufe

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

class ARBEITNEHMER<br />

inherit PERSON<br />

export<br />

{ARBEITGEBER} name, vornamen, geburtsjahr;<br />

{FINANZAMT} all<br />

end -- feature-Anpassung von PERSON<br />

feature<br />

adresse: ADRESSEN;<br />

gehaltsklasse: STRING;<br />

gehalt: REAL is -- Gehalt berechnen<br />

do Result := Gehalt aus Tabelle nach gehaltsklasse end<br />

end -- class ARBEITNEHMER<br />

Abbildung 3.30: Klassendefinition mit selektivem Export geerbter features<br />

Diese Koppelung <strong>der</strong> Vererbung mit dem in Abschnitt 3.4 diskutierten Geheimnisprinzip hat eine Reihe interessanter<br />

Anwendungen. Sie erlaubt es, durch verschiedene Erbenklassen auch verschiedene Sichten auf<br />

eine Datenstruktur zu ermöglichen und hierüber die unterschiedlichen Zugriffsrechte zu regeln. So gibt es<br />

zum Beispiel bei einem Bankkonto die Vorgänge eröffnen, abheben, einzahlen, geheimzahl eingeben,<br />

geheimzahl prüfen, geheimzahl än<strong>der</strong>n, löschen, gebühren einziehen, konto sperren, usw. Nicht je<strong>der</strong><br />

dieser Vorgränge darf vom Kunden selbst ausgeführt werden (für die Eröffnung des Kontos sind z.B. einige<br />

Vorschriften zu beachten) son<strong>der</strong>n nur von den Bankangestellten am Schalter und umgekehrt. An<strong>der</strong>e Vorgänge<br />

(Kontosperrung) dürfen nur von Angestellten des Managements ausgelöst werden. Diese verschiedenen Sichten<br />

auf ein und dieselbe Datenstruktur läßt sich durch Vererbung auf eine sehr einfache und übersichtliche<br />

Art realisieren. Die in Abbildung 3.31 genannten Erben <strong>der</strong> Klasse BANKONTO stellen jeweils einen Teil <strong>der</strong><br />

Dienstleistungen <strong>der</strong> Ahnenklasse bereit und darüber hinaus noch ihre eigenen speziellen features.<br />

✬<br />

✫<br />

SCHALTER<br />

✬<br />

BANKONTO<br />

✫<br />

✟✩✟✟✟✟✯ ✬<br />

✻<br />

✪✫<br />

KUNDE<br />

✩<br />

❍❨ ❍✪<br />

❍<br />

✩❍<br />

❍✬<br />

✪✫<br />

MANAGEMENT<br />

✩<br />

✪<br />

Abbildung 3.31: Vererbung und Datenkapselung: Verschiedene Sichten auf eine Datenstruktur<br />

Eine gewisse Ausnahme von <strong>der</strong> Regel, daß features einer Elternklasse für gewöhnlich übernommen werden,<br />

betrifft Initialisierungsprozeduren. Meist besitzen die Erben einer Klasse mehr Attribute als ihre Vorfahren<br />

und auch die Eigenschaften <strong>der</strong> geerbten features sind oft spezieller als die <strong>der</strong> Elternklasse 22 . Aus diesem<br />

Grunde müssen spezifische Initialisierungsprozeduren einer Nachkommenklasse oft völlig an<strong>der</strong>s aussehen als<br />

die <strong>der</strong> Eltern. Man kann also nicht einfach die Initialisierungsprozedur <strong>der</strong> Elternklasse erneut zur Erzeugung<br />

von Objekten <strong>der</strong> Nachkommenklasse verwenden. Ist dies dennoch gewünscht, so muß diese Prozedur erneut<br />

über eine creation-Klausel als Initialisierungsprozedur <strong>der</strong> Nachkommenklasse deklariert werden. Ansonsten ist<br />

sie nicht mehr als eine gewöhnliche geerbte Routine, die bestehende Objekte än<strong>der</strong>t, nicht aber neue erzeugt.<br />

Vererbung ermöglicht es, Objekte einer Nachkommenklasse auch als Objekte <strong>der</strong> Vorfahrenklasse zu betrachten.<br />

Arbeitnehmer und Entleiher sind insbeson<strong>der</strong>e auch Personen – man besitzt nur einige zusätzliche<br />

Informationen über Arbeitnehmer und Entleiher, die man von Personen nicht unbedingt erhalten kann.<br />

22 So muß zum Beispiel ein Arbeitnehmer in Deutschland immer älter als 14 Jahre sein, während für Personen eine solche<br />

Einschränkung nicht sinnvoll ist.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!