Está en la página 1de 8

PROGRAMACION ORIENTADO A OBJETOS

Programacin orientada a objetos


Este artculo o seccin necesita referencias que aparezcan en una publicacin
acreditada. Este aviso fue puesto el 14 de febrero de 2015.
Puedes aadirlas o avisar al autor principal del artculo en su pgina de discusin
pegando: {{sust:Aviso referencias|Programacin
orientada a objetos}} ~~~~

La programacin orientada a objetos (POO, u OOP segn sus siglas en ingls) es


un paradigma de programacin que viene a innovar la forma de obtener resultados. Los
objetos manipulan los datos de entrada para la obtencin de datos de salida especficos,
donde cada objeto ofrece una funcionalidad especial.
Muchos de los objetos pre-diseados de los lenguajes de programacin actuales permiten la
agrupacin en bibliotecas o libreras, sin embargo, muchos de estos lenguajes permiten al
usuario la creacin de sus propias bibliotecas.
Est basada en varias tcnicas,
incluyendo herencia, cohesin, abstraccin, polimorfismo, acoplamiento y encapsulamiento.
Su uso se populariz a principios de la dcada de 1990. En la actualidad, existe una gran
variedad de lenguajes de programacin que soportan la orientacin a objetos.

ndice
[ocultar]

1Introduccin
2Origen
3Conceptos fundamentales
4Caractersticas de la POO
5Resumen
6Tipos
7Algunos lenguajes orientados a objetos
8Vase tambin
9Notas y referencias
10Enlaces externos

Introduccin[editar]
Los objetos son entidades que tienen un determinado "estado", "comportamiento (mtodo)" e
"identidad":

La identidad es una propiedad de un objeto que lo diferencia del resto; dicho 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 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 interaccin llamados mtodos, que favorecen la comunicacin entre ellos.
Esta comunicacin favorece a su vez el cambio de estado en los propios objetos. Esta
caracterstica lleva a tratarlos como unidades indivisibles, en las que no se separa el estado y
el comportamiento.
Los mtodos (comportamiento) y atributos (estado) estn estrechamente relacionados por la
propiedad de conjunto. Esta propiedad destaca que una clase requiere de mtodos 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 podra producir el
hbito errneo de crear clases contenedoras 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 tradicional, 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 otros de salida. La
programacin estructurada anima al programador a pensar sobre todo en trminos de
procedimientos o funciones, y en segundo lugar en las estructuras 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 realicen sus mtodos por s mismos.

Origen[editar]
Los conceptos de la POO tienen origen en Simula 67, un lenguaje diseado para hacer
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 fueron confundidas por la
explosin combinatoria de cmo las diversas cualidades de diferentes 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 tarde en Smalltalk, desarrollado en Simula en Xerox
PARC (cuya primera versin fue escrita sobre Basic) pero diseado para ser un sistema
completamente dinmico en el cual los objetos se podran crear y modificar "sobre la marcha"
(en tiempo de ejecucin) en lugar de tener un sistema basado en programas estticos.
La POO se fue convirtiendo en el estilo de programacin dominante a mediados de los 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 este caso, se habla
tambin de programacin dirigida por eventos.
Las caractersticas de orientacin a objetos fueron agregadas a muchos lenguajes existentes
durante ese tiempo, incluyendo Ada, BASIC, Lisp ms Pascal, entre otros. La adicin de estas
caractersticas a los lenguajes que no fueron diseados inicialmente 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 parte, carecan de las caractersticas de las
cuales muchos programadores haban venido a depender. Para saltar este obstculo, se
hicieron muchas tentativas para crear nuevos lenguajes basados en mtodos orientados a
objetos, pero permitiendo algunas caractersticas imperativas de maneras "seguras".
El lenguaje de programacin 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 aparicin de Internet y a la implementacin de la mquina
virtual Java en la mayora de navegadores web. PHP en su versin 5 se ha modificado;
soporta una orientacin completa a objetos, cumpliendo todas las caractersticas propias de la
orientacin a objetos.

