22.08.2013 Aufrufe

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

gnis ausstellen zu können. Auf <strong>der</strong> an<strong>der</strong>en Seite müssen zum Zwecke <strong>der</strong> schnellen Informationsverbreitung<br />

Klausurergebnisse öffentlich zur Einsicht ausgehängt werden. Es wäre Ihnen aber sicher nicht recht, wenn ein<br />

nicht so gutes Ergebnis jedem bekannt würde. Deshalb darf <strong>der</strong> Name nicht mit ausgedruckt werden, son<strong>der</strong>n<br />

nur Note und Matrikelnummer. Selektive Verbreitung von Informationen – eingeschränkt auf das unbedingt<br />

Notwendige – ist eine <strong>der</strong> wesentlichen Grundfor<strong>der</strong>ungen des Datenschutzes.<br />

Deshalb können Features selektiv bereitgestellt werden, d.h. es ist möglich, zu jedem feature anzugeben, welche<br />

Klasse es benutzen darf. Diese werden in geschweiften Klammern hinter <strong>der</strong> feature-Klausel genannt.<br />

feature {Klasse1,...,Klassen} featurelist<br />

bedeutet, daß die features <strong>der</strong> Aufzählung featurelist an die genannten Klassen Klasse1,...,Klassen (sowie<br />

an alle Klassen, die von diesen erben!) exportiert werden. Demzufolge bedeutet feature {} featurelist daß<br />

die features <strong>der</strong> Aufzählung featurelist überhaupt nicht weitergegeben werden. feature featurelist drückt<br />

aus, daß die features <strong>der</strong> Aufzählung featurelist an alle Klassen weitergegeben werden.<br />

class PERSON<br />

creation<br />

init mit namen<br />

feature<br />

init mit namen(n,v:STRING) is ... do ... end;<br />

name: STRING;<br />

vornamen: STRING is ... do ... end;<br />

anzahl vornamen: INTEGER is ... do ... end;<br />

feature{EINWOHNERMELDEAMT}<br />

geburtsjahr, todesjahr: INTEGER;<br />

alter(jahr:INTEGER): INTEGER is ... do ... end;<br />

vater, mutter: PERSON;<br />

nationalität: STRING<br />

feature{STANDESAMT}<br />

setze todesjahr(jahr:INTEGER) is ... do ... end;<br />

feature{EINWOHNERMELDEAMT, PERSON}<br />

geschwister: ARRAY[PERSON] is ... do ... end;<br />

feature{PERSON}<br />

großeltern: ARRAY[PERSON] is ... do ... end;<br />

feature{}<br />

vornamen liste: STRING;<br />

end -- class PERSON<br />

Abbildung 3.16: Klassendefinition mit selektivem Export von Features<br />

In Abbildung 3.16 haben wir unser Beispiel um fiktive Klassen EINWOHNERMELDEAMT und STANDESAMT erweitert.<br />

Das Beispiel drückt aus, daß das Einwohnermeldeamt Geburts- und Todesjahr, Alter, Nationalität und Eltern<br />

abfragen kann, darüber hinaus – zusammen mit <strong>der</strong> Klasse PERSON – aber auch die Geschwister. Großeltern<br />

sind nur für Personen abfragbar. Nur das Standesamt darf das Todesjahr eintragen. Namen und Vornamen<br />

sind allgemein zugänglich.<br />

Durch eine saubere Ausarbeitung dieser recht einfach aufgestellten Vereinbarung kann die Verbreitung von Informationen<br />

klar geregelt werden. Die Klasse PERSON entscheidet, wer von ihr welche Informationen bekommt.<br />

Wie diese dann von den an<strong>der</strong>en Klassen weiterverbreitet werden, fällt nicht mehr in die Verantwortung dieser<br />

Klasse, son<strong>der</strong>n unter die Zuständigkeit <strong>der</strong> Klasse, welche die bereitgestellte Information verarbeitet. Mehr<br />

zum Geheimnisprinzip findet man in [Meyer, 1988, Kapitel 2.2.5 und 9].

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!