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
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