Solución
solution.tsTypeScript
import math
class Shape:
# Agrega aquí el classmethod factory que crea la subclase correcta
@classmethod
def create(cls, shape_type, value) -> "Shape":
if shape_type == "circle":
return Circle(value)
elif shape_type == "square":
return Square(value)
else:
return None
def area(self) -> float:
return 0.0
class Circle(Shape):
def __init__(self, radius: float) -> None:
# Guarda el radio
self.radius = radius
def area(self) -> float:
# Retorna el área del círculo
return (round(math.pi*(self.radius*self.radius), 2))
class Square(Shape):
def __init__(self, side: float) -> None:
# Guarda el lado
self.side = side
def area(self) -> float:
# Retorna el área del cuadrado
return (self.side * self.side)
def create_shape(shape_type: str, value: float) -> dict:
# Usa Shape.create para obtener la instancia y retorna {"type": ..., "area": ...}
new_shape = Shape.create(shape_type, value)
return {"type": shape_type, "area": new_shape.area()}0respuestas