replaces

replace erstellt eine neue Klasse, die von einer anderen Klasse abgeleitet wird und verbietet anschließend die Verwendung der zu ersetzenden Klasse. Fremde Funktionen Autos als Parameter verlangen, aber man selbst darf keine Cars mehr anlegen (oder als Rückgabeparameter erhalten). Erlaubt ist aus einem Car über einen expliziten Construktor ein Auto zu machen.

replaces bekommt als Argumente die gewünschten Namensräume/Klassen, für die Replace gilt.

require Car;

createCar is Code := return Car( "Audi" );

ns is static class{} = { de.xsd, org.proggen, pro.genesys.classname }

Auto replaces( ns & com.atrops.testclass ) Car contains
{
  string UserData;
  
  construct( Car, UserData )
};

c is Car; // Fehler
a is Auto; // Ok

a = Auto( createCar(), "Meine Daten" ); // createCar liefert ein Car, es kann aber keine Car-Variablen geben.

siehe