30.06.2013 Aufrufe

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

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.

12. Operator Overload<strong>in</strong>g<br />

Bei den bisherigen Betrachtungen zu Klassen und Objekten haben wir bereits<br />

die verschiedenen Arten von Members, also Variablen und Methoden, kennen<br />

gelernt. E<strong>in</strong>es fehlt noch, um Klassen und Objekte zu e<strong>in</strong>em Gesamtkonzept<br />

zu machen, nämlich Operatoren! Je nachdem, mit welchen Objekten man es<br />

zu tun hat, ist e<strong>in</strong>e Verknüpfung derselben mittels Operatoren oft e<strong>in</strong> sehr<br />

logischer Zugang zu deren Konzept. Wenn man zwei Ganzzahlenwerte addieren<br />

kann, wieso sollte man das mit “höheren” Datentypen (z.B. Vektoren)<br />

nicht tun können?<br />

12.1 Grundpr<strong>in</strong>zipien des Operator Overload<strong>in</strong>gs<br />

Um nun nicht gleich zu abstrakt zu werden, nehmen wir e<strong>in</strong>mal als E<strong>in</strong>stiegsdroge<br />

für das Operator Overload<strong>in</strong>g e<strong>in</strong>e e<strong>in</strong>fache (!) mathematische<br />

Vektor-Klasse. Ich gebe schon zu, dass dies wirklich nicht das spannendste<br />

Beispiel ist und dass es bereits vielfach <strong>in</strong> der Literatur <strong>in</strong> verschiedensten<br />

Formen abgehandelt ist. Für den E<strong>in</strong>stieg ist es allerd<strong>in</strong>gs e<strong>in</strong>es der demonstrativsten<br />

Beispiele. Sobald wir über die Grundpr<strong>in</strong>zipien h<strong>in</strong>aus s<strong>in</strong>d,<br />

wird es dann wieder spannender. Von unserer M<strong>in</strong>imalversion e<strong>in</strong>es Vektors<br />

erwarten wir folgende D<strong>in</strong>ge:<br />

• E<strong>in</strong> Vektor-Objekt speichert e<strong>in</strong>e gewisse Anzahl von double Elementen.<br />

Beim Erzeugen e<strong>in</strong>es solchen Objekts wird diese Anzahl (durch entsprechenden<br />

Konstruktoraufruf) festgelegt.<br />

• Der Zugriff auf die e<strong>in</strong>zelnen Elemente e<strong>in</strong>es Vektors soll mittels Angabe<br />

e<strong>in</strong>es Index <strong>in</strong> eckigen Klammern h<strong>in</strong>ter e<strong>in</strong>er Vektor-Variable erfolgen, wie<br />

es auch bei “normalen” Arrays <strong>in</strong> C ++ üblich ist.<br />

• Zwei Vektoren sollen addierbar se<strong>in</strong>. Dies soll <strong>in</strong>tuitiverweise e<strong>in</strong>fach durch<br />

e<strong>in</strong> + zwischen zwei Vektoren geschehen. Die Addition von zwei Vektoren<br />

soll mathematisch korrekt durchgeführt werden, <strong>in</strong>dem e<strong>in</strong>fach die jeweiligen<br />

E<strong>in</strong>zelelemente an jeder Index-Position mite<strong>in</strong>ander addiert werden.<br />

• Es soll e<strong>in</strong>e Subtraktion e<strong>in</strong>es Vektors von e<strong>in</strong>em anderen möglich se<strong>in</strong>.<br />

Dazu will man e<strong>in</strong>fach e<strong>in</strong> - zwischen diese beiden Vektoren schreiben. Die<br />

Subtraktion e<strong>in</strong>es Vektors von e<strong>in</strong>em anderen soll mathematisch korrekt<br />

geschehen, <strong>in</strong>dem e<strong>in</strong>fach die jeweiligen E<strong>in</strong>zelelemente subtrahiert werden.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!