Ejercicios del Capítulo 12
     Volver al índice.
     

     (12 pts) Sección 1:
     
  1. ¿Cuál es la diferencia entre una clase y un objeto?

  2. ¿Cuál es la diferencia entre una función y un método?

  3. Escribe el código para crear una instancia de ésta clase y establecer sus atributos.
     Recuerda no almacenes números como texto. Emplea 40 y no "40" 
     
     class Perro():
         def __init__(self):
             self.edad = 0
             self.nombre = ""
             self.peso = 0

     
  4. Escribe el código para crear dos instancias diferentes para ésta clase y establecer los atributos de ambos objetos.
     Mientras que el teléfono es un número, los otros dos valores debemos guardarlos como texto. De esa forma podemos tratar los ceros
     de los encabezados o los signos como los guiones.
     
     class Persona():
         def __init__(self):
             self.nombre = ""
             self.celular = ""
             self.email = ""
     
  5. Para que el siguiente código se pueda ejecutar, escríbele un nombre de clase y atributos apropiados.
     
     miLoro = Loro()
     miLoro.color = "verde"
     miLoro.nombre = "Lorenzo"
     miLoro.especie = "Agapornis"
     
  6. Define una clase que pueda representar un personaje en un juego 2D. Incluye los atributos para posición, nombre y fortaleza.

  7. El siguiente código funciona, pero no está bien. ¿En qué falló el programador?
     
     class Persona():
         def __init__(self):
             self.nombre = ""
             self.dinero = 0

     nancy = Persona()
     nombre = "Nancy"
     dinero = 100
     

  8. Observa el código siguiente. No funciona. ¿Puedes localizar el error?
     
     class Persona():
          def __init__(self):
             self.nombre = ""
             self.dinero = 0


     bob = Persona()
     print (bob.nombre, "tiene", dinero, "dólares.")
     
  9. Aún corrigiendo el error, el programa seguirá sin imprimir la salida esperada: 
     Bob tiene 0 dólares. 
     ¿A qué se debe esto?

 10. Toma los siguientes objetos y haz una lista con las relaciones ``tiene un(a)'' y ``es un(a)''.
     Por ejemplo, si estuvieras trabajando con una lista diferente, podría ser que extrajeras ``Delfín'' y
     ``Mamífero'' y luego decir ``Delfín es Mamífero.'' Por favor, no utilices objetos que no estén en
     la lista
     
     * Cuenta corriente
     * Persona
     * Cuenta hipoteca
     * Cliente
     * Retirada
     * Cuenta bancaria
     * Número de la Seguridad Social
     * Transacción
     * Dirección
     * Depósito
     
 11. ¿Cómo se implementa en Python una relación ``es un(a)''? Escribe un ejemplo.

 12. ¿Cómo se implementa en Python una relación ``tiene un(a)''? Escribe un ejemplo.

 13. ¿De qué manera trabaja una relación ``tiene una(a)'' si permitimos que un objeto tenga más de un item de un tipo dado?
     Por ejemplo, una clase Cliente podría tener un atributo para cuenta. O sea, un Cliente ``tiene una'' cuenta. ¿Pero, y si el
     cliente tiene dos cuentas? ¿O diez? ¿Cómo almacenas cualquier número de items? Lo vimos en el Capítulo 7. ¿Cómo hacemos que
     un atributo que pueda contener más de uno de un tipo dado?
     
     (10 pts) Sección 2:
     Crea un programa para contestar a las siguientes cuatro preguntas. En él estarán las respuestas a todas esas preguntas.
     Asegúrate que el programa funciona. Luego, copia y pega desde el programa para responder a cada una de las siguientes preguntas.

     El programa deberá empezar definiendo tres clases, una por cada una de las tres primeras preguntas. Luego,
     escribe el código que creará instancias para cada clase, y ésta será la respuesta para el último problema.

     
 14. Escribe el código que defina una clase llamada Animal:
     
     * Añade un atributo para el nombre del animal.
     * Añade un método come() para Animal que imprima ``Chomp chomp.''
     * Añade un método hace_ruido() para Animal que imprima ``Grrr dice [nombre del animal].''
     * Añade un constructor para la clase Animal que imprima ``Ha nacido un animal.''
     
 15. Una clase llamada Gato:
     
     * Hacer Animal la clase padre.
     * Añade un método hace_ruido() a Gato para que imprima ``Miau dice [nombre del animal].''
     * Añade un constructor para Gato que imprima ``Ha nacido un gato.'' y que llame al constructor padre.
     
 16. Una clase llamada Perro:
     
     * Hacer Animal la clase padre.
     * Añade un método hace_ruido() a Perro para que imprima ``Guau dice [nombre del animal].''
     * Añade un constructor para Perro que imprima ``Ha nacido un perro.'' y que llame al constructor padre.
     
 17. Un programa principal con:
     
     * El código para crear un gato, dos perros y un animal.
     * Establezca el nombre para cada animal.
     * El código que llame a come() y hace_ruido() para cada animal. (No te olvides de esto!)