- Por Giulio Perrone
- ·
- Publicado 17-abr-2023 10:18:38
Hechizo
Historia: Durance ha encontrado un libro de magia en una de sus aventuras y ha decidido aprender a encantar sus armas. Debido a la naturaleza..
En informática, una pila o stack es un famoso tipo de datos abstracto que proporciona ciertas operaciones sobre una colección de elementos. Las pilas tienen una larga historia, que se remonta a los primeros programas informáticos y se documentó por primera vez en 1946.
Aunque puede que nunca necesites construir una pila, probablemente interactúes con una en tu programación diaria en forma de 'pila de llamadas' o call stack, por lo que parece un concepto importante que aprender.
Construir pilas también nos da la oportunidad de practicar nuestros primeros pasos en el desarrollo basado en pruebas, TDD.
Para esta kata, construye una pila que soporte las siguientes operaciones:
Al crear estas operaciones, piensa primero en la forma más sencilla de hacerlo. No te decantes por lo que crees que podría ser la implementación definitiva de inmediato.
Estos son algunos detalles importantes que debes tener en cuenta al construir tu pila. Incluso podrías pensar en ellos como requisitos iterativos junto con tus operaciones:
Es posible que reconozcas uno de estos requisitos como el origen de la famosa frase "Stack Overflow" (desbordamiento de pila), que también es el nombre de un sitio web que probablemente consultes a diario.
Cuando hayas terminado de construir tu pila y si quieres profundizar un poco más, prueba lo siguiente.
Tu pila actualmente tiene protección para una capacidad de 0. Esto también se conoce como 'pila nula' y una pila con más de 0 se conoce como 'pila delimitada'. ¿Realmente necesitas todo ese otro código si recibes la petición de crear una pila nula?
En programación hay formas de proporcionar un comportamiento fijo para situaciones conocidas. Por ejemplo, sabes que una pila nula estará siempre vacía, siempre se desbordará cuando se intente un push y siempre se reducirá cuando se intente un pop.
Instrucciones
Si el lenguaje que utilizas admite polimorfismo, inventa una forma de actualizar la creación de una pila, de modo que cree una pila nula o acotada en función de la capacidad solicitada. Entonces podrás añadir sólo el código que necesites para cada situación. Tus pruebas deberían seguir siendo las mismas, pero el comportamiento subyacente habrá cambiado.
Ayuda
Hay más lenguajes compatibles con el polimorfismo de lo que crees. Los lenguajes tipados estáticamente como C# y Java proporcionan polimorfismo seguro automático, evitando que te líes con la memoria y haciendo uso del subtipado. En un lenguaje como C, que te permite controlar las referencias de memoria, puedes hacer polimorfismo usando punteros de funciones. Incluso se puede hacer polimorfismo en un lenguaje de tipado dinámico como JavaScript y Python, ¡simplemente los tipos están ocultos!
Si sigues atascado y estás confundido con todo esto del polimorfismo, puedes encontrar un ejemplo de cómo resolver este requisito en Java aquí, pero sólo míralo si lo has intentado tú mismo.Historia: Durance ha encontrado un libro de magia en una de sus aventuras y ha decidido aprender a encantar sus armas. Debido a la naturaleza..
Resumen Esta kata es bastante avanzada, por lo que recomendamos que intentes resolverla una vez que hayas practicado TDD con otras katas más fáciles.
Introducción Con el propósito de practicar TDD, esta es una de las katas más avanzadas que puedes hacer. A estas alturas ya deberías dominar las..
Suscríbete a nuestra newsletter para que podamos hacerte llegar recomendaciones de expertos y casos prácticos inspiradores