I have a queue that holds a list of objects with a common base type. As
a simple and contrived example, I have a common type of transportation
methods and derived classes (with there own individual methods which
extend the common base class) of Car, Bicycle and Plane:-
class Car : Transport { OpenWindow(); }
class Bicycle : Transport { RingBell(); }
class Plane : Transport { TakeNap(); }
I want to add each of these classes to the buffer. So I can enqueue
with:
Queue transportQueue;
transportQueue.Enqueue(MyCar);
transportQueue.Enqueue(MyBicycle);
transportQueue.Enqueue(MyPlane);
Now this is where I have got concerns. When I dequeue I do not know
what type has been dequeued.
Transport transportMethod;
transportMethod = (Transport) transportQueue.Dequeue();
When I dequeue, I know that it is a transport class but I do not know
if it is a Car, Bicycle or Plane.
I suppose I could use:
switch (typeof(transportMethod))
{
case Car:
break;
case Bicycle:
break;
case Plane:
break;
}
But this does not seem very Object Oriented and not very maintainable.
Is there a better way of doing this?