Programación Orientada a Objetos

Esta entrada es de un blog que tengo desde hace años, y que apenas empecé de nuevo a retomar. Espero pueda servirles.

El día de ayer jueves 2 de abril del presente año, un compañero y amigo de la universidad me estaba preguntando qué era un objeto.

Hace tiempo publiqué a diferencia entre la programación Orientada a Objetos y Estructurada.

Haciendo memoria, o repaso, diremos que la programación Orientada a Objetos utiliza clases que poseen atributos y métodos que definen a un objeto en su forma de actuar o de presentarse.

"Object-oriented programs are often easier to understand, correct and modify."

La programación Orientada a Objetos es a menudo más fácil de entender, corregir y modificar, contrario a la programación Estructurada. Veamos un caso sencillo de estudio.

Supongamos que tenemos una aplicación que nos permite calcular funciones trigonométricas, exponenciales, derivadas, integrales, sumatorias, entre otras (una calculadora científica) y que dicha calculadora presenta una falla a momento de realizar las operaciones básicas del Álgebra (desarrollo de binomios, trinomios, factorización, potencias, etcétera). Resulta que si estas operaciones de Álgebra se encuentran dañadas o no funcionan correctamente en nuestra aplicación no solamente perjudican dichas operaciones en forma individual al momento de usarlas, sino que además perjudican a las operaciones que dependen de ella, como lo son la derivación, integración, sumatoria, combinaciones y permutaciones, etcétera, creando una "reacción en cadena" de fallas en nuestra calculadora que la dejan obsoleta.

Si nos proporcionaran el código fuente de esta aplicación pudiéramos nosotros encontrar el problema y solucionarlo, pero ¿qué pasaría si nos dieran un código estructurado?

En este caso el código puede poseer métodos y variables que definen las diversas operaciones de nuestra calculadora, sin embargo sería algo difícil localizar el error, dado que todo nuestro código se encuentra en una sola "hoja de trabajo" o clase y andaríamos buscando método por método, variable por variable y línea por línea el error en un código que pudiera ser de 10,000 líneas.

Ahora, si el código estuviera dividido por clases, cada una de ellas contendría diversos métodos que harían funcionar a nuestra calculadora científica. Dichas clases pudieran estar especializadas, es decir, cada clase contendría métodos que se relacionarían en común según sus diversas áreas de desempeño (por ejemplo, las operaciones básicas del Álgebra pudieran estar contenidas en una clase llamada operacionesAlgebra, las aritméticas en otra llamada operacionesAritmeticas, siguiendo este orden con las demás clases).

La ventaja de este último es que nos evitaríamos estar leyendo un código extenso en una sola clase ya que estaría dividida en diversas clases que contendrían los métodos que darían "vida" a nuestra calculadora (ya no tendríamos que estar leyendo 10,000 líneas de código), además, sería más fácil detectar el error de nuestro programa, ya que no tendríamos que estar moviendo de más en otras variables o métodos que no lo necesitan o solamente buscaríamos en la clase que contiene el problema. Por cierto, es una forma más "estilizada" de programar, en otras palabras, ordenada.

"Languages like Java are object oriented. Programming in such a language is called object-oriented programming (OOP), and it allows computer programmers to implement an object-oriented design as a working system. Languages like C, on the other hand, are procedural, so programming tends to be action oriented. In C, the unit of programming is the function."

El lenguaje JAVA es Orientado a Objetos, y como decíamos al principio, un objeto se compone de métodos y atributos que le dan "vida" al objeto o funcionalidad.

Notas.-

    Código Fuente.-

El código fuente de un programa informático (o software) es un conjunto de líneas de texto que son las instrucciones que debe seguir la computadora para ejecutar dicho programa. Por tanto, en el código fuente de un programa está descrito por completo su funcionamiento.

    Clases.-

Implementación de un tipo de dato.

    Objeto.-

Instancia de una clase. Unidad atómica que encapsula estado y comportamiento.

    JAVA.-

Sun anuncia formalmente el lanzamiento de JAVA en una conferencia industrial en Mayo de 1995. Java obtuvo a atención de la comunidad de empresarial debido al fenomena interés dentro de la "World Wide WEB". Java es ahora usado para desarrollar grandes aplicaciones de tipo empresarial, para mejorar la funcionalidad de los Servidores WEB (las computadoras que nos proveen de los contenidos que podemos ver en nuestros navegadores WEB), para proveer aplicaciones para dispositivos de uso común (por ejemplo, móviles, buscadores y asistentes digitaes) y diversas aplicaciones con diferentes finalidades.

    C++.-

Lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al exitoso lenguaje de programación C con mecanismos que permitan la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido.

Bibliografía.-

J. Deitel P., M. Deitel H., JAVA How to Program, Pearson Prentice Hall, Séptima Edición, Nueva Jersey, Estados Unidos, 2007. 1705 pp.

Sánchez Allende Jesús, et. Al., Fernández Toribio Gabriel Huecas, et. Al., Fernández Manjón Baltasar, et. Al., Programación en JAVA 2, Series Schaum, Primera Edición, Madrid, España, 2005. 413 pp.

Código fuente, Wikipedia, la Enciclopedia Libre (Enlace WEB: ).

C++, Wikipedia, la Enciclopedia Libre (Enlace WEB: ).

Clases y Objetos, Curso de Programación en JAVA: fundamentos de programación y principios de diseño (Enlace WEB: ).