En esta cuarta entrada sobre paradigmas volveremos a hablar de programación imperativa, pero de la mano de la que quizás sea el más renombrado de los paradigmas, la programación orientada a objetos.
Antes de nada, conviene aclarar conceptos como qué es un objeto o una clase así como una amplia .
Objeto:
- Es una instancia que contiene cualidades características (atributos)
- Alberga también ciertos patrones de comportamiento (métodos)
- Puede interactuar con otros objetos.
- Tiene un estado
- Pertenece a una clase.
Clase:
Conjunto de características comunes de un objeto que define su tipo por patrones de comportamiento y propiedades (Una clase puede heredar de otra, siendo la primera una subclase y la segunda su superclase, con la herencia se consigue definir una jerarquía de características que pueden ser más específicas tras la herencia, conteniendo la subclase más especificaciones que la superclase).Método:
Operación susceptible de ser realizada por un objeto de una clase determinada o por su clase en general, cuya ejecución es producto de una orden. En otras palabras, representa uno o varios algoritmos que un objeto puede desempeñar.Atributo:
Conjunto de propiedades de la claseDefinición:
La programación orientada a objetos se basa en el uso de los mismos para la creación de un programa dividiendo el problema y ademas proporcionando mayor eficiencia contando con las siguientes técnicas:Abstracción:
En programación este concepto hace alusión al hecho de prescindir de la necesidad de conocer cómo se realiza un proceso para centrarse en qué procesos desempeña una instancia (objeto) ya sea comunicarse con otras instancias, cambiar su estado, realizar una labor concreta, etc...Ésto nos facilita la construcción de clases que desempeñen funciones preestablecidas y reutilizar el código de manera más eficiente.
Encapsulamiento
- Método por el cual se apela a todos los elementos de una entidad que está al mismo nivel de abstacción aumentando así la cohesión de los componentes del sistema, no debe confundirse con la ocultación pese a que ambios procesos se realizan de forma simultánea.
- Ya tratada en la anterior entrada (Programación modular) la modularidad nos permite la fragmentación del trabajo con el fin de soliviantar la corrección y el desarrollo de código y darle legibilidad y facilidad de mantenimiento.
Polimorfismo
Los patrones de comportamiento pueden denominarse de forma idéntica y ser invocados desde objetos distintos y/o de diferentes tipos y seguirá siendo eficaz para la instancia referenciada, mas, si ésto ocurre durante el "tiempo de ejecución" se conoce como asignación dinámica aunque algunos lenguajes proporcionan una metodología más estática de polimorfismo (plantillas, sobrecarga de operadores etc...)
Herencia
Proceso de cesión de características de una clase a otra por el cual se consigue definir una jerarquía de características que pueden ser más específicas tras la herencia, conteniendo la subclase más especificaciones que la superclase.
Recolección de basura
Método que elimina las instancias que no se referencian y a las que no se les da uso alguno aunque en algunos lenguajes como en C++ u Pascal no existe esta característica y la memoria debe ser liberada de forma explícita.
Conclusión:
En conclusión, si desempeñas un proyecto susceptible a ser trabajado en grupo, deseas aprender de forma sólida programación, y sobretodo te planteas dedicarte a ello laboralmente, por sus ventajas y su uso extendido en esta rama profesional, quizás debieras plantearte empezar así tu instrucción.Fundamentos y ventajas de la Programación Orientada a Objetos:
Curso de Java orientado a objetos:
Videotutoriales de Jesús Conde
(Jesús Conde es una de esas personas que consigue que realmente aprendas programación, explica todo al milímetro y paso a paso, además, propone una serie de retos que ayudan al programador novato a entrar en contacto directo con la programación, involucrando en la práctica a quien decida seguir sus vídeos, no podía faltar éste material en una entrada así)