abstract class Shape