Está en la página 1de 10

Introduccin: Programacin Orientada a Objetos (POO)

Programacin Orientada a Objetos (POO), uno de los primeros conceptos que me vienen
a la mente es el de programacin. Se llama programacin a la creacin de un programa de
computadora, el cual es un conjunto concreto de instrucciones que una computadora puede
ejecutar. El programa se escribe en un lenguaje de programacin, aunque tambin se pueda
escribir directamente en lenguaje de mquina, con cierta dificultad. Un programa se puede
dividir en diversas partes, que pueden estar escritas en lenguajes distintos.

Para diferenciar, Software es el sustantivo que denomina a los programas y datos de


computadora, mientras que un algoritmo es una secuencia no ambigua, finita y ordenada de
instrucciones que han de seguirse para resolver un problema. Un programa normalmente
implementa (traduce a un lenguaje de programacin concreto) un algoritmo. Puede haber
programas que no se ajusten a un algoritmo (pueden no terminar nunca), en cuyo caso se
denomina procedimiento a tal programa.

La programacin de ordenadores debe perseguir tres objetivos fundamentales:

1. Correccin: Un programa es correcto si hace lo que debe hacer. Para determinar si


un programa hace lo que debe es muy importante especificar claramente qu debe
hacer el programa antes de desarrollarlo y una vez acabado compararlo con lo que
realmente hace.
2. Claridad: Es muy importante que el programa sea lo ms claro posible y legible
posible para mejorar el mantenimiento del software. Cuando se acaba de escribir el
cdigo del programa, se deben buscar errores y corregirlos. Ms concretamente,
cuando el programa est concluido, es necesario hacerle ampliaciones y/o
modificaciones, segn la demanda de los usuarios, esta labor puede ser llevada a
cabo por el mismo programador que implement el programa o por otros.
3. Eficiencia: Debe consumir la menor cantidad de recursos posible. Normalmente al
hablar de eficiencia se suele hacer referencia al consumo de tiempo y/o memoria.

Para lograr estos puntos, es necesario utilizar una metodologa de programacin.

Entonces, lo primero que nos preguntaremos es qu se entiende por metodologa de la


programacin. Para ello, lo ms directo es acudir al DRAE (Diccionario de la Real
Academia de la Lengua) donde se define:

Metodologa:

Ciencia del mtodo.


Conjunto de mtodos que se siguen en una investigacin cientfica o en una
exposicin doctrinal.

As pues, aplicado al campo de la programacin sera el conjunto de mtodos, herramientas


que nos sirven para desarrollar programas. Cuando hablamos de herramientas nos estamos
refiriendo tanto a aquellos elementos simples que nos encontramos en cualquier lenguaje de
programacin (tipos de datos, estructuras de control, etc) como el estudio de tcnicas
(algoritmos voraces, divide y vencers, etc.) para el diseo de algoritmos. Estudio que se
realiza atendiendo a criterios de eficiencia y correccin.

El desarrollo de programas ha sufrido una evolucin desde los primeros sistemas de


clculo, implementados en grandes computadores. Aquellos sistemas enfocaban todo el
esfuerzo de desarrollo en la escritura de programas que realizaban todo tipo de clculo.
Desde entonces han surgido dos grandes cambios. El primero, la aparicin del modelo
relacional, modelo con una fuerte base algebraica, que supuso el desarrollo y estructuracin
de las bases de datos. El segundo, sobre los lenguajes de programacin fue la aparicin de
los Lenguajes orientados a objetos. La escritura de programas pasa a ser una tarea no slo
de codificacin algortmica sino tambin una tarea de estructuracin del problema, en el
que la abstraccin y modelado de objetos juega un papel importante.

Esta parte del curso tiene como objetivo introducirnos en el paradigma de la programacin
orientada a objetos. De esta forma seremos capaces de realizar programas fcilmente
mantenibles, modificables y reusables.

Cuando se escribe un programa en un lenguaje orientado a objetos, se define una plantilla o


clase que describe las caractersticas y el comportamiento de un conjunto de objetos
similares. La clase automvil describe las caractersticas comunes de todos los automviles:
sus atributos y su comportamiento. Los atributos o propiedades se refieren a la marca o
fabricante, el color, las dimensiones, si tienen dos, tres, cuatro o ms puertas, la potencia, si
utiliza como combustible la gasolina o gas, etc. El comportamiento se refiere a la
posibilidad de desplazarse por una carretera, frenar, acelerar, cambiar de marcha, girar, etc.

Luego, tenemos automviles concretos, por ejemplo, el automvil propio de una


determinada marca, color, potencia, etc., el automvil del vecino de otra marca, de otro
color, etc., el automvil de un amigo, etc.

Una clase es por tanto una plantilla implementada en software que describe un conjunto de
objetos con atributos y comportamiento similares.

