POO ejercicios selectos (C++).

1.- En el Ejemplo Parvulo3 se hizo referencia a la invocación del mensaje "obten_nombre" (línea 27) dentro del método "mensaje( )". Cambie el método "obten_nombre( )" por el atributo "nombre" y compruebe lo descrito en el blog en la entrada POO (mensajes y métodos).
2.- Considere el Ejemplo Parvulo3 ¿Qué sucede si en lugar de acceder al atributo "nombre" por medio del método "obten_nombre( )" (líneas 34 y 36) se intenta acceder directamente al atributo a través del operador punto (.) como se hace para enviar mensajes a los objetos? Para probar lo anterior cambie la expresión: "parvulo.obten_nombre( )" por la expresión: "parvulo.nombre" recompile y analice lo que sucede.
3.- Modifique el Ejemplo Parvulo3 para que genere más de un objeto de la clase parvulo3, de tal forma que tenga un conjunto de al menos tres (objetos) párvulos. Para los objetos creados defínales una identidad a cada uno de los (objetos) párvulos instanciados por medio de la asignación de un nombre distinto a cada uno de ellos, envíeles mensajes, experimente y juegue con ellos; recuerde que sus objetos son, al fin y al cabo, niñ@s pequeñ@s.
4.- Para el Ejemplo Parvulo4 defina y añada un constructor sin argumentos, de tal forma que la labor del constructor sea definir su propio nombre (el nombre del lector) al atributo "nombre". Modifique en consecuencia la función main para que haga uso del constructor recién definido y pueda así comprobar su funcionamiento.
5.- La entrada POO (mensajes y métodos) abordó el tema de la sobrecarga y ejemplificó dicho concepto utilizando sobrecarga de constructores. La sobrecarga de métodos es análoga a la de constructores. Modifique el Ejemplo Parvulo5 para que implemente la sobrecarga de métodos de la siguiente manera:
  • Defina un nuevo método con el siguiente prototipo:
    • void parvulo5::mensaje(string m);
    • La responsabilidad del nuevo método "mensaje" será la de imprimir en la salida estándar la leyenda "Mensaje recibido" seguido de la cadena representada por m.
  • Realice las modificaciones correspondientes a la función main para comprobar el funcionamiento de todos los métodos, especialmente el método "mensaje( )" recientemente sobrecargado.
6.- Considere el Ejemplo Parvulo5 y modifíquelo para que, en lugar de uno, defina tres atributos de la clase string: nombre, apellido1, apellido2 y con base en lo anterior:
  1. Agregue el método set correspondiente para cada uno de los atributos con base en lo descrito en el blog.
  2. Agregue el método get correspondiente para cada uno de los atributos con base en lo descrito en el blog.
  3. Agregue un constructor para que sea posible construir un objeto (párvulo) utilizando únicamente el nombre y el primer apellido.
  4. Modifique el método "mensaje" para que, en caso de que alguno de los atributos del objeto en cuestión esté en blanco, dicho atributo sea ignorado y en consecuencia, no se imprima en la salida estándar.
  5. Modifique la función main para que demuestre tanto el funcionamiento de todas las posibles opciones de construcción de objetos, como el adecuado funcionamiento de los métodos de tipo set y get, así como el método "mensaje".
  6. Modifique la función main para que pida los datos (nombre, apellido1 y apellido2) desde la entrada estándar, y que con éstos se modifique los datos de un objeto determinado.
7.- El Ejemplo Herencia tiene la línea 180 comentada por lo que el compilador la ignora. Si la des comenta ¿qué piensa que sucederá?, ¿compilará?, ¿se ejecutará?, ¿imprimirá algo en la salida estándar?, ¿fallará la ejecución? Después de analizar el programa responda dichas preguntas y corrobore su respuesta con la experimentación.
8.- Modifique el Ejemplo Herencia para que la clase "persona" contenga más atributos; es decir, para que las características de una persona estén más completas (por ejemplo el RFC). No olvide agregar métodos de tipo set y get por cada uno de los atributos que añada. En este sentido, incorpore también los siguientes cambios:
  • Cambie el atributo "nombre" por una distribución más convencional:
    • nombre.
    • primer apellido.
    • segundo apellido.
  • Agregue un atributo que represente la dirección o domicilio.
  • Agregue un atributo que represente el sexo: femenino o masculino, según sea el caso.
  • Después de lo anterior:
    • Compruebe el adecuado funcionamiento de la clase persona respecto de las modificaciones recién hechas. Asegúrese de comprobar que los métodos de tipo set y get trabajan de la manera esperada.
    • Compruebe que con los cambios realizados a la clase persona los aspectos relacionados con la herencia de la clase científico siguen funcionando sin ningún tipo de problema.
    • Modifique la clase científico de manera análoga, y compruebe también que el mecanismo de la herencia permanece inalterado. Para esta clase agregue dos atributos (y sus correspondientes métodos de acceso):
      • Institución o lugar donde labora.
      • Grado de estudios.
    • Agregue nuevas acciones, comportamientos o responsabilidades a las clases persona y científico, y asegúrese de probar su adecuado funcionamiento. No olvide experimentar con los conceptos de sobrecarga y sobre escritura.
  • Considere el atributo RFC. Este atributo no debería ser modificado con cualquier información, por lo que un método del tipo set no sería recomendable. Para este tributo considere más bien:
    • Definirlo con base en la información de una persona (investigar cómo se genera el RFC):
      • Primer apellido.
      • Segundo apellido
      • Nombre (s).
      • Fecha de nacimiento.
      • Solicitar la homoclave desde la entrada estándar.
9.- Construya un ejemplo completamente diferente al visto en el blog, en donde ponga de relieve los conceptos de envío de mensajes, herencia, polimorfismo, encapsulamiento y ocultación de información. Puede apoyarse de alguna jerarquía de clases que sea de su interés o preferencia.

10.- Defina la clase fecha. Para este ejercicio:
  1. Determine los atributos que debe tener una fecha.
  2. Escriba los métodos del tipo set y get para modificar y acceder respectivamente a los atributos de la clase.
  3. Piense también en el comportamiento mínimo que debería tener dicha clase e impleméntelo mediante los métodos correspondientes, como por ejemplo el método string fecha::obtener_fecha( ).
  4. Escriba también un método (void fecha::dia_siguiente( )), de tal forma que cuando un objeto de la clase fecha (por ejemplo "aniversario") reciba el mensaje correspondiente (aniversario.dia_siguiente( )), el método deberá modificar los atributos pertinentes para generar la fecha del día siguiente al que actualmente se refiere el objeto "aniversario". Tome en consideración que hay meses con 31 días (enero, marzo, mayo, julio, agosto, octubre y diciembre) y otros con 30 (abril, junio, septiembre y noviembre). No olvide tomar en cuenta los años bisiestos para el mes de febrero.
        Asegúrese de probar el funcionamiento de los métodos descritos y el comportamiento adicional que haya definido para los objetos de la clase fecha.
 

No hay comentarios.:

Publicar un comentario