Está en la página 1de 5

Programaci�n orientada a objetos

Ir a la navegaci�nIr a la b�squeda
Commons-emblem-question book orange.svg
Este art�culo o secci�n necesita referencias que aparezcan en una publicaci�n
acreditada.
Este aviso fue puesto el 14 de febrero de 2015.
La programaci�n orientada a objetos (POO, en espa�ol; OOP, seg�n sus siglas en
ingl�s) es un paradigma de programaci�n que viene a innovar la forma de obtener
resultados. Los objetos manipulan los datos de entrada para la obtenci�n de datos
de salida espec�ficos, donde cada objeto ofrece una funcionalidad especial.

Muchos de los objetos predise�ados de los lenguajes de programaci�n actuales


permiten la agrupaci�n en bibliotecas o librer�as, sin embargo, muchos de estos
lenguajes permiten al usuario la creaci�n de sus propias bibliotecas.

Est� basada en varias t�cnicas: herencia, cohesi�n, abstracci�n, polimorfismo,


acoplamiento y encapsulamiento.

Su uso se populariz� a principios de la d�cada de 1990. En la actualidad, existe


una gran variedad de lenguajes de programaci�n que soportan la orientaci�n a
objetos.

�ndice
1 Introducci�n
2 Origen
3 Conceptos fundamentales
4 Caracter�sticas de la POO
5 Resumen
6 Tipos
7 Algunos lenguajes orientados a objetos
8 V�ase tambi�n
9 Notas y referencias
10 Enlaces externos
Introducci�n
Los objetos son entidades que tienen un determinado "estado", "comportamiento
(m�todo)" e "identidad":

La identidad es una propiedad de un objeto que lo diferencia del resto; dicho con
otras palabras, es su identificador (concepto an�logo al de identificador de una
variable o una constante).
Un objeto contiene toda la informaci�n que permite definirlo e identificarlo frente
a otros objetos pertenecientes a otras clases e incluso frente a objetos de una
misma clase, al poder tener valores bien diferenciados en sus atributos. A su vez,
los objetos disponen de mecanismos de interacci�n llamados m�todos, que favorecen
la comunicaci�n entre ellos. Esta comunicaci�n favorece a su vez el cambio de
estado en los propios objetos. Esta caracter�stica lleva a tratarlos como unidades
indivisibles, en las que no se separa el estado y el comportamiento.

Los m�todos (comportamiento) y atributos (estado) est�n estrechamente relacionados


por la propiedad de conjunto. Esta propiedad destaca que una clase requiere de
m�todos para poder tratar los atributos con los que cuenta. El programador debe
pensar indistintamente en ambos conceptos, sin separar ni darle mayor importancia a
alguno de ellos. Hacerlo podr�a producir el h�bito err�neo de crear clases
contenedoras de informaci�n por un lado y clases con m�todos que manejen a las
primeras por el otro. De esta manera se estar�a realizando una "programaci�n
estructurada camuflada" en un lenguaje de POO.

La programaci�n orientada a objetos difiere de la programaci�n estructurada


tradicional, en la que los datos y los procedimientos est�n separados y sin
relaci�n, ya que lo �nico que se busca es el procesamiento de unos datos de entrada
para obtener otros de salida. La programaci�n estructurada anima al programador a
pensar sobre todo en t�rminos de procedimientos o funciones, y en segundo lugar en
las estructuras de datos que esos procedimientos manejan. En la programaci�n
estructurada solo se escriben funciones que procesan datos. Los programadores que
emplean POO, en cambio, primero definen objetos para luego enviarles mensajes
solicit�ndoles que realicen sus m�todos por s� mismos.