Una instancia u objeto de una clase es una representacin concreta y especfica de una clase
y que reside en la memoria del ordenador.

Fundamentos de programacin
Un lenguaje de programacin es, como todo lenguaje en general, un dialecto; o sea un
conjunto de convenciones utilizadas para comunicarse. De este modo, a travs de un
dialecto que con el tiempo ha ido evolucionando y mejorando, incluso volvindose ms
amigable a la comprensin humana, es la forma en que el hombre se comunica con las
mquinas. Hace mucho tiempo atrs el trmino programacin se refera a una codificacin
lineal absolutamente crptica y misteriosa; hoy en da, con el desarrollo de las interfaces
grficas de usuario, ms la evolucin de los lenguajes que se han tornado muchsimo ms
amigables y a su vez ms potentes, esto se presenta de una forma muy diferente y ya no tan
compleja.

Un programa tradicional, que sigue el paradigma estructurado, se basa fundamentalmente


en la ecuacin de Wirth:

Algoritmos + Estructuras de Datos = Programas

Esta ecuacin se interpreta como que los algoritmos y los datos se tratan por separado. De
esta forma las funciones o procedimientos que tratan estos datos los van procesando y
pasando de unos a otros hasta obtener el resultado deseado.

La programacin orientada a objetos gira en torno al concepto de objetos. As un objeto es


una entidad que tiene unos atributos particulares, los datos, y unas formas de operar sobre
ellos, los mtodos o procedimientos. Durante la ejecucin, los objetos reciben y envan
mensajes a otros objetos para realizar las acciones requeridas.

Esta definicin resulta incompleta, pues se trata la definicin de un TAD (Tipo Abstracto
de Datos). Un TAD encapsula un tipo definido por el usuario junto con las operaciones
sobre estos datos, realizando un proceso de abstraccin, en el que se trata de ocultar los
detalles y agrupar caractersticas comunes para facilitar su uso y comprensin. La
diferencia entre el concepto de TAD y el de objeto radica en que adems del proceso de
abstraccin que se utiliza para su definicin, existen otros dos con los que se forma el
ncleo principal de la programacin orientada a objetos, la herencia y el polimorfismo.

Atributos

Los atributos son las caractersticas individuales que diferencian un objeto de otro y
determinan su apariencia, estado u otras cualidades. Los atributos se guardan en variables
denominadas de instancia, y cada objeto particular puede tener valores distintos para estas
variables.

Las variables de instancia tambin denominados miembros dato, son declaradas en la clase
pero sus valores son fijados y cambiados en el objeto.
Adems de las variables de instancia hay variables de clase, las cuales se aplican a la clase
y a todas sus instancias. Por ejemplo, el nmero de ruedas de un automvil es el mismo
cuatro, para todos los automviles.

Comportamiento

El comportamiento de los objetos de una clase se implementa mediante funciones miembro


o mtodos. Un mtodo es un conjunto de instrucciones que realizan una determinada tarea
y son similares a las funciones de los lenguajes estructurados.

Del mismo modo que hay variables de instancia y de clase, tambin hay mtodos de
instancia y de clase. En el primer caso, un objeto llama a un mtodo para realizar una
determinada tarea, en el segundo, el mtodo se llama desde la propia clase.

La programacin orientada a objetos

La llegada al mundo de la programacin del concepto de objetos, revolucion la historia de


la misma; se introdujeron al lenguaje diario de los profesionales del rea, conceptos tales
como herencia, polimorfismo, etc., que hicieron que el modo de pensar y concebir el
desarrollo de una aplicacin fuera muy diferente a lo que haba sido hasta ese momento con
la programacin lineal o estructurada.

Java ha ofrecido la implementacin del uso de objetos, desde la versin 1.0.

En la programacin orientada a objetos tenemos dos elementos fundamentales, las


CLASES y los OBJETOS, podemos definir a la clase como la generalizacin de los objetos
y los objetos como la concrecin de la clase, con el correr de este curso podremos entender
ms claramente esta engorrosa definicin que ms parece un juego de palabras.

Esta metodologa, como se mencion antes, gira en torno a trminos tales como
abstraccin, encapsulamiento, herencia y polimorfismo; para poder comprender lo que la
POO (programacin orientada a objetos) significa, tenemos que tener estos trminos claros,
as que pasamos a ver qu hay detrs de estos conceptos.

