Autor Tema: Ejercicio CU00630B# diferencia entre métodos función y procedimiento java  (Leído 8100 veces)

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Hola. En el ejercicio CU00630B. Esquema de la clase  DiscoMusical
------------------------------------------
Clase DiscoMusical

   0 Constructor DiscoMusical ( )

   1 Función public float dimeDuracionCancion ( int valorNumeroCancion )

   2 Procedimiento public void saludaAndSolicitaDiezCancionesConSuDuracion ( )

   3 Función public float dameDuracionTodasLasCanciones ( )

   4 Procedimiento public void añadeNuevaCancion ( int numeroNuevaCancion, String tituloNuevaCancion, float minutosNuevaCancion )
-----------------------------------------

Saludos.
« Última modificación: 18 de Junio 2015, 15:07 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Ejercicio CU00630B
« Respuesta #1 en: 16 de Junio 2014, 14:03 »
Hola, está bien respondido. Como observaciones las posibles mejoras en CU00630 serían:

Usar: 2 Procedimiento saludaAndSolicitaCancionesConSuDuracion ( )

en vez de: 2 Procedimiento saludaAndSolicitaDiezCancionesConSuDuracion ( )

Motivo: el disco no tiene por qué tener diez canciones necesariamente.


usar: Procedimiento añadeNuevaCancion ( String tituloNuevaCancion, float minutosNuevaCancion )

en vez de: Procedimiento añadeNuevaCancion ( int numeroNuevaCancion, String tituloNuevaCancion, float minutosNuevaCancion )

Motivo: el enunciado indica que la nueva canción se añadirá como última canción. La clase guarda información de cuántas canciones tiene, con lo cual no es necesario indicarle el número, simplemente la colocará en última posición.

Saludos
« Última modificación: 10 de Septiembre 2014, 08:04 por Alex Rodríguez »

Omar Ayax

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
Hola, actualmente me estoy leyendo el curso de Aprender programación java desde 0; y me tope con la respuesta del ejercicio CU00630B, donde esbozan el esquema de lo que vendría siendo la respuesta, mi duda tiene que ver con que a la hora de generar el codigo del esquema antes descrito, habría que generar las funciones de tipo procedimiento para cada uno de los atributos o como tal uno solo como viene ejemplificado en el esquema:

Procedimiento añadeNuevaCancion ( String tituloNuevaCancion, float minutosNuevaCancion )

Me queda la duda, ya que durante lo que he leído del curso, es mejor crear un metodo por cada acción a realizar.

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 989
    • Ver Perfil
Hola Omar.

El ejercicio pide:
Citar
4) Añadir una canción al disco recibiendo como información para ello el título de la canción y su duración (se añadirá como última canción en el disco. Si el disco tenía por ejemplo 10 canciones, al añadirse una canción pasará a tener 11).

Aquí la acción es AÑADIR una canción. Y para poder añadirla necesitas título y duración, así que lo ideal es indicar esos dos datos en el mismo método.

Realmente no hay una norma obligatoria a seguir, al final el programador decide como hacer las cosas en cada situación y siempre buscando la forma más óptima.

Se podría hacer un método para añadir la canción solo con el nombre. Y luego otro para modificar ese registro recién añadido para ahora sí incluir el tiempo de duración.
Pero, ¿tiene sentido realizar dos acciones cuando se puede obtener el mismo resultado realizando una única acción?

Al final el programa va a funcionar igual, pero es más óptimo y eficiente reducirlo a una sola acción, cuando se trata de algo que esta tán relacionado entre sí. A fin de cuentas, la acción es añadir una canción con sus datos completos, no es añadir un nombre y luego añadirle la duración.

Lo de realizar un método para cada acción se refiere a acciones que no están tan relacionadas entre sí. Entonces sí conviene "modular" el código y separarlo en varios métodos.

Imagina un programa que ha de pedir datos de un alumno, comprobar que el DNI es válido, recuperar sus notas de una base de datos, calcular la nota media y por último imprimir en pantalla sus notas indicando si está aprobado o suspenso.

¿Tendría sentido hacer un método llamado: ?

Procedimiento pedirDatosALumnoComprobandoDniRecuperaNotasdeBaseDatosCalculaNotaMediaImprimeNotasEnPantallaIndicandoSiAprobadoOSuspenso();

Pufff... no solo es el nombre más horrible jamás escrito para un método, sino que a parte de eso, este método hace demasiadas cosas "distintas".
Indudablemente hay que modular, de hecho, hay cosas que solo hará si se cumplen ciertas condiciones.
Por ejemplo, si por error nos han dado un DNI que no es válido, ya no se va a buscar nada en la base de datos, ni se van a calcular medias, ni nada..

Habrá que separar en métodos:
  • void pedirDatosALumno();
  • boolean compruebaDNIesValido(String dni);
  • float[] recuperaNotasdeBaseDatos(String dni);
  • float calculaNotaMedia(float[] arrayDeNotas);
  • void imprimeNotasPantalla(float[] arrayDeNotas, float notaMedia);

Este último método por ejemplo, se podría hacer en dos métodos: uno para imprimir las notas y otro para a continuacion imprimir solo la nota media e indicando si está aprobado o no.
Y sería perfectamente válido.
Pero al ser cosas que sí están más relacionadas, todo tiene que ver con las notas del alumno, seguramente el programador va a preferir hacerlo todo junto en un único método.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".