miércoles, 27 de junio de 2012

Programación: Características de la Programación Orientada a Objetos.

Como ya dije hace unos dias hay algunas cosillas que tenia que explicar de POO que, si entendemos nos van a ayudar a hacer nuestros programas más eficientes y a picar código de forma más rápida.

Abstracción, Encapsulamiento, Modularidad, Herencia y Polimorfismo.

Son estas las características que voy a tratar de explicar (lo mejor que pueda).

Abstracción

Cuando vamos a aplicar la POO, intentamos usar la norma de "Divide y Vencerás". Es decir, lo que hacemos es dividir nuestro código en grupos más pequeños que, al unirlos, realizarán la tarea más compleja que buscabamos desde el principio. Básicamente es esto: la capacidad de separar los elementos (al menos mentalmente) para poder verlos de forma más simple.

Encapsulamiento

El hecho de tener una clase nave, con un código en el que hay definidos unos atributos y unos métodos y poder pasarsela a otro programador para que pueda usarla sin saber como esta hecho ese código es el Encapsulamiento. No nos interesa como se ha hecho, si no que ya esta la clase lista y puede usarse sin conocer su funcionamiento interno. Es como si encerraramos todo en una cajita y no viesemos lo que contiene pero, a pesar de esto, pudiesemos hacerlo funcionar.

Herencia

Para mí la más importante y, se trata de la capacidad que tienen las clases y objetos de tener descendencia. ¿Y que es esto de la descendencia? Pues que si nuestra clase tiene unos atributos y metodos, la clase hija de esta podrá heredar estos mismos e incorporar también los suyos propios, evitando tener que escribir varias veces el mismo código. Además esta clase hija podrá tener descendientes creandose una jerarquia de hijos, nietos, etc.

Por ejemplo: Tenemos la clase nave que tiene un atributo que le da el color y la podemos usar para crear una clase nave_protagonista, que ya tendrá el atributo color de la clase padre y podemos añadirle otras caracteristicas como podrían ser velocidad (que no tendría la clase nave pero si la nave_protagonista).

Modularidad

Se trata de la capacidad de organizar el código para no tener que repetir mil veces las mismas acciones. Si nuestra clase tiene una acción para hacer que la nave dispare, podemos usar ese mismo código llamandolo desde distintas partes de nuestro programa para que se dispare sin tener que escribir varias veces el código que indica como se dispara.

Polimormismo

Se trata de que comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre. Esto se suele conseguir con métodos que tienen el mismo nombre pero reciben distintos parámetros cuando son llamados (y que se denominan métodos sobrecargados).


¿Un poco complicado verdad? Pero cuando te vas encontrando con las diferentes situaciones según aprendes a programar, se entiende un poquito mejor cada cosa, o al menos la idea de su funcionalidad. Con el tiempo, el programador se estará beneficiando de todas estas características para hacer más rápido y eficiente su trabajo. Poco a poco, que uno se explica lo mejor que puede y no es facil :P

No hay comentarios:

Publicar un comentario