Origen
Los conceptos de la POO tienen origen en Simula 67, un lenguaje dise�ado para hacer
simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard, del Centro de C�mputo
Noruego en Oslo. En este centro se trabajaba en simulaciones de naves, que fueron
confundidas por la explosi�n combinatoria de c�mo las diversas cualidades de
diferentes naves pod�an 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
m�s tarde en Smalltalk, desarrollado en Simula en Xerox PARC (cuya primera versi�n
fue escrita sobre Basic) pero dise�ado para ser un sistema completamente din�mico
en el cual los objetos se podr�an crear y modificar "sobre la marcha" (en tiempo de
ejecuci�n) en lugar de tener un sistema basado en programas est�ticos.

La POO se fue convirtiendo en el estilo de programaci�n dominante a mediados de los


a�os 1980, en gran parte debido a la influencia de C++, una extensi�n del lenguaje
de programaci�n C. Su dominaci�n fue consolidada gracias al auge de las interfaces
gr�ficas de usuario, para las cuales la POO est� particularmente bien adaptada. En
este caso, se habla tambi�n de programaci�n dirigida por eventos.

Las caracter�sticas de orientaci�n a objetos fueron agregadas a muchos lenguajes


existentes durante ese tiempo, incluyendo Ada, BASIC, Lisp m�s Pascal, entre otros.
La adici�n de estas caracter�sticas a los lenguajes que no fueron dise�ados
inicialmente para ellas condujo a menudo a problemas de compatibilidad y en la
capacidad de mantenimiento del c�digo. Los lenguajes orientados a objetos "puros",
por su parte, carec�an de las caracter�sticas de las cuales muchos programadores
hab�an venido a depender. Para saltar este obst�culo, se hicieron muchas tentativas
para crear nuevos lenguajes basados en m�todos orientados a objetos, pero
permitiendo algunas caracter�sticas imperativas de maneras "seguras". El lenguaje
de programaci�n Eiffel de Bertrand Meyer fue un temprano y moderadamente acertado
lenguaje con esos objetivos, pero ahora ha sido esencialmente reemplazado por Java,
en gran parte debido a la aparici�n de Internet y a la implementaci�n de la m�quina
virtual Java en la mayor�a de navegadores web. PHP en su versi�n 5 se ha
modificado; soporta una orientaci�n completa a objetos, cumpliendo todas las
caracter�sticas propias de la orientaci�n a objetos.

Conceptos fundamentales
La POO es una forma de programar que trata de encontrar una soluci�n a estos
problemas. Introduce nuevos conceptos, que superan y ampl�an conceptos antiguos ya
conocidos. Entre ellos destacan los siguientes:

Clase
Una clase se puede definir de las propiedades y comportamiento de un tipo de objeto
concreto. La instanciaci�n es la lectura de estas definiciones y la creaci�n de un
objeto a partir de ella.
Herencia
Por ejemplo, herencia de la clase C a la clase D, es la facilidad mediante la cual
la clase D hereda en ella cada uno de los atributos y operaciones de C, como si
esos atributos y operaciones hubiesen sido definidos por la misma D. Por lo tanto,
puede usar los mismos m�todos y variables registrados como "p�blicos" (public) en
C. Los componentes registrados como "privados" (private) tambi�n se heredan pero se
mantienen escondidos al programador y s�lo pueden ser accedidos a trav�s de otros
m�todos p�blicos. Para poder acceder a un atributo u operaci�n de una clase en
cualquiera de sus subclases pero mantenerla oculta para otras clases es necesario
registrar los componentes como "protegidos" (protected), de esta manera ser�n
visibles en C y en D pero no en otras clases.
Objeto
Instancia de una clase. Entidad provista de un conjunto de propiedades o atributos
(datos) y de comportamiento o funcionalidad (m�todos), los mismos que
consecuentemente reaccionan a eventos. Se corresponden con los objetos reales del
mundo que nos rodea, o con objetos internos del sistema (del programa).
M�todo
Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecuci�n se
desencadena tras la recepci�n de un "mensaje". Desde el punto de vista del
comportamiento, es lo que el objeto puede hacer. Un m�todo puede producir un cambio
en las propiedades del objeto, o la generaci�n de un "evento" con un nuevo mensaje
para otro objeto del sistema.
Evento
Es un suceso en el sistema (tal como una interacci�n del usuario con la m�quina, o
un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje
adecuado al objeto pertinente. Tambi�n se puede definir como evento la reacci�n que
puede desencadenar un objeto; es decir, la acci�n que genera.
Atributos
Caracter�sticas que tiene la clase.
Mensaje
Una comunicaci�n dirigida a un objeto, que le ordena que ejecute uno de sus m�todos
con ciertos par�metros asociados al evento que lo gener�.
Propiedad o atributo
Contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos),
que hace los datos visibles desde fuera del objeto y esto se define como sus
caracter�sticas predeterminadas, y cuyo valor puede ser alterado por la ejecuci�n
de alg�n m�todo.
Estado interno
Es una variable que se declara privada, que puede ser �nicamente accedida y
alterada por un m�todo del objeto, y que se utiliza para indicar distintas
situaciones posibles para el objeto (o clase de objetos). No es visible al
programador que maneja una instancia de la clase.
Componentes de un objeto
Atributos, identidad, relaciones y m�todos.
Identificaci�n de un objeto
Un objeto se representa por medio de una tabla o entidad que est� compuesta por sus
atributos y funciones correspondientes.
En comparaci�n con un lenguaje imperativo, una "variable" no es m�s que un
contenedor interno del atributo del objeto o de un estado interno, as� como la
"funci�n" es un procedimiento interno del m�todo del objeto.

