added abstract shape class and use of Shape *[]