Vererbung ...


... ein wichtiges Prinzip des Objekt Orientierten Programmierens.

Zum Beipiel der Viewer von Übung 10 und 11 ist als Klasse definiert, welche den SoXtWalkViewer von Inventor erbt, und noch zusätzliche Felder und Methoden hat.

In der Definition der Klasse kommt nach dem neuen Namen ein ":" und dann eine oder mehrere Klassen von denen geerbt werden soll.

Klassen können als public oder protected geerbt werden. Public heisst, dass auf ihre Felder und Methoden wie in der Klasse definiert zugegriffen werden kann, protected hingegen, dass auf public Felder und Methoden dieser Klasse von aussen nicht zugegriffen werden kann.

class MyViewer : public SoXtWalkViewer 				
{								
    public:						
        MyViewer(Widget parent = NULL);
        ~MyViewer();
         
    protected:							
    	void		deSelector();				
	static SbBool	processEvent(void *, XAnyEvent *);	
    	static int 	mode;					
    	static int	MouseX, MouseY;				
    	MyBitmapButton  *buttonList[10];			
    	virtual void	createViewerButtons(Widget parent);	
    	static void     myLeftButtonCB(Widget, int, 		
				       XmAnyCallbackStruct *);
    	void            movPushCB();				
    	void            rotPushCB();				
    	void            chairPushCB();				
	void            threePushCB();				
    	void            studentPushCB();			
};

Constructor und Destructor können nicht vererbt werden. Sie können aber so definiert werden, dass sie den Constructor/Destructor der Superklasse aufrufen.

In diesem Beispiel ruft der Constructor von MyViewer den Constructor von SoXtWalkViewer auf und anschliessend noch zwei weitere Funktionen.

MyViewer::MyViewer(Widget parent) : SoXtWalkViewer(parent)	
{        
     this->setEventCallback(processEvent, this);		
     createViewerButtons(parent); 				
}


































This website has been archived and is no longer maintained.