Hemos mencionado las cuatro caractersticas bsicas que debe cumplir un objeto para
denominarse como tal, pilar fundamental de la programacin orientada a objetos. Cuando
hablamos de un objeto, hablamos de pequeos elementos bien definidos, representaciones
verdaderas de objetos que tenemos en la vida real, mediante el uso e implementacin de la
metodologa de Programacin Orientada a Objetos intentamos crear objetos de software
que tengan correlacin con los objetos del mundo real en la solucin que intentamos
implementar, o sea, en un mdulo de facturacin de un sistema de gestin comercial,
vamos a crear nuestro objeto FACTURA, que tendr relaciones con nuestro objeto
CLIENTE, y PRODUCTO, la aplicacin de esta concepcin de trabajo es la que nos
permiten aislar cada componente del resto de la aplicacin y de esa forma aprovechar en
mayor medida nuestro esfuerzo, nuestra concentracin en el buen funcionamiento de dichos
componentes, nuestro control sobre ellos, ms prolijidad en la codificacin y por sobre
todas las cosas, REUTILIZAR EL CODIGO escrito.

Definido lo que es un objeto, ahora adems sabemos cules son sus cuatro caractersticas
principales y necesarias para denominarse como tal, vamos al detalle de lo que cada una de
ellas significa.

Abstraccin:

Es la capacidad de un objeto de cumplir sus funciones independientemente del contexto en


el que se lo utilice; o sea, un objeto cliente siempre expondr sus mismas propiedades y
dar los mismos resultados a travs de sus eventos, sin importar el mbito en el cual se lo
haya creado.

Encapsulamiento:

Esta caracterstica es la que denota la capacidad del objeto de responder a peticiones a


travs de sus mtodos sin la necesidad de exponer los medios utilizados para llegar a
brindar estos resultados. O sea, el mtodo MostrarSaldo() del objeto cliente antes
mencionado, siempre nos va a dar el saldo de la cuenta de un cliente, sin necesidad de tener
conocimiento de cules son los recursos que ejecuta para llegar a brindar este resultado.

Herencia:

Es la caracterstica por la cual los objetos para su creacin se basan en una clase de base,
heredando todas sus propiedades, mtodos y eventos; los cuales a su vez pueden o no ser
implementados y/o modificados.

Polimorfismo:

El trmino de polimorfismo define la capacidad de que ms de un objeto puedan crearse


usando la misma clase de base para lograr dos conceptos de objetos diferentes, en este caso
podemos citar el tpico ejemplo de los telfonos, los cuales se basan en un telfono base,
con la capacidad de hacer ring y tener un auricular, para luego obtener un telfono digital,
inalmbrico, con botonera de marcado y tambin, tomando la misma base, construir un
telfono analgico y con disco de marcado.
EJEMPLOS
Qu es un objeto?

Objeto es el concepto clave de la Programacin Orientada a Objetos, la idea de objeto es


similar a la del mundo real, un objeto puede ser una silla, una mesa. Tu perro es un objeto.

Los objetos tienen dos caractersticas: Un estado y un comportamiento. Fijate que por
ejemplo tu perro tiene un estado: nombre, color, raza, altura, etc. y un comportamiento:
ladrar, cavar pozo, llorar, dormir, comer, etc.

Un auto es un objeto. Tambin tiene un estado: Cantidad de puertas, color, tamao, etc. y
un comportamiento: acelerar, frenar, subir cambio, bajar cambio, girar izq., girar der., etc.

Entonces podemos definir a un objeto en POO, como un conjunto de datos y funciones


relacionadas. A las funciones de los objetos, tales como acelerar en el caso del auto, de aqu
en ms las llamaremos mtodos, a los datos los llamaremos atributos.

Los objetos en programacin, son modelados observando objetos del mundo real, por
ejemplo, implementamos el objeto "perro" dentro de nuestro programa definiendo los
atributos y mtodos del objeto perro real.

El objeto "Auto" se puede representar grficamente como sigue:

Un ejemplo mas complicado de un objeto podra ser el siguiente:

Objeto: Cuenta bancaria

Atributos: tipo, titular, saldo.

Mtodos: Depositar, Extraer.

Aqu se ve la necesidad de que el atributo "saldo" sea solo accesible a travs de los mtodos
"Depositar" y "Extraer" por una cuestin de seguridad, encapsulamiento y para evitar
comportamientos indeseados.
Qu es una clase?

Una clase es algo abstracto que define la "forma" del objeto, se podra hablar de la clase
como el molde de los objetos.

En el mundo real existen objetos del mismo tipo, por ejemplo, tu bicicleta es solo una ms
de todas las bicicletas del mundo. Entonces diramos que tu bicicleta es una instancia de la
clase "Bicicleta". Todas las bicicletas tienen los atributos: color, cantidad de cambios,
dueo y mtodos: acelerar, frenar, pasar cambio, volver cambio.

Las fbricas de bicicletas utilizan moldes para producir sus productos en serie, de la misma
forma en POO utilizaremos la clase bicicleta (molde) para producir sus instancias (objetos).

Los objetos son instancias de clases.

Ejemplo: Podramos tener la clase Perro, una instancia de esta clase podra ser el objeto
perro llamado "Chicho". La clase Perro especificara que todos los perros tendran un
nombre, color de pelo, una altura. Mientras que la instancia "Chicho" contendr valores
especficos para cada uno de estos atributos.