Caracter�sticas de la POO
Existe un acuerdo acerca de qu� caracter�sticas contempla la "orientaci�n a
objetos". Las caracter�sticas siguientes son las m�s importantes:1?

Abstracci�n
Denota las caracter�sticas esenciales de un objeto, donde se capturan sus
comportamientos. Cada objeto en el sistema sirve como modelo de un "agente"
abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse"
con otros objetos en el sistema sin revelar "c�mo" se implementan estas
caracter�sticas. Los procesos, las funciones o los m�todos pueden tambi�n ser
abstra�dos, y, cuando lo est�n, una variedad de t�cnicas son requeridas para
ampliar una abstracci�n. El proceso de abstracci�n permite seleccionar las
caracter�sticas relevantes dentro de un conjunto e identificar comportamientos
comunes para definir nuevos tipos de entidades en el mundo real. La abstracci�n es
clave en el proceso de an�lisis y dise�o orientado a objetos, ya que mediante ella
podemos llegar a armar un conjunto de clases 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 abstracci�n. Esto permite aumentar la cohesi�n
(dise�o estructurado) de los componentes del sistema. Algunos autores confunden
este concepto con el principio de ocultaci�n, principalmente porque se suelen
emplear conjuntamente.
Polimorfismo
Comportamientos diferentes, asociados a objetos distintos, pueden compartir el
mismo nombre; al llamarlos por ese nombre se utilizar� el comportamiento
correspondiente al objeto que se est� usando. O, dicho de otro modo, las
referencias y las colecciones de objetos pueden contener objetos de diferentes
tipos, y la invocaci�n de un comportamiento en una referencia producir� el
comportamiento correcto para el tipo real del objeto referenciado. Cuando esto
ocurre en "tiempo de ejecuci�n", esta �ltima caracter�stica se llama asignaci�n
tard�a o asignaci�n din�mica. Algunos lenguajes proporcionan medios m�s est�ticos
(en "tiempo de compilaci�n") 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�, formando una
jerarqu�a de clasificaci�n. Los objetos heredan las propiedades y el comportamiento
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 compartir
(y extender) su comportamiento sin tener que volver a implementarlo. Esto suele
hacerse habitualmente agrupando los objetos en clases, y estas en �rboles o
enrejados que reflejan un comportamiento com�n. Cuando un objeto hereda de m�s de
una clase, se dice que hay herencia m�ltiple; siendo de alta complejidad t�cnica
por lo cual suele recurrirse a la herencia virtual para evitar la duplicaci�n de
datos.
Modularidad
Se denomina "modularidad" a la propiedad que permite subdividir una aplicaci�n en
partes m�s peque�as (llamadas m�dulos), cada una de las cuales debe ser tan
independiente como sea posible de la aplicaci�n en s� y de las restantes partes.
Estos m�dulos se pueden compilar por separado, pero tienen conexiones con otros
m�dulos. Al igual que la encapsulaci�n, los lenguajes soportan la modularidad de
diversas formas.
Principio de ocultaci�n
Cada objeto est� aislado del exterior, es un m�dulo natural, y cada tipo de objeto
expone una "interfaz" a otros objetos que especifica c�mo pueden interactuar con
los objetos de la clase. El aislamiento protege a las propiedades de un objeto
contra su modificaci�n por quien no tenga derecho a acceder a ellas; solamente los
propios m�todos internos del objeto pueden acceder a su estado. Esto asegura que
otros objetos no puedan cambiar el estado interno de un objeto de manera
inesperada, eliminando efectos secundarios e interacciones inesperadas. Algunos
lenguajes relajan esto, permitiendo un acceso directo a los datos internos del
objeto de una manera controlada y limitando el grado de abstracci�n. La aplicaci�n
entera se reduce a un agregado o rompecabezas de objetos.
Recolecci�n de basura
La recolecci�n de basura (garbage collection) es la t�cnica por la cual el entorno
de objetos se encarga de destruir autom�ticamente, y por tanto desvincular la
memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos.
Esto significa que el programador no debe preocuparse por la asignaci�n o
liberaci�n de memoria, ya que el entorno la asignar� al crear un nuevo objeto y la
liberar� cuando nadie lo est� usando. En la mayor�a de los lenguajes h�bridos que
se extendieron para soportar el Paradigma de Programaci�n Orientada a Objetos como
C++ u Object Pascal, esta caracter�stica no existe y la memoria debe desasignarse
expresamente.
Resumen
La POO es un paradigma surgido en los a�os 1970, que utiliza objetos como elementos
fundamentales en la construcci�n de la soluci�n. Un objeto es una abstracci�n de
alg�n hecho o ente del mundo real, con atributos que representan sus
caracter�sticas o propiedades, y m�todos que emulan su comportamiento o actividad.
Todas las propiedades y m�todos 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.

