Solución

@maiquez·9/9/2026TypeScript
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
Respuestas

Aún no hay respuestas

¡Sé el primero en responder!

Escribir un comentario

Recuerda ser amable. Estás comentando la solución de otra persona. Comparte tu perspectiva de forma constructiva y respetuosa.

Debes iniciar sesión para publicar un comentario.