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.

• Die Verän<strong>der</strong>ung und Auswertung <strong>der</strong> Daten darf nur über prozedurale Schnittstellen geschehen. Ein<br />

direktes Lesen und Schreiben ist nicht erlaubt, son<strong>der</strong>n nur über Funktionen und Prozeduren für Anfragen<br />

und Än<strong>der</strong>ungen.<br />

Eiffel realisiert dieses Prinzip, indem qualifizierte Vorkommen von Attributen als Funktionen aufgefaßt werden,<br />

die nur einen Wert liefern, nicht aber eine Zuweisung von Werten zulassen. Wertzuweisungen sind nur innerhalb<br />

<strong>der</strong> deklarierenden Klasse, also nur über unqualifizierte Attribute des aktuellen Exemplars möglich.<br />

Darüber hinaus müssen nicht alle Attribute nach außen hin zugänglich sein, da manche vielleicht nur für die<br />

interne Darstellung benötigt werden. So könnte es zum Beispiel sein, daß die Klasse PERSON die Vornamen<br />

einer Person intern als Liste einzelner Vornamen darstellt, nach außen aber nur als einen einzigen String<br />

liefert. Ob vornamen also ein Attribut ist o<strong>der</strong> eine Funktion, darf den Benutzer nicht interessieren.<br />

Dieses Prinzip ist auch die Ursache dafür, daß <strong>der</strong> Aufruf (und die Deklaration) von Routinen und Attributen<br />

in Eiffel die gleiche Syntax haben. Es erlaubt dem Systementwickler, nachträglich die Implementierung einer<br />

Klasse zu än<strong>der</strong>n, ohne daß dies Konsequenzen für die Außenwelt hat. Kunden einer Klasse sind – was<br />

die Art <strong>der</strong> Verarbeitung angeht – von Än<strong>der</strong>ungen überhaupt nicht betroffen. Es än<strong>der</strong>t sich allenfalls die<br />

Geschwindigkeit, mit <strong>der</strong> Instruktionen ausgeführt werden.<br />

class PERSON<br />

creation<br />

init mit namen<br />

feature{}<br />

vornamen liste: STRING;<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 />

geburtsjahr, todesjahr: INTEGER;<br />

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

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

vater, mutter: PERSON;<br />

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

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

nationalität: STRING<br />

end -- class PERSON<br />

Abbildung 3.15: Klassendefinition mit Datenkapselung<br />

Welche features für die Außenwelt sichtbar sein sollen, wird durch die genaue Form <strong>der</strong> feature-Klausel beschrieben.<br />

Features, die hinter dem Schlüsselwort feature {} genannt werden – in Abbildung 3.15 das feature<br />

vornamen liste –, bleiben nach außen hin unsichtbar. Features, die hinter einem einfachen Schlüsselwort<br />

feature vorkommen (also alle an<strong>der</strong>en hier genannten features), sind für alle Kunden zugänglich. 12 Dies gilt<br />

sowohl für Attribute als auch für Routinen.<br />

Eiffel erlaubt sogar eine feinere Unterscheidung, die auch die Verwendung <strong>der</strong> Klammern “{}” motiviert. Es<br />

kann nämlich sehr sinnvoll sein, die Zugangsberechtigung für bestimmte features abhängig zu machen von<br />

<strong>der</strong> Klasse, welche die Anfrage stellt. Dies realisiert den Gedanken, daß die Herausgabe aller verfügbarer<br />

Informationen sehr unangenehme Konsequenzen haben könnte, wenn sie in die falschen Hände geraten. Auf<br />

<strong>der</strong> an<strong>der</strong>en Seite sind diese Informationen für manche Verarbeitungen unbedingt notwendig.<br />

Bei <strong>der</strong> Verwaltung von Studentendaten müssen zum Beispiel Namen, Matrikelnummern und Prüfungsergebnisse<br />

gesammelt werden. Das Prüfungsamt braucht alle diese Informationen, um im Endeffekt ein Diplomzeu-<br />

12 In früheren Versionen von Eiffel mußten diese Features explizit in einer Export-Liste genannt werden. Dies ist aber überflüssig<br />

geworden durch die verbesserte Syntax. export wird nur noch für die Aufschlüsselung <strong>der</strong> Sichtbarkeit vererbter features benötigt.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!