>Hi boys & girls ---
>
>Another design abstract problem. Let us say that we have a class called Airplane that's parent class is Vehicle. All Vehicles derived classes Move. How they move is quite different: Airplanes fly, Cars drive, and Rowboats are rowed. Which of the four approaches are taken:
>
>1) The Vehicle superclass has Fly,Drive,and Row methods. The implementation of these methods is at either superclass or class level.
>
>2) The Vehicle supports a Move method. The subclass defines Move as appropriate and returns a value indicating it flew,drove, or was rowed.
>
>3) The subclasses have Fly, Drive, and Row methods as apppropriate; no Move or move specific methods are defined in the Vehicle superclass.
>
>4) We have *no* Vehicle superclass and each subclass of Airplane, Rowboat, and Car is it's own superclass.
>
>I currently strive for option 2 and used to use 4. Comments?
I would vote for option 2.
But your Vehicle class should be of Container type.
vhlCar.Init()
this.AddObject("DriveTrain","engInternalCombustion", 6, V )
this.AddObject("brkDisc","brkBrake", 2 )
this.AddObject("whlWheel","whlCar", 4, 14 )
vhlCar.Move(1)
lparameter tlWhere
local llReturn
IF this.brkDisc(0)
llReturn = this.DriveTrain(tlWhere)
ENDIF
RETURN llReturn
And don't forget to set vhlCar.WhereTo property... :)
Nick Neklioudov
Universal Thread Consultant
3 times Microsoft MVP - Visual FoxPro
"I have not failed. I've just found 10,000 ways that don't work." - Thomas Edison