Hola a todos!
Con vuestro permiso, me gustaría añadir algo más sobre la duda de Papipanchi. Voy a decir básicamente lo mismo que ha dicho Ogramar en su último post, pero utilizando un ejemplo, a ver si así queda más claro.
Papipanchi, imagina que ya hemos creado un objeto "Rueda" y sus atributos ya están establecidos, todos tienen un valor asignado distinto de cero o "vacio". Bien, ahora imagina que un tiempo después de haberse creado dicho objeto necesitas saber, apartir de su diámetro, que tipo de rueda es. Tal y como has planteado tu método set, estos serían los pasos que tendríamos que dar:
1º Invocar el método getDiametro(), puesto que como hace tiempo que creamos el objeto "Rueda", ya no recordamos el valor del diámetro.
2º Apuntar dicho valor o guardarlo en alguna variable nueva... es decir, memorizarlo.
3º Volver a asignar el mismo valor al diámetro del objeto "Rueda" mediante el método setDiametro(), para que al asignarlo nuevamente nos informe del tipo de rueda con el que estamos tratando.
Como ves es un tanto engorroso y redundante, al tener que volver a reestablecer el valor del diámetro, ir por esta vía. Sin embargo, si creamos un método comprobarDimensiones(), estos serían los pasos a dar:
1º Invocar el método comprobarDimensiones()... y ya está
.
Tal vez estes pensando: bueno, yo puedo hacer la comprobación en el método setDiametro() y después crear el método comprobarDimensiones(). Una cosa no quita la otra, ¿no?. Pero esto seria redundante porque estaríamos duplicando código innecesariamente.
¿Qué opciones tienes para realizar la comprobación automática del diámetro? Puedes crear el método comprobarDimensiones() y llamarlo dentro del método setDiametro(), pero esto no es "elegante", no es un diseño correcto por las razones que te ha indicado Ogramar, aunque si funcional. Tal vez lo más correcto es llamar al método setDiametro() y justo después al método comprobarDimensiones(), en el punto del código en el que te es necesario establecer el diámetro. Incluso podrías crear un bucle while que no permita salir del mismo hasta que el diámetro tenga un valor adecuado para cada situación.
!Hay que compartimentar
! Cada función o método debe tener su objetivo. Divide y vencerás. Esto nos permite crear códigos claros, limpios y versátiles.
Un saludo!