13.07.2015 Aufrufe

Objektorientierte Programmierung – die Programmiersprache C++ –

Objektorientierte Programmierung – die Programmiersprache C++ –

Objektorientierte Programmierung – die Programmiersprache C++ –

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.

Einführung in <strong>die</strong> objektorientierte <strong>Programmierung</strong> - <strong>die</strong> <strong>Programmiersprache</strong> <strong>C++</strong>Semester: 47. friend-Funktionen und friend-Klassen7.1. Idee der friends• in einer Klasse können andere Klassen oder Funktionen (keine Methoden!) zu „Freunden“ erklärt werden• <strong>die</strong> so gewonnen Freunde können in das Innere der Klasse hineinsehen und auf <strong>die</strong> Funktionen darinzugreifen (über <strong>die</strong> eigentliche Schnittstelle hinaus)• eigentlich ein Verstoß gegen <strong>die</strong> Ideen der OOP7.1.1. friend-Funktionen• ist C-Funktion• Erklärung zum Freund erfolgt über friend[Prototyp]• Definition der Funktion in passendemGültigkeitsbereich (z.B. global oderbenannt) ohne nochmals das Schlüsselwort„friend“ bei der Definition zu verwenden(nur bei der Deklaration!)• in der Parameterliste ist <strong>die</strong> Freundklasse(<strong>die</strong>, <strong>die</strong> mich zum Freund nimmt) überein Objekt anzugeben• wo ich <strong>die</strong> friend Funktion ist egal (obprivate oder public)• Zugriff erfolgt über [Objektnamen].[Datum]oder [Objektnamen].[Methode]alphaprivate datafriendfunctionsfriend [returnTyp] [funktionname](obj myFriendClass)friend betaaccessbetaprivate datafunctions7.1.2. friend-KlassenAbbildung 2• alle Methoden einer Klasse werden zuFreunden der zweiten Klasse erklärt• über Klassennamen• Form: friend [Klassenname] in Funktionen zu befreundeten Klassen (beta z.B.)• zur Arbeit mit solchen Klassen brauche ich Objekte (z.B. alpha a; beta b; b.aendere() //wobei <strong>die</strong> Funktionaendere <strong>die</strong> Daten aus alpha ändern/ nutzen soll)7. 2. Überschreiben von Operatoren mit friend - functions7.2.1. VoraussetzungClass Komplex{Komplex operator+(float,komplex)}Aufruf: k.operator+(7);k+7;normal nicht möglich: 7+k;• Klasse, in der Operatoren überschrieben werden sollen• Funktionsname: operator[Zeichen] ([Parameter]) (<strong>die</strong>se Funktionbefindet sich in einer aktuellen Klasse)• Aufruf der Funktion: [Objektname].operator[Zeichen] ([Paramter])bisher: Objektname stammt von aktuellen Objekt, Typ der Parameterkann von unterschiedlichen Typen sein (auch gleich dem aktuellenObjekt)• bei einargumentigen Funktionen muß der returnTyp gleich demParametertyp sein• bei mehrstelligen Operationen, <strong>die</strong> mit friend-Funktionen überschriebenwerden, muß der erste Operant nicht vom Klassentyp seinMitschrift von: Drost, Isabel – if99wp1 Seite 4 von 12

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!