www.wikidata.de-de.nina.az
Unter einer Friend Funktion oder Friend Methode versteht man in der objektorientierten Programmierung eine Methode Funktion oder Prozedur der man erlaubt auf private private oder geschutzte protected Daten einer anderen Klasse zuzugreifen auf die sie sonst keinen Zugriff hatte Ein solcher Zugriff widerspricht dem Paradigma der Datenkapselung kann aber unter Umstanden trotzdem sinnvoll sein Dann wird die zugreifende Methode mit dem Schlusselwort friend als ein Freund der darauf zugegriffenen Klasse deklariert Sie hat dann nicht nur auf offentliche public sondern auch auf geschutzte protected oder private private Informationen in dieser Klasse Zugriff Diese Moglichkeit der Freundschaft sollte mit Bedacht genutzt werden da dadurch die Datenkapselung abgeschwacht wird Friend Methoden sind ein Konzept der Programmiersprache C Jedoch gibt es ahnliche Moglichkeiten in anderen objektorientierten Programmiersprachen zum Beispiel internal in C Inhaltsverzeichnis 1 Beispiele 2 Friend Klasse 3 Literatur 4 WeblinksBeispiele BearbeitenBeispiel 1In diesem C Beispiel ist die Funktion main ein Freund der Klasse A Sie kann deshalb auf das mit private geschutzte Attribut wert dieser Klasse zugreifen Ware main nicht als Freund deklariert ware ein Zugriff auf das private Attribut nicht moglich und das Programm konnte auch nicht ubersetzt werden Eine in der Praxis vorzuziehende Losung ware in diesem Beispiel eine Zugriffsfunktion include lt iostream gt class A private int wert public A wert 42 friend int main int main A a std cout lt lt A wert lt lt a wert lt lt std endl Beispiel 2In C konnen Operatoren uberladen werden So z B auch bei der Ausgabeoperator lt lt ursprunglich logische Verschiebung Wenn man eigene Datentypen implementiert kann man durch Uberladen dieses Operators die Ausgabe steuern Dafur wird haufig der Zugriff auf private Member erfordert die normalerweise fur den Operator lt lt nicht zuganglich sind Indem man den global uberladenen Operator mit friend kennzeichnet konnen jedoch auch private Attribute ausgegeben werden include lt iostream gt using namespace std class Zahl private int m zahl 20 public Zahl Zahl int zahl m zahl zahl friend ostream amp operator lt lt ostream amp out const Zahl amp zahlObj out lt lt Zahl lt lt zahlObj m zahl return out int main Zahl zahl 5 cout lt lt zahl lt lt endl Ausgabe Zahl 5 Es ist zu beachten dass obwohl dieser Operator innerhalb der Klasse Zahl definiert ist er eine freie Funktion darstellt d h keine Memberfunktion der Klasse Zahl ist Lasst man das Schlusselwort friend weg so wird operator lt lt zu einer Memberfunktion was jedoch fur dieses Beispiel zur Standardausgabe nicht sinnvoll ware Friend Klasse BearbeitenAnstelle einer Methode kann auch eine ganze Klasse als Freund einer anderen Klasse definiert werden Dann kann jede Methode dieser Klasse auf alle privaten Informationen der anderen Klasse zugreifen class A friend class B class B void changeA A amp a a a b int main A a 100 B b 200 a show Gibt a 100 aus b show Gibt b 200 aus b changeA a a show Gibt a 200 aus b show Gibt b 200 aus Literatur BearbeitenBjarne Stroustrup The C Programmierung Language ISBN 978 0 201 88954 3 Graham M Seed An Introduction to Object Oriented Programmierung in C ISBN 978 1 85233 450 5 Weblinks BearbeitenC friend function tutorial bei CoderSource net C friendship and inheritance tutorial bei cplusplus com Abgerufen von https de wikipedia org w index php title Friend Funktion amp oldid 233132321