Vergleich von Delphi und Visual C++ - Inhalt
Vergleich von Delphi und Visual C++ - Inhalt
Vergleich von Delphi und Visual C++ - Inhalt
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>Vergleich</strong> <strong>von</strong> <strong>Delphi</strong> <strong>und</strong> <strong>Visual</strong> <strong>C++</strong> - Kapitel 2C<br />
2.3.6.7 Friends<br />
Durch "Friend"-Deklarationen lassen sich in <strong>C++</strong> Zugriffseinschränkungen einer Klasse für ausgewählte Funktionen oder Klassen<br />
deaktivieren. In Object Pascal existiert ein implizites Friend-Modell, bei dem automatisch alle Klassen "Fre<strong>und</strong>e" sind, die innerhalb einer<br />
Unit implementiert sind.<br />
Durch die expliziten <strong>und</strong> impliziten Fre<strong>und</strong>schaften wird die Klassen-Kapselung aufgehoben <strong>und</strong> somit bewußt ein elementarer Gr<strong>und</strong>satz<br />
objektorientierter Entwicklung unterlaufen. Andererseits ermöglichen es Fre<strong>und</strong>schaften oftmals, daß Klassen klein <strong>und</strong> einfach gehalten<br />
werden können.<br />
V<strong>C++</strong><br />
Object Pascal<br />
class A{<br />
friend class B;<br />
// Klasse B ist<br />
// Fre<strong>und</strong> <strong>von</strong> A<br />
private:<br />
int TopSecret;<br />
};<br />
class B{<br />
public:<br />
void WeiseZu(A* ObjA);<br />
};<br />
void B::WeiseZu(A* ObjA)<br />
{<br />
ObjA->TopSecret = 7;<br />
// B hat Zugriff auf<br />
// private Daten <strong>von</strong> A<br />
};<br />
void main()<br />
{<br />
A* Obj1 = new A;<br />
B* Obj2 = new B;<br />
Obj2->WeiseZu(Obj1);<br />
type<br />
A = class<br />
private<br />
TopSecret: Integer;<br />
end;<br />
B = class<br />
public<br />
procedure WeiseZu(ObjA: A);<br />
end;<br />
procedure B.WeiseZu(ObjA: A);<br />
begin<br />
ObjA.TopSecret := 7;<br />
// B hat Zugriff auf<br />
// private Daten <strong>von</strong> A<br />
end;<br />
var Obj1: A; Obj2: B;<br />
begin<br />
Obj1:= A.Create;<br />
Obj2:= B.Create;<br />
}<br />
delete Obj1;<br />
delete Obj2;<br />
Obj2.WeiseZu(Obj1);<br />
Obj1.Free;<br />
Obj2.Free;<br />
end.<br />
http://ourworld.compuserve.com/homepages/praxisservice/kapit2c.htm (26 of 33) [19.05.2000 15:30:15]