Podemos definir a una clase como una plantilla que define variables y mtodos comunes
para todos los objetos de cierto tipo.

Existe un lenguaje de modelado llamado UML mediante el cual podemos representar


grficamente todo un sistema orientado a objetos utilizando rectngulos, lneas y otro tipo
de smbolos grficos. Segn UML, la clase "Cuenta Bancaria" antes mencionada se
representar grficamente como sigue:

Mensajes

Un objeto por s solo no tiene mucho significado. Ejemplo: el objeto "bicicleta" no tiene
mucho sentido si no interacta con un objeto "persona" que pedalee.

La interaccin entre objetos se produce mediante mensajes. Los mensajes son llamados a
mtodos de un objeto en particular.

Podemos decir que el objeto persona enva el mensaje "girar a la izquierda" al objeto
bicicleta.
Los mensajes pueden contener parmetros. Por ejemplo, teniendo un mtodo en la clase
bicicleta llamado "Girar" que recibe como parmetro la direccin (derecha o izquierda).

Un mensaje est compuesto por los siguientes tres elementos:

1. El objeto destino, hacia el cual el mensaje es enviado


2. El nombre del mtodo a llamar
3. Los parmetros solicitados por el mtodo

Beneficios de los mensajes

Como todo lo que un objeto puede hacer esta expresado mediante mtodos, el envo de
mensajes soporta todas las posibles interacciones entre objetos.

Para enviar o recibir mensajes, los objetos no necesitan formar parte del mismo proceso, ni
siquiera de la misma mquina.

Herencia

Los sistemas orientados a objetos permiten definir clases en trmino de otras clases. Por
ejemplo, ovejero alemn y caniche son diferentes razas de perros. En la terminologa
orientada a objetos "Ovejero Alemn" y "Caniche" son subclases de la clase perro. De
forma similar Perro es la superclase de "Ovejero Alemn".

Entonces tenemos la siguiente jerarqua de clases:

En UML se representa la relacin de herencia mediante una flecha.

Cada subclase hereda los atributos de la superclase. Tanto la clase "Ovejero Alemn" como
"Caniche" tendrn los atributos nombre, color de pelo, altura definidos en la clase Perro.
Una subclase no esta limitada nicamente a los atributos de su superclase, tambin puede
tener atributos propios, o redefinir algunos definidos anteriormente en la superclase.

No se esta limitado tampoco a un solo nivel de herencia, se pueden tener todos los que se
consideren necesarios.

Ejemplo:

Clase Empleado hereda de clase Persona, y esta a su vez hereda de clase Animal.

Las subclases proveen un comportamiento especializado sobre los elementos comunes


provistos por las superclases. Gracias a la herencia, los programadores pueden rehusar
cdigo una y otra vez.

VENTAJAS Y DESVENTAJAS

No todo es color de rosa en la programacin orientada a objetos; si bien hemos mencionado


ventajas en cuanto a su utilizacin, como hemos mencionado al comienzo de este capitulo
esta metodologa de trabajo cambia completamente el enfoque del desarrollo de los
procedimientos de codificacin hacia el diseo y definicin de clases.

Debido a lo que mencionamos recientemente, el hecho de que los objetos son mdulos
completos de cdigo, pequeos, de alta mantenibilidad y absolutamente independientes del
contexto en el que se utilicen, nos brinda la posibilidad de poder trabajar en un equipo de
desarrolladores que solo trabajen sobre clases de objetos, sobre las cuales los
desarrolladores de aplicaciones se basarn para personalizar sus funcionalidades heredando
las bases y luego reunirlas todas en una solucin final.
Como vemos, ste fue un claro ejemplo de lo que es la reutilizacin de cdigo, la
programacin orientada a objetos nos permite trabajar sobre una biblioteca de clases
personalizadas que luego utilizaremos como base de nuestros futuros desarrollos.

Todas estas ventajas al momento de codificar y producir, tienen en contrapartida un gran


esfuerzo al momento del diseo de los mencionados objetos, esto requiere de un exhaustivo
trabajo de anlisis que requiere tambin de mucha disciplina para que los resultados sean
exitosos y no una completa catstrofe.

Tambin debemos destacar que la depuracin de cdigo orientado a objeto es algo ms


compleja que la depuracin de cdigo estructurado. Esto no quiere decir que nuestro cdigo
vaya a ser peor o tener ms errores, pero s es cierto que en el caso de producirse un error
deberemos recorrer todo el rbol de herencia para encontrarlo, algo que en programacin
estructurada no tenemos que hacer.

BIBLIOGRAFIA

http://tikal.cifn.unam.mx/~jsegura/LCGII/java1.htm

También podría gustarte