Conceptos fundamentales[editar]
La POO es una forma de programar que trata de encontrar una solucin a estos problemas.
Introduce nuevos conceptos, que superan y amplan conceptos antiguos ya conocidos. Entre
ellos destacan los siguientes:
Clase
Definiciones de las propiedades y comportamiento de un tipo de objeto concreto. 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 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 mtodos y variables registrados como "pblicos" (public) en C. Los
componentes registrados como "privados" (private) tambin se heredan pero se
mantienen escondidos al programador y slo pueden ser accedidos a travs de otros
mtodos pblicos. Para poder acceder a un atributo u operacin 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 sern
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 (mtodos), 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).
Mtodo
Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecucin se
desencadena tras la recepcin de un "mensaje". Desde el punto de vista del
comportamiento, 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 mensaje
adecuado al objeto pertinente. Tambin se puede definir como evento la reaccin 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 mtodos
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 objetos), que
hace los datos visibles desde fuera del objeto y esto se define como sus
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 alterada
por un mtodo 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 mtodos.
Identificacin de un objeto
Un objeto se representa por medio de una tabla o entidad que est compuesta por sus
atributos y funciones correspondientes.
En comparacin con un lenguaje imperativo, una
"variable" no es ms que un contenedor interno
del atributo del objeto o de un estado interno, as
como la "funcin" es un procedimiento interno del
mtodo del objeto.

Caractersticas de la POO[editar]
Existe un acuerdo acerca de qu caractersticas
contempla la "orientacin a objetos". Las
caractersticas siguientes son las ms
importantes:1
Abstraccin
Denota las caractersticas 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 "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 proceso de abstraccin permite seleccionar las caractersticas
relevantes dentro de un conjunto e identificar comportamientos comunes para definir
nuevos tipos de entidades en el mundo real. La abstraccin es clave en el proceso de
anlisis y diseo 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 abstraccin. Esto permite aumentar la cohesin
(diseo estructurado) de los componentes del sistema. Algunos autores confunden
este concepto con el principio de ocultacin, 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 invocacin de un
comportamiento en una referencia producir el comportamiento correcto para el tipo
real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecucin", esta ltima
caracterstica se llama asignacin tarda o asignacin dinmica. Algunos lenguajes
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, formando una
jerarqua de clasificacin. 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 comn. Cuando un objeto hereda de ms de una clase se
dice que hay herencia mltiple; siendo de alta complejidad tcnica por lo cual suele
recurrirse a la herencia virtual para evitar la duplicacin de datos.
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
independiente como sea posible de la aplicacin en s y de las restantes partes. Estos
mdulos se pueden compilar por separado, pero tienen conexiones con otros mdulos.
Al igual que la encapsulacin, los lenguajes soportan la modularidad de diversas
formas.
Principio de ocultacin
Cada objeto est aislado del exterior, es un mdulo natural, y cada tipo de objeto
expone una "interfaz" a otros objetos que especifica cmo pueden interactuar con 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 los 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 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 abstraccin. La aplicacin entera se reduce
a un agregado o rompecabezas de objetos.
Recoleccin de basura
La recoleccin de basura (garbage collection) es la tcnica por la cual el entorno de
objetos se encarga de destruir automticamente, 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 asignacin o liberacin de memoria,
ya que el entorno la asignar al crear un nuevo objeto y la liberar cuando nadie lo
est usando. En la mayora de los lenguajes hbridos que se extendieron para soportar
el Paradigma de Programacin Orientada a Objetos como C++ u Object Pascal, esta
caracterstica no existe y la memoria debe desasignarse expresamente.

Resumen[edita
r]
La POO es un
paradigma surgido
en los aos 1970,
que utiliza objetos
como elementos
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
propiedades 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.

Tipos[editar]
Para realizar
programacin
orientada a objetos
existen dos
corrientes
principales:23

Basarse en
clases.- Es la
ms
ampliamente
usada por los
lenguajes de
programacin
orientada a
objetos POO.
Por ejemplo es
usada por Java,
C++ y C#. Se
basa en crear
una estructura
molde llamada
clase donde se
especifican los
campos y
mtodos que
tendrn
nuestros
objetos. Cada
vez que
necesitamos un
objeto creamos
una instancia (o
copia del objeto)
usando la clase
como molde.
Basarse en
prototipos.- Es
soportado en
Javascript,
Python y Ruby.
No hay clases,
solo hay
objetos. El
mecanismo
para la
reutilizacin
est dado por
la clonacin de
objetos. Se
crean
directamentos
objetos y
cuando se
quiere generar
otro con la
misma
estructura se
usa clonacin.
Una vez
clonado si
queremos
podemos
agregar los
campos y
mtodos
necesarios.
Un objeto
prototpico 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[editar]
Simula (1967) es
aceptado como el
primer lenguaje que
posee las
caractersticas
principales de un
lenguaje orientado a
objetos. Fue creado
para hacer
programas de
simulacin, en
donde los "objetos"
son la
representacin de la
informacin ms
importante.
Smalltalk (1972 a
1980) es
posiblemente el
ejemplo cannico, y
con el que gran
parte de la teora de
la programacin
orientada a objetos
se ha desarrollado.
Entre los lenguajes
orientados a objetos
se destacan los
siguientes:

También podría gustarte