04.06.2013 Aufrufe

Typen in C - AG Kastens - Universität Paderborn

Typen in C - AG Kastens - Universität Paderborn

Typen in C - AG Kastens - Universität Paderborn

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.

4.2. Interfaces<br />

E<strong>in</strong> Interface def<strong>in</strong>iert Methoden, Properties, Events, die von e<strong>in</strong>er Klasse, wenn diese das<br />

Interface implementiert, die Methoden, Properties, Events etc. enthalten (implementieren) muss.<br />

Das Interface selber enthält ke<strong>in</strong>e Implementierungen sodern lediglich die Def<strong>in</strong>itionen, d.h. sie<br />

spezifiziert nur Members (Methoden, Properties, etc.) die <strong>in</strong> e<strong>in</strong>er Klasse implementiert werden,<br />

wenn diese Klasse das Interface implementiert. E<strong>in</strong>e Interface-Deklaration ist auch e<strong>in</strong>e Typ-<br />

Deklaration, nämlich e<strong>in</strong> Interface-Typ.<br />

Interface-Deklaration:<br />

<strong>in</strong>terface-modifier <strong>in</strong>terface identifier <strong>in</strong>terface-base <strong>in</strong>terface-body, wobei<br />

die Menge der Nicht-Term<strong>in</strong>ale aus <strong>in</strong>terface-modifier, identifier, <strong>in</strong>terface-base und <strong>in</strong>terfacebody<br />

und die Menge der Term<strong>in</strong>ale aus <strong>in</strong>terface bestehen.<br />

<strong>in</strong>terface-modifier: {new, public, protected, <strong>in</strong>ternal, private }<br />

Die Modifizierer public, protected, <strong>in</strong>ternal und private s<strong>in</strong>d wie <strong>in</strong> Klassen Zugriffsmodifizierer.<br />

Der mit new Modifizierer gekennzeichnete Interface ist nur <strong>in</strong> verschachtelten Interfaces erlaubt<br />

macht e<strong>in</strong> geerbtes Datenelement mit demselben Name „unsichtbar“.<br />

identifier: { Interface-Bezeichner }<br />

<strong>in</strong>terface-base: {<strong>in</strong>terface-type-list }<br />

Es ist wie <strong>in</strong> Java erlaubt von mehreren Interfaces zu erben. Die Liste der Interface-Bezeichner<br />

kann leer oder aus Interface-Bezeichner getrennt durch e<strong>in</strong> Komma bestehen.<br />

<strong>in</strong>terface-body: { ‘{‘<strong>in</strong>terface-member-declarations’}’ }<br />

E<strong>in</strong> Interface <strong>in</strong> C# kann neben Methoden (Signatur e<strong>in</strong>er Methode) wie <strong>in</strong> Java auch Property-<br />

Datenelemente, Ereignisse und Indexer – jeweils Signatur und nicht die Implementation –<br />

enthalten.<br />

Beispiele:<br />

public <strong>in</strong>terface IControl {<br />

// Methoden-Deklaration<br />

public void pa<strong>in</strong>t();<br />

}<br />

public <strong>in</strong>terface ITextBox : IControl { // Erweiter das Interface IControl<br />

public void setText(str<strong>in</strong>g text);<br />

}<br />

5. Box<strong>in</strong>g und Unbox<strong>in</strong>g<br />

Werttypen s<strong>in</strong>d effizienter als Referenztypen, weil sie nicht auf dem verwalteten Heap angelegt<br />

werden, nicht vom Garbage-Collector gelöscht werden und nicht durch Zeiger referenziert<br />

werden. In vielen Fällen braucht man aber e<strong>in</strong>en Verweis (Referenz) auf die Instanz e<strong>in</strong>es<br />

Werttyps. Angenommen es wurde e<strong>in</strong>e Klasse Liste def<strong>in</strong>iert, <strong>in</strong> der nur Objekte e<strong>in</strong>gefügt<br />

werden können. Falls man <strong>in</strong> diese Datenstruktur (Liste) e<strong>in</strong>e <strong>in</strong>t Variable e<strong>in</strong>fügen wollte, dann<br />

Seite 11 von 17

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!