06.10.2013 Aufrufe

Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke

Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke

Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke

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.

<strong>E<strong>in</strong>e</strong> <strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>die</strong> Informatik <strong>und</strong> <strong>die</strong> <strong>Programmiersprache</strong> C<br />

Vererbung E<strong>in</strong> weiterer wichtiger Aspekt der OOP ist <strong>die</strong> Möglichkeit der Vererbung. Um<br />

nicht jedesmal e<strong>in</strong>e komplett neue Klasse entwerfen zu müssen, kann man festlegen,<br />

dass e<strong>in</strong>e Klasse alle Elemente <strong>und</strong> Methoden e<strong>in</strong>er bereits existierenden<br />

Klasse 'erben' soll, d.h. <strong>die</strong> neue Klasse enthält von vornhere<strong>in</strong> schon alle Attribute<br />

<strong>und</strong> Methoden <strong>die</strong>ser Klasse.<br />

Die Attribute <strong>und</strong> Methoden der neuen Klasse können anschliessend um weitere<br />

ergänzt oder bei Bedarf auch überschrieben (überschreiben = für <strong>die</strong> neue Klasse<br />

neu def<strong>in</strong>iert) werden.<br />

Damit wird e<strong>in</strong>e Beziehung wie z.B. 'e<strong>in</strong> Apfel ist e<strong>in</strong>e Frucht' realisiert, durch<br />

zusätzliche Elemente <strong>und</strong> Methoden wird <strong>die</strong> neue Klasse genauer spezifiziert,<br />

<strong>die</strong>ser Vorgang wird als Spezialisieren' bezeichnet. Die alte Klasse wird dabei<br />

als Basisklasse bezeichnet, <strong>die</strong> neue als abgeleitete Klasse <strong>und</strong> <strong>die</strong> Beziehungsstruktur,<br />

<strong>die</strong> durch <strong>die</strong> Vererbung entsteht, als Klassenhierarchie.<br />

Man kann auch den umgekehrten Weg gehen, <strong>in</strong>dem man Geme<strong>in</strong>samkeiten von<br />

Klassen <strong>in</strong> e<strong>in</strong>er Oberklasse (Basisklasse) zusammenfasst <strong>und</strong> anschliessend von<br />

<strong>die</strong>ser erbt. Man spricht <strong>in</strong> <strong>die</strong>sem Fall von Generalisierung.<br />

Polymorphismus Wie erwähnt kann man <strong>in</strong> e<strong>in</strong>er abgeleiteten Klasse Methoden der Basisklasse<br />

überschreiben. Dadurch hat <strong>die</strong> abgeleitete Klasse e<strong>in</strong>e neue Methode, welche<br />

aber immer noch den gleichen Namen trägt wie <strong>die</strong> Methode der Basisklasse.<br />

Polymorphismus bedeutet, dass nun überall, wo e<strong>in</strong> Objekt der Basisklasse erwartet<br />

wird, auch e<strong>in</strong> davon abgeleitetes Objekt e<strong>in</strong>gesetzt werden kann. Beim<br />

Aufruf von Methoden werden aber <strong>die</strong> Methoden des tatsächlichen Objektes,<br />

<strong>und</strong> nicht <strong>die</strong> der Basisklasse benutzt. Es wird somit nicht wie sonst üblich zur<br />

Compilezeit bestimmt, welche Methode aufgerufen wird, sondern erst zur Laufzeit.<br />

(Es ist zur Compilezeit ja nicht bekannt, welches Objekt später e<strong>in</strong>mal bearbeitet<br />

wird, da sowohl e<strong>in</strong> Objekt der Basisklasse oder e<strong>in</strong> davon abgeleitetes<br />

zum E<strong>in</strong>satz kommen kann. Somit wird zur Laufzeit bei jedem Methodenaufruf<br />

geprüft, welches Objekt den nun effektiv vorhanden ist, <strong>und</strong> <strong>die</strong> entsprechende,<br />

zu <strong>die</strong>sem Objekt gehörende Mothode aufgerufen).<br />

.<br />

(Z. B. für e<strong>in</strong>e graphische Ausgabe wird e<strong>in</strong> Ausgabeobjekt benötigt. Dabei ist<br />

zur Compilezeit vielleicht gar nicht bekannt, auf welches Objekt genau ausgegeben<br />

wird, es muss nur den Befehl Zeichne() verstehen. Es könnte e<strong>in</strong> Laserdrukker,<br />

e<strong>in</strong> Plotter oder nur e<strong>in</strong> Fenster auf dem Bildschirm se<strong>in</strong>, je nach dem, wo<br />

der Benutzer gerade se<strong>in</strong>e Ausgabe haben möchte).<br />

Gedruckt am 11.09.2008 13:04:00 Letzte Änderung am: 11. September 2008 Version 2.4, I. Oesch 135/147

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!