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