Sei sulla pagina 1di 12

Tipos de paradigmas de programacin

Imperativo o por procedimientos : es considerado el ms comn y est


representado, por ejemplo, por C, BASIC o Pascal
Funcional : est representado por Scheme o Haskell. Este es un caso del
paradigma declarativo.
Lgico : est representado por Prolog. Este es otro caso del paradigma
declarativo.
Declarativo : por ejemplo la programacin funcional, la programacin
lgica, o la combinacin lgico-funcional.
Orientado a objetos : est representado por Smalltalk, un lenguaje
completamente orientado a objetos.
Si bien puede seleccionarse la forma pura de estos paradigmas al momento de
programar, en la prctica es habitual ue se me!clen, dando lugar a la programacin
multiparadigma.
"ctualmente el paradigma de programacin ms usado es el de la programacin
orientada a objetos.
Imperativo o por procedimientos:
#a programacin imperativa, en contraposicin a la programacin declarativa es un
paradigma de programacin ue describe la programacin en t$rminos del estado del
programa y sentencias ue cambian dicho estado. #os programas imperativos son un
conjunto de instrucciones ue le indican al computador cmo reali!ar una tarea.
#a implementacin de hardware de la mayor%a de computadores es imperativa&
prcticamente todo el hard'are de los computadores est dise(ado para ejecutar cdigo
de mquina, ue es nativo al computador, escrito en una forma imperativa. Esto se
debe a ue el hard'are de los computadores implementa el paradigma de las Mquinas
de Turing. )esde esta perspectiva de bajo nivel, el estilo del programa est definido por
los contenidos de la memoria, y las sentencias son instrucciones en el lenguaje de
muina nativo del computador *por ejemplo el lenguaje ensamblador).
#os lenguajes imperativos de alto nivel usan variables y sentencias ms complejas,
pero an siguen el mismo paradigma. #as recetas y las listas de revisin de procesos, a
pesar de no ser programas de computadora, son tambi$n conceptos familiares similares
en estilo a la programacin imperativa& cada paso es una instruccin, y el mundo f%sico
guarda el estado *+oom,.
#os primeros lenguajes imperativos fueron los lenguajes de muina de los
computadores originales. En estos lenguajes, las instrucciones fueron muy simples, lo
cual hi!o la implementacin de hard'are fcil, pero obstruyendo la creacin de
programas complejos. Fortran, cuyo desarrollo fue iniciado en 19! por "ohn #ac$us
en I#M, fue el primer gran lenguaje de programacin en superar los obstculos
presentados por el cdigo de muina en la creacin de programas complejos.
%lgunos lenguajes imperativos&
BASIC , C , ortran , Pascal , Perl , PHP , !ua , "a#a
Nota:
Se ha dicho que el estilo de programacin imperativa, al permitir y depender de
efectos colaterales, como el uso de variables globales, dificulta notablemente la
depuracin y la paralelizacin (la habilidad para dividir el trabajo en muchos hilos de
ejecucin simultnea, en contraposicin a los lenguajes funcionales puros, que se
basan en el c$lculo lambda en lugar de la %$&uina de 'uring!
Funcional&
En ciencias de la computacin, la programacin 'uncional es un paradigma de
programacin declarativa basado en la utili!acin de 'unciones aritm(ticas ue no
maneja datos mutables o de estado. Enfati!a la aplicacin de funciones, en contraste con
el estilo de programacin imperativa, ue enfati!a los cambios de estado. #a
programacin funcional tiene sus ra%ces en el clculo lambda, un sistema formal
desarrollado en los -./0s para investigar la definicin de funcin, la aplicacin de las
funciones y la recursin. 1uchos lenguajes de programacin funcionales pueden ser
vistos como elaboraciones del clculo lambda.
En la prctica, la diferencia entre una funcin matemtica y la nocin de una 2funcin2
utili!ada en la programacin imperativa es ue las funciones imperativas pueden tener
efectos secundarios, al cambiar el valor de clculos reali!ados previamente. 3or esta
ra!n carecen de transparencia referencial, es decir, la misma e4presin ling5%stica
puede resultar en valores diferentes en diferentes momentos dependiendo del estado del
programa siendo ejecutado. 6on cdigo funcional, en contraste, el valor generado por
una funcin depende e4clusivamente de los argumentos alimentados a la funcin. "l
eliminar los efectos secundarios se puede entender y predecir el comportamiento de un
programa mucho ms fcilmente, y esta es una de las principales motivaciones para
utili!ar la programacin funcional.
)iagrama del funcionamiento de una subrutina.
#os lenguajes de programacin funcional, especialmente los ue son puramente
funcionales, han sido enfati!ados en el ambiente acad$mico principalmente y no tanto
en el desarrollo de soft'are comercial. Sin embargo, lenguajes de programacin
importantes tales como Scheme, Erlang, 7bjective 6aml y 8as9el, han sido utili!ados
en aplicaciones comerciales e industriales por muchas organi!aciones. #a programacin
funcional tambi$n es utili!ada en la industria a trav$s de lenguajes de dominio
espec%fico como : *estad%stica,, 1athematica *matemticas simblicas,, ; y < *anlisis
financiero,, => en 1icrosoft.?E@ y AS#@ *A1#,. #enguajes de uso espec%fico usados
comnmente como SB# y #e4CDacc, utili!an algunos elementos de programacin
funcional, especialmente al procesar valores mutables. #as hojas de clculo tambi$n
pueden ser consideradas lenguajes de programacin funcional.
#a programacin funcional tambi$n puede ser desarrollada en lenguajes ue no estn
dise(ados espec%ficamente para la programacin funcional. En el caso de )erl, por
ejemplo, ue es un lenguaje de programacin imperativo, e4iste un libro ue describe
como aplicar conceptos de programacin funcional. "ava*cript+ uno de los lenguajes
ms ampliamente utili!ados en la actualidad, tambi$n incorpora capacidades de
programacin funcional.
E?37:@"?6E":
El objetivo es conseguir lenguajes e4presivos y matemticamente elegantes, en los ue
no sea necesario bajar al nivel de la muina para describir el proceso llevado a cabo
por el programa, y evitar el concepto de estado del cmputo. #a secuencia de
computaciones llevadas a cabo por el programa se rige nica y e4clusivamente por la
reescritura de definiciones ms amplias a otras cada ve! ms concretas y definidas,
usando lo ue se denominan 2de'iniciones dirigidas2
Caractersticas:
#os programas escritos en un lenguaje funcional estn constituidos nicamente por
definiciones de funciones, entendiendo $stas no como subprogramas clsicos de un
lenguaje imperativo, sino como funciones puramente matemticas, en las ue se
verifican ciertas propiedades como la transparencia re'erencial *el significado de una
e4presin depende nicamente del significado de sus sube4presiones,, y por tanto, la
carencia total de e'ectos colaterales,
7tras caracter%sticas propias de estos lenguajes son la no e4istencia de asignaciones de
variables y la falta de construcciones estructuradas como la secuencia o la iteracin *lo
ue obliga en la prctica a ue todas las repeticiones de instrucciones se lleven a cabo
por medio de 'unciones recursivas,.
E4isten dos grandes categor%as de lenguajes funcionales: los funcionales puros y los
hbridos. #a diferencia entre ambos estriba en ue los lenguajes funcionales h%bridos
son menos dogmticos ue los puros, al admitir conceptos tomados de los lenguajes
imperativos, como las secuencias de instrucciones o la asignacin de variables. En
contraste, los lenguajes funcionales puros tienen una mayor potencia e4presiva,
conservando a la ve! su transparencia referencial, algo ue no se cumple siempre con un
lenguaje funcional h%brido.
-entajas de usar un paradigma 'uncional:
Entre las ventajas ue suelen citarse de usar un paradigma funcional en la programacin
de computadoras, estn las siguientes:
"usencia de efectos colaterales
3roceso de depuracin menos problemtico
3ruebas de unidades ms confiables
1ayor facilidad para la ejecucin concurrente
.enguajes 'uncionales:
Entre los lenguajes funcionales puros, cabe destacar a /as$ell y Miranda. #os
lenguajes funcionales h%bridos ms conocidos son *cala+ .isp, *cheme, 0caml, *%) y
*tandard M. *estos dos ltimos, descendientes del lenguaje M.,. 1rlang es otro
lenguaje funcional de programacin concurrente, Mathematica permite la
programacin en mltiples estilos, pero promueve la programacin funcional. 2
tambi$n es un lenguaje funcional dedicado a la estad%stica. :ecientemente 1icrosoft
:esearch est trabajando en el lenguaje F3 *=uncional>,.
Entre otros lenguajes ue se podr%an utili!ar para programacin funcional se podr%an
incluir a )erl, pues, aunue es un lenguaje de propsito muy general, se pueden reali!ar
programas usando e4clusivamente funciones definidas por el usuario& as% como )4thon,
como lenguaje ue incorpora el paradigma funcional& o 2ub4
.gico&
#a programacin lgica es un tipo de paradigmas de programacin dentro del
paradigma de programacin declarativa. El resto de los subparadigmas de
programacin dentro de la programacin declarativa son: programacin
'uncional+ programacin con restricciones+ programas )S# *de dominio
espec%fico, e h%bridos. #a programacin lgica gira en torno al concepto de
predicado, o relacin entre elementos. #a programacin funcional se basa en el
concepto de funcin *ue no es ms ue una evolucin de los predicados,, de
corte ms matemtico.
:E#"6E7? 8ES@7:E6":
8istricamente, los ordenadores se han programado utili!ando lenguajes muy
cercanos a las peculiaridades de la propia muina: operaciones aritm$ticas simples,
instrucciones de acceso a memoria, etc. Fn programa escrito de esta manera puede
ocultar totalmente su propsito a la comprensin de un ser humano, incluso uno
entrenado. 8oy d%a, estos lenguajes pertenecientes al paradigma de la )rogramacin
imperativa han evolucionado de manera ue ya no son tan cr%pticos.
En cambio, la lgica matemtica es la manera ms sencilla, para el intelecto humano,
de e4presar formalmente problemas complejos y de resolverlos mediante la aplicacin
de reglas, hiptesis y teoremas. )e ah% ue el concepto de 2programacin lgica2 resulte
atractivo en diversos campos donde la programacin tradicional es un fracaso.
%plicacin5
#a programacin lgica encuentra su hbitat natural en aplicaciones de inteligencia
artificial o relacionada: sistema e4perto Sistemas e4pertos, donde un sistema de
informacin imita las recomendaciones de un e4perto sobre algn dominio de
conocimiento.
(emostracin autom$tica de teoremas, donde un programa genera nuevos
teoremas sobre una teor%a e4istente.
:econocimiento de lenguaje natural, donde un programa es capa! de
comprender *con limitaciones, la informacin contenida en una e4presin
ling5%stica humana.
Etc.
#a programacin lgica tambi$n se utili!a en aplicaciones ms 2mundanas2 pero de
manera muy limitada, ya ue la programacin tradicional es ms adecuada a tareas de
propsito general.
Fundamentos&
#a mayor%a de los lenguajes de programacin lgica se basan en la teor6a lgica de
primer orden, aunue tambi$n incorporan algunos comportamientos de orden
superior. En este sentido, destacan los lenguajes funcionales, ya ue se basan en el
clculo lambda , ue es la nica teor%a lgica de orden superior ue es
demostradamente computable *hasta el momento,.
.enguajes
El lenguaje de programacin lgica por e4celencia es )rolog, ue cuenta con diversas
variantes. #a ms importante es la programacin lgica con restricciones *v$ase
art%culo sobre programacin con restricciones,, ue posibilita la resolucin de
ecuaciones lineales adems de la demostracin de hiptesis.
7eclarativo&
#a 3rogramacin )eclarativa, en contraposicin a la programacin imperativa es un
paradigma de programacin ue est basado en el desarrollo de programas
especificando o 2declarando2 un conjunto de condiciones, proposiciones,
afirmaciones, restricciones, ecuaciones o transformaciones ue describen el
problema y detallan su solucin. #a solucin es obtenida mediante mecanismos
internos de control, sin especificar e4actamente cmo encontrarla *tan slo se le
indica a la computadora ue es lo ue se desea obtener o ue es lo ue se est
buscando,. ?o e4isten asignaciones destructivas, y las variables son utili!adas con
Transparencia re'erencial
7i'erencia entre imperativo 4 declarativo
En la programacin imperativa se describe paso a paso un conjunto de instrucciones
ue deben ejecutarse para variar el estado del programa y hallar la solucin, es decir, un
algoritmo en el ue se describen los pasos necesarios para solucionar el problema.
En la programacin declarativa las sentencias ue se utili!an lo ue hacen es describir
el problema ue se uiere solucionar, pero no las instrucciones necesarias para
solucionarlo. Esto ltimo se reali!ar mediante mecanismos internos de in'erencia de
informacin a partir de la descripcin reali!ada.
Tipos
E4isten varios tipos de lenguajes declarativos:
#os lenguajes lgicos, como Prolog.
#os lenguajes algebraicos, como %aude ) S*!
#os lenguajes funcionales, como Haskell
-entajas
Se ha dicho ue los lenguajes declarativos tienen la ventaja de ser ra!onados
matemticamente, lo ue permite el uso de mecanismos matemticos para optimi!ar el
rendimiento de los programas.
Son fiables, elegantes y e4presivos.
%lgunos lenguajes declarativos
Haskell +Programacin funcional,
%! +Programacin funcional,
!isp +Programacin funcional,
Prolog +Programacin !gica,
=-3rolog *3rogramacin #gica )ifusa,
6urry *3rogramacin #gico-=uncional,
0rientado a objetos&
#a programacin orientada a objetos o 377 *773 segn sus siglas en ingl$s, es un
paradigma de programacin ue usa objetos y sus interacciones, para dise(ar
aplicaciones y programas in'ormticos, Est basado en varias t$cnicas,
incluyendo herencia+ abstraccin+ polimor'ismo 4 encapsulamiento, Su uso se
populari! a principios de la d$cada de los a(os -..0. En la actualidad, e4iste
variedad de lenguajes de programacin ue soportan la orientacin a objetos.
Introduccin
#os objetos son entidades ue tienen un determinado estado, comportamiento (mtodo)
e identidad:
El estado est compuesto de datos, ser uno o varios atributos a los ue se
habrn asignado unos valores concretos *datos,.
El comportamiento est definido por los m-todos o mensajes a los ue sabe
responder dicho objeto, es decir, u$ operaciones se pueden reali!ar con $l.
#a identidad es una propiedad de un objeto ue lo diferencia del resto, dicho con
otras palabras, es su identificador *concepto anlogo al de identificador de una
#ariable o una constante,.
Fn objeto contiene toda la informacin ue 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. " su ve!, los objetos disponen
de mecanismos de interaccin llamados m-todos, ue favorecen la comunicacin entre
ellos. Esta comunicacin favorece a su ve! el cambio de estado en los propios objetos.
Esta caracter%stica lleva a tratarlos como unidades indivisibles, en las ue no se separa el
estado y el comportamiento.
#os m(todos 8comportamiento) y atributos 8estado) estn estrechamente relacionados
por la propiedad de conjunto. Esta propiedad destaca ue una clase reuiere de m$todos
para poder tratar los atributos con los ue cuenta. El programador debe pensar
indistintamente en ambos conceptos, sin separar ni darle mayor importancia a alguno de
ellos. 8acerlo podr%a producir el hbito errneo de crear clases contenedoras de
informacin por un lado y clases con m$todos ue manejen a las primeras por el otro.
)e esta manera se estar%a reali!ando una programacin estructurada camu'lada en
un lenguaje de programacin orientado a objetos.
#a 377 difiere de la programacin estructurada tradicional, en la ue los datos y los
procedimientos estn separados y sin relacin, ya ue lo nico ue se busca es el
procesamiento de unos datos de entrada para obtener otros de salida. #a programacin
estructurada anima al programador a pensar sobre todo en t$rminos de procedimientos o
funciones, y en segundo lugar en las estructuras de datos ue esos procedimientos
manejan. En la programacin estructurada solo se escriben funciones ue procesan
datos. #os programadores ue emplean 377, en cambio, primero definen objetos para
luego enviarles mensajes solicitndoles ue realicen sus m$todos por s% mismos.
0rigen
#os conceptos de la programacin orientada a objetos tienen origen en *imula 9:, un
lenguaje dise(ado para hacer simulaciones, creado por 0le;"ohan 7ahl 4 <risten
=4gaard del 6entro de 6mputo ?oruego en 0slo. En este centro, se trabajaba en
simulaciones de naves, ue fueron confundidas por la e4plosin combinatoria de cmo
las diversas cualidades de diferentes naves pod%an afectar unas a las otras. #a 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.
=ueron refinados ms tarde en *malltal$, desarrollado en Simula en >ero? )%2@
*cuya primera versin fue escrita sobre #asic, pero dise(ado para ser un sistema
completamente dinmico en el cual los objetos se podr%an crear y modificar 2sobre la
marcha2 *en tiempo de ejecucin, en lugar de tener un sistema basado en programas
estticos.
#a programacin orientada a objetos se fue convirtiendo en el estilo de programacin
dominante a mediados de los a(os ochenta, en gran parte debido a la influencia de @AA,
una e4tensin del lenguaje de programacin @. Su dominacin fue consolidada
gracias al auge de las Inter'aces gr'icas de usuario+ para las cuales la programacin
orientada a objetos est particularmente bien adaptada. En este caso, se habla tambi$n
de programacin dirigida por eventos,
#as caracter%sticas de orientacin a objetos fueron agregadas a muchos lenguajes
e4istentes durante ese tiempo, incluyendo %da+ #%*I@+ .isp+ )ascal, entre otros. #a
adicin de estas caracter%sticas a los lenguajes ue no fueron dise(ados inicialmente
para ellas condujo a menudo a problemas de compatibilidad y en la capacidad de
mantenimiento del cdigo. #os lenguajes orientados a objetos 2puros2, por su parte,
carec%an de las caracter%sticas de las cuales muchos programadores hab%an venido a
depender. 3ara saltar este obstculo, se hicieron muchas tentativas para crear nuevos
lenguajes basados en m$todos orientados a objetos, pero permitiendo algunas
caracter%sticas imperativas de maneras 2seguras2. El 1i''el de Gertrand 1eyer fue un
temprano y moderadamente acertado lenguaje con esos objetivos pero ahora ha sido
esencialmente reempla!ado por "ava, en gran parte debido a la aparicin de Internet+ y
a la implementacin de la muina virtual de ;ava en la mayor%a de navegadores, )/)
en su versin H se ha modificado, soporta una orientacin completa a objetos,
cumpliendo todas las caracter%sticas propias de la orientacin a objetos.
@onceptos 'undamentales
#a programacin orientada a objetos es una forma de programar ue trata de encontrar
una solucin a estos problemas. Entroduce nuevos conceptos, ue superan y ampl%an
conceptos antiguos ya conocidos. Entre ellos destacan los siguientes:
Clase : definiciones de las propiedades y comportamiento de un tipo de objeto
concreto. #a instanciacin es la lectura de estas definiciones y la creacin de un
objeto a partir de ellas.
Herencia & *por ejemplo, herencia de la clase 6 a la clase ), Es la facilidad
mediante la cual la clase ) hereda en ella cada uno de los atributos y
operaciones de 6, como si esos atributos y operaciones hubiesen sido definidos
por la misma ). 3or lo tanto, puede usar los mismos m$todos y variables
pblicas declaradas en 6. #os componentes registrados como 2privados2
*pr%vate, tambi$n se heredan, pero como no pertenecen a la clase, se mantienen
escondidos al programador y slo pueden ser accedidos a trav$s de otros
m$todos pblicos. Esto es as% para mantener hegemnico el ideal de 773.
.bjeto : entidad provista de un conjunto de propiedades o atributos *datos, y de
comportamiento o funcionalidad *m$todos, los mismos ue consecuentemente
reaccionan a eventos. Se corresponde con los objetos reales del mundo ue nos
rodea, o a objetos internos del sistema *del programa,. Es una instancia a una
clase.
%-todo : "lgoritmo asociado a un objeto *o a una clase de objetos,, cuya
ejecucin se desencadena tras la recepcin de un 2mensaje2. )esde el punto de
vista del comportamiento, es lo ue el objeto puede hacer. Fn m$todo puede
producir un cambio en las propiedades del objeto, o la generacin de un
2evento2 con un nuevo mensaje para otro objeto del sistema.
1vento: Es un suceso en el sistema *tal como una interaccin del usuario con la
muina, o un mensaje enviado por un objeto,. El sistema maneja el evento
enviando el mensaje adecuado al objeto pertinente. @ambi$n se puede definir
como evento, a la reaccin ue puede desencadenar un objeto, es decir la accin
ue genera.
Mensaje: una comunicacin dirigida a un objeto, ue le ordena ue ejecute uno
de sus m$todos con ciertos parmetros asociados al evento ue lo gener.
)ropiedad o atributo: contenedor de un tipo de datos asociados a un objeto *o a
una clase de objetos,, ue 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 ejecucin de algn m$todo.
1stado interno: es una variable ue se declara privada, ue puede ser
nicamente accedida y alterada por un m$todo del objeto, y ue se utili!a para
indicar distintas situaciones posibles para el objeto *o clase de objetos,. ?o es
visible al programador ue maneja una instancia de la clase.
@omponentes de un objeto: atributos, identidad, relaciones y m$todos.
Identi'icacin de un objeto: un objeto se representa por medio de una tabla o
entidad ue est$ compuesta por sus atributos y funciones correspondientes.
En comparacin con un lenguaje imperativo, una 2variable2, no es ms ue un
contenedor interno del atributo del objeto o de un estado interno, as% como la 2funcin2
es un procedimiento interno del m$todo del objeto
@aracter6sticas de la )00
E4iste un acuerdo acerca de u$ caracter%sticas contempla la 2orientacin a objetos2, las
caracter%sticas siguientes son las ms importantes:
Abstraccin : denota las caracter%sticas esenciales de un objeto, donde se
capturan sus comportamientos. 6ada objeto en el sistema sirve como modelo de
un 2agente2 abstracto ue puede reali!ar trabajo, informar y cambiar su estado, y
2comunicarse2 con otros objetos en el sistema sin revelar cmo se implementan
estas caracter%sticas. #os procesos, las funciones o los m$todos pueden tambi$n
ser abstra%dos y cuando lo estn, una variedad de t$cnicas son reueridas para
ampliar una abstraccin. El proceso de abstraccin permite seleccionar las
caracter%sticas relevantes dentro de un conjunto e identificar comportamientos
comunes para definir nuevos tipos de entidades en el mundo real. #a abstraccin
es clave en el proceso de anlisis y dise(o orientado a objetos, ya ue mediante
ella podemos llegar a armar un conjunto de clases ue permitan modelar la
realidad o el problema ue se uiere atacar.
/ncapsulamiento : Significa reunir a todos los elementos ue pueden
considerarse pertenecientes a una misma entidad, al mismo nivel de abstraccin.
Esto permite aumentar la cohesin de los componentes del sistema. "lgunos
autores confunden este concepto con el principio de ocultacin, principalmente
porue se suelen emplear conjuntamente.
%odularidad 0 Se denomina 1odularidad a la propiedad ue permite subdividir
una aplicacin en partes ms peue(as *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
cone4iones con otros mdulos. "l igual ue la encapsulacin, los lenguajes
soportan la 1odularidad de diversas formas.
Principio de ocultacin 0 6ada objeto est aislado del e4terior, es un mdulo
natural, y cada tipo de objeto e4pone una interfaz a otros objetos ue espec%fica
cmo pueden interactuar con los objetos de la clase. El aislamiento protege a las
propiedades de un objeto contra su modificacin por uien no tenga derecho a
acceder a ellas, solamente los propios m$todos internos del objeto pueden
acceder a su estado. Esto asegura ue otros objetos no pueden cambiar el estado
interno de un objeto de maneras inesperadas, eliminando efectos secundarios e
interacciones inesperadas. "lgunos lenguajes relajan esto, permitiendo un acceso
directo a los datos internos del objeto de una manera controlada y limitando el
grado de abstraccin. #a aplicacin entera se reduce a un agregado o
rompecabe1as de objetos.
Polimorfismo : comportamientos diferentes, asociados a objetos distintos,
pueden compartir el mismo nombre, al llamarlos por ese nombre se utili!ar el
comportamiento correspondiente al objeto ue se est$ usando. 7 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.
6uando esto ocurre en 2tiempo de ejecucin2, esta ltima caracter%stica se llama
asignacin tarda o asignacin dinmica. "lgunos lenguajes proporcionan
medios ms estticos *en 2tiempo de compilacin2, de polimorfismo, tales como
las plantillas y la sobrecarga de operadores de 6II.
Herencia : las clases no estn aisladas, sino ue se relacionan entre s%, formando
una jeraru%a de clasificacin. #os objetos heredan las propiedades y el
comportamiento de todas las clases a las ue pertenecen. #a herencia organi!a y
facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser
definidos y creados como tipos especiali!ados de objetos pree4istentes. Estos
pueden compartir *y e4tender, su comportamiento sin tener ue volver a
implementarlo. Esto suele hacerse habitualmente agrupando los objetos en
clases y estas en rboles o enrejados ue reflejan un comportamiento comn.
6uando un objeto hereda de ms de una clase se dice ue hay herencia mltiple.
2ecoleccin de basura 0 la recoleccin de basura o garbage collector es la
t$cnica por la cual el entorno de objetos se encarga de destruir automticamente,
y por tanto desvincular la memoria asociada, los objetos ue hayan uedado sin
ninguna referencia a ellos. Esto significa ue el programador no debe
preocuparse por la asignacin o liberacin de memoria, ya ue 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 ue se e4tendieron para soportar el 3aradigma
de 3rogramacin 7rientada a 7bjetos como 6II u .bjeto Pascal, esta
caracter%stica no e4iste y la memoria debe desasignarse manualmente.
2esumen
#a programacin orientada a objetos es un paradigma ue utili!a objetos como
elementos fundamentales en la construccin de la solucin. Surge en los a(os J0. Fn
objeto es una abstraccin de algn hecho o ente del mundo real ue tiene atributos ue
representan sus caracter%sticas o propiedades y m$todos ue representan su
comportamiento o acciones ue reali!an. @odas las propiedades y m$todos comunes a
los objetos se encapsulan o se agrupan en clases. Fna clase es una plantilla o un
prototipo para crear objetos, por eso se dice ue los objetos son instancias de clases.
.enguajes orientados a objetos
Simula *-.KJ, es aceptado como el primer lenguaje ue posee las caracter%sticas
principales de un lenguaje orientado a objetos. =ue creado para hacer programas de
simulacin, en donde los 2objetos2 son la representacin de la informacin ms
importante. Smalltal9 *-.JL a -.M0, es posiblemente el ejemplo cannico, y con el ue
gran parte de la teor%a de la programacin orientada a objetos se ha desarrollado.
Entre los lenguajes orientados a objetos se destacan los siguientes:
ABAP -N S"3 #enguaje orientado a eventos, "G# #enguaje de programacin
de 7penEdge de 3rogress Soft'are. ActionScript, ActionScript 3, Ada, C44,
C5, Clarin, Clipper +lenguaje de programacin, *Oersin H.4 con librer%a de
objetos 6lass*y,,, (, .bject Pascal +/mbarcadero (elphi,, 6ambas,
Harbour, /iffel, "a#a "a#aScript *la herencia se reali!a por medio de la
programacin basada en prototipos,, !e7ico *en castellano,, .bjecti#e8C,
.caml, .1, 2.
Perl *soporta herencia mltiple. #a resolucin se reali!a en pre orden, pero
puede modificarse al algoritmo lineari1ation C3 por medio del mdulo
Class00C3 en CPA9,,PHP *a partir de su versin H,, Po:erBuilder, P)thon,
2ub), Smalltalk *Entorno de objetos puro,, %agik +Small;orld,, <ala,
<B.9/', <isual o7Pro *en su versin K,, <isual Basic =.>, <isual (atale7,
<isual .bjects, ?Base44, !enguaje (2P
!enguaje de programacin Scala +lenguaje usado por ':itter,
http0@@:::.scala8lang.org@page.jsp
1uchos de estos lenguajes de programacin no son puramente orientados a objetos,
sino ue son h%bridos ue combinan la 377 con otros paradigmas.
"l igual ue 6II otros lenguajes, como ..C.B.!, ..!ISP, ..P2.!.6 ) .bject
2/??, han sido creados a(adiendo e4tensiones orientadas a objetos a un lenguaje de
programacin clsico.
Fn nuevo paso en la abstraccin de paradigmas de programacin es la Programacin
.rientada a Aspectos *37",. "unue es todav%a una metodolog%a en estado de
maduracin, cada ve! atrae a ms investigadores e incluso proyectos comerciales en
todo el mundo.

Potrebbero piacerti anche