miércoles, 17 de diciembre de 2014

Programación Orientada a Objetos



Programación Orientada a Objetos (POO)

Hola, en esta oportunidad tratare de explicarles de manera rápida qué es y de que trata la Programación Orientada a Objetos, cabe destacar que esta no es ni pretende ser algún manual didáctico, ya que lo que explico aquí es tomado de mi experiencia personal como desarrollador, algo de la Universidad y algo de un video tutorial que a mí personalmente me encanta: http://goo.gl/suImJD.

Primero sugiero leer, no importa si no entiendes todo de golpe, ya que entender esto de la POO no es fácil y requiere mucha investigación y algunas veladas de digitar código; pero si es muy importante que trates de entender en algo la teoría de la POO ya que de esta manera cuando estés digitando código sepas lo que estás haciendo.

Cualquier duda a las ordenes, y tratare lo más pronto posible de ponerles ejemplos de todo lo se dice en esta publicación.

Que es la Programación Orientada a Objetos POO?

·         Es un paradigma de la programación que acerca la programación a la vida real.
·         Es un cambio en la forma de pensar secuencial a estructurada o genérica.
·         Se basa en la abstracción.

Componentes de un programa en POO

Cualquier programa realizado mediante el paradigma de la programación orientada a objetos POO se compone de: Clases y Objetos.

Clase:

Es la abstracción de un objeto, es como decir el modelo o plano del objeto.
Como ejemplo podemos decir los planos de un auto.          

Objeto

Es la materialización de una CLASE, es decir es hacer “tangible” a la clase.
Se caracteriza por tener:
·         Estado. (Atributos)  - Características.
·         Comportamiento. (Métodos) - Funciones que nos retornan algo.
·         Identidad. (Constantes) – Una variable que no cambia.

Siguiendo el ejemplo de los planos del auto, la construcción de ese auto vendría hacer el objeto, ya que el auto ya es tangible.
Su estado o atributos podría ser: que es de color azul, que tiene cuatro puertas, etc.
Su comportamiento o métodos podrían ser: que enciende, que se mueve, etc.
Su identidad podría ser el número de serie del chasis.

Características de la programación orientada a objetos POO.

Estas características son los que hacen de la POO tan útil.

Abstracción:

Abstracción es abstraer las cualidades más importantes de algo o alguien.
La abstracción debe ser implementada por el programador ya que no es una característica de la POO, quedando ante el desarrollador la responsabilidad de aplicarla de una manera eficiente.
La abstracción nos ayuda a programar de manera genérica, mientras más abstracción exista en el código más escritura del mismo nos ahorraremos.
Por ejemplo si queremos abstraer algo de una persona, no vamos a abstraer sus dos nombres y dos apellidos, lo más óptimo sería abstraer su nombre, su apellido y una característica importante de la persona.

Encapsulamiento:

EL encapsulamiento permite ocultar diferentes métodos o variables, es decir evita que estos métodos o variables sean modificados por quien no tenga derecho a acceder a ellos; en java se usa  para encapsular se usan los siguientes modificadores: public, prívate y package

Polimorfismo:

De manera rápida podemos decir que polimorfismo significa que puede tomar varias formas.
El polimorfismo puede ser llevado a cabo de las siguientes formas:
·         Sobrecarga: Utilizada en métodos y constructores, es decir con un mismo método podemos realizar diferentes funciones.
·         Sobre escritura: No confundir con sobrecarga, la sobre escritura consiste en volver a definir el cuerpo de un método heredado, la mayoría del tiempo las clases hijas sobre escriben los métodos de una clase padre para agregar o modificar la funcionalidad del método heredado.
·         Ligadura dinámica.

Herencia:

Significa que nosotros podemos “copiar” en una clase “hija” todas las variables y métodos de una clase ya creada llamada “padre” o superclase.
Por ejemplo podemos decir que nosotros tenemos ya creada una clase Calculadora, y que ahora necesitamos crear una nueva clase llamada CalculadorCientifica; sabemos que la nueva clase va a hacer  lo mismo que la clase Calculadora, con la diferencia de que la nueva clase tiene un nuevo método llamado calculoEcuaciones; entonces para no escribir nuevamente el código de la clase padre Calculadora, la clase hija CalculadorCientifica lo único que hace es heredar todo lo que necesite de la clase padre y aumentar su método.



Modularidad:

Se denomina modularidad a la propiedad que permite que el código fuente de un objeto pueda ser escrito y mantenido independiente del código fuente de otros objetos, con esto logramos que el código sea fácil de dar soporte y de reusar.

Saludos:
Fernando