You are on page 1of 4

Introduccin

Los objetos son entidades que tienen un determinado "estado", "comportamiento (mt
odo)" e "identidad":
El estado est compuesto de datos o informaciones; sern uno o varios atributos
a los que se habrn asignado unos valores concretos (datos).
El comportamiento est definido por los mtodos o mensajes a los que sabe respon
der dicho objeto, es decir, qu operaciones se pueden realizar con l.
La identidad es una propiedad de un objeto que lo diferencia del resto; dich
o con otras palabras, es su identificador (concepto anlogo al de identificador de
una variable o una constante).
Un objeto contiene toda la informacin que permite definirlo e identificarlo frent
e a otros objetos pertenecientes a otras clases e incluso frente a objetos de un
a misma clase, al poder tener valores bien diferenciados en sus atributos. A su
vez, los objetos disponen de mecanismos de interaccin llamados mtodos, que favorec
en la comunicacin entre ellos. Esta comunicacin favorece a su vez el cambio de est
ado en los propios objetos. Esta caracterstica lleva a tratarlos como unidades in
divisibles, en las que no se separa el estado y el comportamiento.
Los mtodos (comportamiento) y atributos (estado) estn estrechamente relacionados p
or la propiedad de conjunto. Esta propiedad destaca que una clase requiere de mto
dos para poder tratar los atributos con los que cuenta. El programador debe pens
ar indistintamente en ambos conceptos, sin separar ni darle mayor importancia a
alguno de ellos. Hacerlo podra producir el hbito errneo de crear clases contenedora
s de informacin por un lado y clases con mtodos que manejen a las primeras por el
otro. De esta manera se estara realizando una "programacin estructurada camuflada"
en un lenguaje de POO.
La programacin orientada a objetos difiere de la programacin estructurada tradicio
nal, en la que los datos y los procedimientos estn separados y sin relacin, ya que
lo nico que se busca es el procesamiento de unos datos de entrada para obtener o
tros de salida. La programacin estructurada anima al programador a pensar sobre t
odo en trminos de procedimientos o funciones, y en segundo lugar en las estructur
as de datos que esos procedimientos manejan. En la programacin estructurada solo
se escriben funciones que procesan datos. Los programadores que emplean POO, en
cambio, primero definen objetos para luego enviarles mensajes solicitndoles que r
ealicen sus mtodos por s mismos.
Origen
Los conceptos de la POO tienen origen en Simula 67, un lenguaje diseado para hace
r simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard, del Centro de Cmputo
Noruego en Oslo. En este centro se trabajaba en simulaciones de naves, que fuer
on confundidas por la explosin combinatoria de cmo las diversas cualidades de dife
rentes naves podan afectar unas a las otras. La idea surgi al agrupar los diversos
tipos de naves en diversas clases de objetos, siendo responsable cada clase de
objetos de definir sus "propios" datos y comportamientos. Fueron refinados ms tar
de en Smalltalk, desarrollado en Simula en Xerox PARC (cuya primera versin fue es
crita sobre Basic) pero diseado para ser un sistema completamente dinmico en el cu
al los objetos se podran crear y modificar "sobre la marcha" (en tiempo de ejecuc
in) en lugar de tener un sistema basado en programas estticos.
La POO se fue convirtiendo en el estilo de programacin dominante a mediados de lo
s aos 1980, en gran parte debido a la influencia de C++, una extensin del lenguaje
de programacin C. Su dominacin fue consolidada gracias al auge de las interfaces
grficas de usuario, para las cuales la POO est particularmente bien adaptada. En e
ste caso, se habla tambin de programacin dirigida por eventos.
Las caractersticas de orientacin a objetos fueron agregadas a muchos lenguajes exi

stentes durante ese tiempo, incluyendo Ada, BASIC, Lisp ms Pascal, entre otros. L
a adicin de estas caractersticas a los lenguajes que no fueron diseados inicialment
e para ellas condujo a menudo a problemas de compatibilidad y en la capacidad de
mantenimiento del cdigo. Los lenguajes orientados a objetos "puros", por su part
e, carecan de las caractersticas de las cuales muchos programadores haban venido a
depender. Para saltar este obstculo, se hicieron muchas tentativas para crear nue
vos lenguajes basados en mtodos orientados a objetos, pero permitiendo algunas ca
ractersticas imperativas de maneras "seguras". El lenguaje de programacin Eiffel d
e Bertrand Meyer fue un temprano y moderadamente acertado lenguaje con esos obje
tivos, pero ahora ha sido esencialmente reemplazado por Java, en gran parte debi
do a la aparicin de Internet y a la implementacin de la mquina virtual Java en la m
ayora de navegadores web. PHP en su versin 5 se ha modificado; soporta una orienta
cin completa a objetos, cumpliendo todas las caractersticas propias de la orientac
in a objetos.
Conceptos fundamentales
La POO es una forma de programar que trata de encontrar una solucin a estos probl
emas. Introduce nuevos conceptos, que superan y amplan conceptos antiguos ya cono
cidos. Entre ellos destacan los siguientes:
Clase
Definiciones de las propiedades y comportamiento de un tipo de objeto concre
to. La instanciacin es la lectura de estas definiciones y la creacin de un objeto
a partir de ella.
Herencia
Por ejemplo, herencia de la clase C a la clase D, es la facilidad mediante l
a cual la clase D hereda en ella cada uno de los atributos y operaciones de C, c
omo si esos atributos y operaciones hubiesen sido definidos por la misma D. Por
lo tanto, puede usar los mismos mtodos y variables pblicas declaradas en C. Los co
mponentes registrados como "privados" (private) tambin se heredan, pero como no p
ertenecen a la clase, se mantienen escondidos al programador y slo pueden ser acc
edidos a travs de otros mtodos pblicos. Esto es as para mantener hegemnico el ideal d
e POO.
Objeto
Instancia de una clase. Entidad provista de un conjunto de propiedades o atr
ibutos (datos) y de comportamiento o funcionalidad (mtodos), los mismos que conse
cuentemente reaccionan a eventos. Se corresponden con los objetos reales del mun
do que nos rodea, o con objetos internos del sistema (del programa). Es una inst
ancia a una clase.
Mtodo
Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecucin se d
esencadena tras la recepcin de un "mensaje". Desde el punto de vista del comporta
miento, es lo que el objeto puede hacer. Un mtodo puede producir un cambio en las
propiedades del objeto, o la generacin de un "evento" con un nuevo mensaje para
otro objeto del sistema.
Evento
Es un suceso en el sistema (tal como una interaccin del usuario con la mquina,
o un mensaje enviado por un objeto). El sistema maneja el evento enviando el me
nsaje adecuado al objeto pertinente. Tambin se puede definir como evento la reacc
in que puede desencadenar un objeto; es decir, la accin que genera.
Atributos
Caractersticas que tiene la clase.
Mensaje
Una comunicacin dirigida a un objeto, que le ordena que ejecute uno de sus mto
dos con ciertos parmetros asociados al evento que lo gener.
Propiedad o atributo
Contenedor de un tipo de datos asociados a un objeto (o a una clase de objet
os), que hace los datos visibles desde fuera del objeto y esto se define como su
s caractersticas predeterminadas, y cuyo valor puede ser alterado por la ejecucin

de algn mtodo.
Estado interno
Es una variable que se declara privada, que puede ser nicamente accedida y al
terada por un mtodo del objeto, y que se utiliza para indicar distintas situacion
es posibles para el objeto (o clase de objetos). No es visible al programador qu
e maneja una instancia de la clase.
Componentes de un objeto
Atributos, identidad, relaciones y mtodos.
Identificacin de un objeto
Un objeto se representa por medio de una tabla o entidad que est compuesta po
r sus atributos y funciones correspondientes.
En comparacin con un lenguaje imperativo, una "variable" no es ms que un contenedo
r interno del atributo del objeto o de un estado interno, as como la "funcin" es u
n procedimiento interno del mtodo del objeto.
Caractersticas de la POO
Existe un acuerdo acerca de qu caractersticas contempla la "orientacin a objetos".
Las caractersticas siguientes son las ms importantes:
Abstraccin
Denota las caractersticas esenciales de un objeto, donde se capturan sus comp
ortamientos. Cada objeto en el sistema sirve como modelo de un "agente" abstract
o que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con
otros objetos en el sistema sin revelar "cmo" se implementan estas caractersticas.
Los procesos, las funciones o los mtodos pueden tambin ser abstrados, y, cuando lo
estn, una variedad de tcnicas son requeridas para ampliar una abstraccin. El proce
so de abstraccin permite seleccionar las caractersticas relevantes dentro de un co
njunto e identificar comportamientos comunes para definir nuevos tipos de entida
des en el mundo real. La abstraccin es clave en el proceso de anlisis y diseo orien
tado a objetos, ya que mediante ella podemos llegar a armar un conjunto de clase
s que permitan modelar la realidad o el problema que se quiere atacar.
Encapsulamiento
Significa reunir todos los elementos que pueden considerarse pertenecientes
a una misma entidad, al mismo nivel de abstraccin. Esto permite aumentar la cohes
in (diseo estructurado) de los componentes del sistema. Algunos autores confunden
este concepto con el principio de ocultacin, principalmente porque se suelen empl
ear conjuntamente.
Modularidad
Se denomina "modularidad" a la propiedad que permite subdividir una aplicacin
en partes ms pequeas (llamadas mdulos), cada una de las cuales debe ser tan indepe
ndiente como sea posible de la aplicacin en s y de las restantes partes. Estos mdul
os se pueden compilar por separado, pero tienen conexiones con otros mdulos. Al i
gual que la encapsulacin, los lenguajes soportan la modularidad de diversas forma
s.
Principio de ocultacin
Cada objeto est aislado del exterior, es un mdulo natural, y cada tipo de obje
to expone una "interfaz" a otros objetos que especifica cmo pueden interactuar co
n los objetos de la clase. El aislamiento protege a las propiedades de un objeto
contra su modificacin por quien no tenga derecho a acceder a ellas; solamente lo
s propios mtodos internos del objeto pueden acceder a su estado. Esto asegura que
otros objetos no puedan cambiar el estado interno de un objeto de manera inespe
rada, eliminando efectos secundarios e interacciones inesperadas. Algunos lengua
jes relajan esto, permitiendo un acceso directo a los datos internos del objeto
de una manera controlada y limitando el grado de abstraccin. La aplicacin entera s
e reduce a un agregado o rompecabezas de objetos.
Polimorfismo
Comportamientos diferentes, asociados a objetos distintos, pueden compartir
el mismo nombre; al llamarlos por ese nombre se utilizar el comportamiento corres
pondiente al objeto que se est usando. O, dicho de otro modo, las referencias y l

as colecciones de objetos pueden contener objetos de diferentes tipos, y la invo


cacin de un comportamiento en una referencia producir el comportamiento correcto p
ara el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecu
cin", esta ltima caracterstica se llama asignacin tarda o asignacin dinmica. Algunos l
nguajes proporcionan medios ms estticos (en "tiempo de compilacin") de polimorfismo
, tales como las plantillas y la sobrecarga de operadores de C++.
Herencia
Las clases no se encuentran aisladas, sino que se relacionan entre s, formand
o una jerarqua de clasificacin. Los objetos heredan las propiedades y el comportam
iento de todas las clases a las que pertenecen. La herencia organiza y facilita
el polimorfismo y el encapsulamiento, permitiendo a los objetos ser definidos y
creados como tipos especializados de objetos preexistentes. Estos pueden compart
ir (y extender) su comportamiento sin tener que volver a implementarlo. Esto sue
le hacerse habitualmente agrupando los objetos en clases y estas en rboles o enre
jados que reflejan un comportamiento comn. Cuando un objeto hereda de ms de una cl
ase se dice que hay herencia mltiple; siendo de alta complejidad tcnica por lo cua
l suele recurrirse a la herencia virtual para evitar la duplicacin de datos.
Recoleccin de basura
La recoleccin de basura (garbage collection) es la tcnica por la cual el entor
no de objetos se encarga de destruir automticamente, y por tanto desvincular la m
emoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos. E
sto significa que el programador no debe preocuparse por la asignacin o liberacin
de memoria, ya que el entorno la asignar al crear un nuevo objeto y la liberar cua
ndo nadie lo est usando. En la mayora de los lenguajes hbridos que se extendieron p
ara soportar el Paradigma de Programacin Orientada a Objetos como C++ u Object Pa
scal, esta caracterstica no existe y la memoria debe desasignarse expresamente.
Resumen
La POO es un paradigma surgido en los aos 1970, que utiliza objetos como elemento
s fundamentales en la construccin de la solucin. Un objeto es una abstraccin de algn
hecho o ente del mundo real, con atributos que representan sus caractersticas o
propiedades, y mtodos que emulan su comportamiento o actividad. Todas las propied
ades y mtodos comunes a los objetos se encapsulan o agrupan en clases. Una clase
es una plantilla, un prototipo para crear objetos; en general, se dice que cada
objeto es una instancia o ejemplar de una clase.

You might also like