26/07/2011, 15:56
|
| | | Fecha de Ingreso: julio-2008 Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 5 meses Puntos: 416 | |
Respuesta: Virtudes de la poo Entre los beneficios de la programación orientada a objetos se encuentra la reusabilidad de codigo y fácil mantenimiento.
Ahora que recién empiezas no podrás ver las ventajas que te ofrece, pero con el tiempo las veras.
Te puedo poner un ejemplo de uno de los libros que tengo, Head First Java.
A dos programadores le dan la tarea de crear un "juego" donde se tendrán 3 figuras geométricas y se le debe de agregar las capabilidades de poder rotar las figuras y también que cada figura reproduzca un sonido.
El primer programador utiliza programación estructurada (o procedural) y comienza haciendo 2 funciones.
Una de rotarPieza y otra de reproducirSonido, que es lo que haría cualquier persona.
Ahora bien, el otro programador, que utiliza POO crea una clase llamada Figura con dos metodos, rotar() y reproducirSonido(). Luego crea 3 clases que heredan de la clase Figura*, llamadas Cuadrado, Triangulo, Hexagono.
Desde un punto de vista dirás: ¿Para que me ayuda la POO si lo unico que hizo la otra persona fue escribir mas código que el otro?
Viene lo incomodo ahora. Cuando ambos entregan el trabajo, el jefe decide que quiere agregar una pieza mas en forma de ameba.
El primer programador, tuvo que cambiar el código ya existente para poder agregar esa nueva función al programa, mientras que el programador OO solo tuvo que crear una clase nueva llamada Ameba que tambien hereda de la clase Figura.
Cuando vuelven y entregan el proyecto, el jefe les dice que no es asi como debe de rotar una ameba.
Ambos programadores habían tomado el punto medio de la figura y la rotaron en base a eso. Sin embargo, el jefe indica que la deben rotar desde una esquina, solo la ameba.
El primer programador, nuevamente tuvo que tocar código que ya había creado anteriormente y poner un montón de if para agregar que la ameba rotara desde un punto diferente (ya te imaginas la cantidad de codigo y el desorden).
Mientras que el programador OO solo tuvo que sobreescribir el método rotar en la clase Ameba y cambiar el punto de eje hacia la esquina.
Al final, el programador OO trabaja menos. Cuando se tiene que agregar una nueva función a un programa ya existente, si esta bien diseñado usando OO, tendrás que tocar el menor código posible para hacer los cambios. Mientras que con la programación estructurada, te arriesgas a tocar código ya existente que estaba funcionando y poder agregar bugs que no estaban.
Claro, no es tan fácil de entender el ejemplo cuando no puedes verlo con imágenes. *La herencia es una de las tantas funcionalidades de la POO. |