Tipos
Para realizar programaci�n orientada a objetos existen dos corrientes
principales:2?3?

Basada en clases.- Es la m�s ampliamente usada por los lenguajes de programaci�n


orientada a objetos. Por ejemplo es usada por Java, C++ y C#. Se basa en crear una
estructura molde llamada clase donde se especifican los campos y m�todos que
tendr�n nuestros objetos. Cada vez que necesitamos un objeto creamos una instancia
(o copia del objeto) usando la clase como molde.
Basada en prototipos.- Es soportado en Javascript, Python y Ruby. No hay clases,
solo hay objetos. El mecanismo para la reutilizaci�n est� dado por la clonaci�n de
objetos. Se crean directamentos objetos y cuando se quiere generar otro con la
misma estructura se usa clonaci�n. Una vez clonado si queremos podemos agregar los
campos y m�todos necesarios. Un objeto protot�pico es un objeto que se utiliza como
una plantilla a partir de la cual se obtiene el conjunto inicial de propiedades de
un objeto. Cualquier objeto puede ser utilizado como el prototipo de otro objeto,
permitiendo al segundo objeto compartir las propiedades del primero.
Algunos lenguajes orientados a objetos
Simula (1967) es aceptado como el primer lenguaje que posee las caracter�sticas
principales de un lenguaje orientado a objetos. Fue creado para hacer programas de
simulaci�n, en donde los "objetos" son la representaci�n de la informaci�n m�s
importante.

Smalltalk (1972 a 1980) es posiblemente el ejemplo can�nico, y con el que gran


parte de la teor�a de la programaci�n orientada a objetos se ha desarrollado.

Entre los lenguajes orientados a objetos se destacan los siguientes:

También podría gustarte