Neulich begegnete mir doch das sog. PIMPL-Idiom in C++. Dabei wird im Wesentlichen die Implementierung einer Klasse nach außen hin versteckt. Das PIMPL-Idiom gibt es übrigens auch unter ADA.

In C++ sieht es so aus:

class FooImpl;

class Bar {
private:
	FooImpl* foo;

public:
	Bar() : foo( new FooImpl() ) {}
	virtual ~Bar() { delete foo; }
};

Die Implementierung der Klasse FooImpl wird hier versteckt, sie ist in einer anderen Datei (ohne Header-datei) implementiert. Dadurch kann ein Client der Klasse Bar keinen Zugriff auf den Inhalt der Klasse FooImpl nehmen und auch nicht “herumtricksen”, weil der Programmierer ja “weiß” wie die Klasse FooImpl “tickt”.

Siehe auch: