===== array classes ===== Unter einer Arrayklasse verstehe ich einen Datentyp, der parallel verlaufende Arrays managed. Dabei ist ''Segments'' die Array-Klasse und ''Segment'' ein Handle, dass lediglich Referenzen (ref) enthält. Segment contains { public parallel ref: StartPoint has Point; TargetPoint has Point; public copy: Color; bool isInvalid() { return StartPoint == TargetPoint; } construct( StartPoint ); }; Segments parallels Segment {} // hier handelt es sich nicht um eine Ableitung, sondern Segments wird zu eine Containerklasse, die für parallele Elemente von Segment ein Array aufbaut. contains { public: Color; // Farbe aller Segmente - hierauf wird keine Referenz gebildet, da kein ref public construct( Point {} as StartPoint, Color ) { foreach( Segment s in this ) // ein Segment ist ein Element der Array s.TargetPoint = s.StartPoint; } }; sa as Segments( { Point( 1, 2, 3 ), Point( 4, 5, 6 ) }, Color::Red ); s as sa[0]; // implizite Deklaration als Segment s.isInvalid then print( "Start und Endpunkt sind gleich\n" ); s ist ein Handle, dass eine Referenz auf Startpunkt[0] von sa hat, eine Referenz auf Tartgetpunkt[0] von sa hat und eine Kopie von Color. ===== listed classes ===== Segments parallels Segment [] verwendet hierbei Listen statt Arrays