Tipos de Paradigmas de Programación
-
Upload
ing-kelly-antonio-garcia-elizabeth -
Category
Documents
-
view
13 -
download
0
Transcript of Tipos de Paradigmas de Programación
-
5/26/2018 Tipos de Paradigmas de Programaci n
1/12
Tipos de paradigmas de programacin
Imperativo o por procedimientos: es considerado el ms comn y estrepresentado, por ejemplo, por C, BASICo Pascal
Funcional: est representado por Schemeo Haskell. Este es un caso delparadigma declarativo.
Lgico: est representado por Prolog.Este es otro caso del paradigmadeclarativo.
Declarativo: por ejemplo la programacin funcional,laprogramacinlgica, o la combinacin lgico-funcional.
Orientado a objetos: est representado por Smalltalk, un lenguajecompletamente orientado a objetos.
Si bien puede seleccionarse la forma pura de estos paradigmas al momento deprogramar, en la prctica es habitual ue se me!clen, dando lugar a la programacinmultiparadigma.
"ctualmente el paradigma de programacin ms usado es el de la programacinorientada a objetos.
Imperativo o por procedimientos:
#a programacin imperativa, en contraposicin a la programacin declarativaes un
paradigma de programacinue describe la programacin en t$rminos del estado delprograma y sentencias ue cambian dicho estado. #os programas imperativos son un
conjunto de instrucciones ue le indican al computadorcmo reali!ar una tarea.
#a implementacin dehardwarede la mayor%a de computadores es imperativa&
prcticamente todo el hard'are de los computadores est dise(ado para ejecutarcdigo
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 variablesy 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
enI#M, fue el primer gran lenguaje de programacin en superar los obstculospresentados por el cdigo de muina en la creacin de programas complejos.
http://es.wikipedia.org/wiki/Programaci%C3%B3n_imperativahttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Chttp://es.wikipedia.org/wiki/BASIChttp://es.wikipedia.org/wiki/BASIChttp://es.wikipedia.org/wiki/Pascal_(lenguaje_de_programaci%C3%B3n)http://es.wikipedia.org/wiki/Programaci%C3%B3n_funcionalhttp://es.wikipedia.org/wiki/Schemehttp://es.wikipedia.org/wiki/Schemehttp://es.wikipedia.org/wiki/Haskellhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_l%C3%B3gicahttp://es.wikipedia.org/wiki/Prologhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_declarativahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_funcionalhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_funcionalhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_l%C3%B3gicahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_l%C3%B3gicahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_l%C3%B3gicahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetoshttp://es.wikipedia.org/wiki/Smalltalkhttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_multiparadigmahttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_multiparadigmahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetoshttp://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetoshttp://es.wikipedia.org/wiki/Programaci%C3%B3n_imperativahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_declarativahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_declarativahttp://es.wikipedia.org/wiki/Paradigma_de_programaci%C3%B3nhttp://es.wikipedia.org/wiki/Computadorhttp://es.wikipedia.org/wiki/Computadorhttp://es.wikipedia.org/wiki/Hardwarehttp://es.wikipedia.org/wiki/Hardwarehttp://es.wikipedia.org/wiki/C%C3%B3digo_de_m%C3%A1quinahttp://es.wikipedia.org/wiki/C%C3%B3digo_de_m%C3%A1quinahttp://es.wikipedia.org/wiki/C%C3%B3digo_de_m%C3%A1quinahttp://es.wikipedia.org/wiki/M%C3%A1quina_de_Turinghttp://es.wikipedia.org/wiki/M%C3%A1quina_de_Turinghttp://es.wikipedia.org/wiki/Lenguaje_ensambladorhttp://es.wikipedia.org/wiki/Variablehttp://es.wikipedia.org/wiki/Fortranhttp://es.wikipedia.org/wiki/1954http://es.wikipedia.org/wiki/1954http://es.wikipedia.org/wiki/John_Backushttp://es.wikipedia.org/wiki/IBMhttp://es.wikipedia.org/wiki/IBMhttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Chttp://es.wikipedia.org/wiki/BASIChttp://es.wikipedia.org/wiki/Pascal_(lenguaje_de_programaci%C3%B3n)http://es.wikipedia.org/wiki/Programaci%C3%B3n_funcionalhttp://es.wikipedia.org/wiki/Schemehttp://es.wikipedia.org/wiki/Haskellhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_l%C3%B3gicahttp://es.wikipedia.org/wiki/Prologhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_declarativahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_funcionalhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_l%C3%B3gicahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_l%C3%B3gicahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetoshttp://es.wikipedia.org/wiki/Smalltalkhttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_multiparadigmahttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_multiparadigmahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetoshttp://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetoshttp://es.wikipedia.org/wiki/Programaci%C3%B3n_imperativahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_declarativahttp://es.wikipedia.org/wiki/Paradigma_de_programaci%C3%B3nhttp://es.wikipedia.org/wiki/Computadorhttp://es.wikipedia.org/wiki/Hardwarehttp://es.wikipedia.org/wiki/C%C3%B3digo_de_m%C3%A1quinahttp://es.wikipedia.org/wiki/C%C3%B3digo_de_m%C3%A1quinahttp://es.wikipedia.org/wiki/M%C3%A1quina_de_Turinghttp://es.wikipedia.org/wiki/M%C3%A1quina_de_Turinghttp://es.wikipedia.org/wiki/Lenguaje_ensambladorhttp://es.wikipedia.org/wiki/Variablehttp://es.wikipedia.org/wiki/Fortranhttp://es.wikipedia.org/wiki/1954http://es.wikipedia.org/wiki/John_Backushttp://es.wikipedia.org/wiki/IBMhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_imperativa -
5/26/2018 Tipos de Paradigmas de Programaci n
2/12
%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
depuraciny 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 lambdaen lugar de la %$&uina de 'uring!
Funcional&
En ciencias de la computacin, la programacin 'uncionales un paradigma de
programacindeclarativa basado en la utili!acin de'unciones aritm(ticasue 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 elclculo 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 tenerefectos 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.
http://es.wikipedia.org/wiki/BASIChttp://es.wikipedia.org/wiki/BASIChttp://es.wikipedia.org/wiki/C_(lenguaje_de_programaci%C3%B3n)http://es.wikipedia.org/wiki/Fortranhttp://es.wikipedia.org/wiki/Fortranhttp://es.wikipedia.org/wiki/Pascal_(lenguaje_de_programaci%C3%B3n)http://es.wikipedia.org/wiki/Pascal_(lenguaje_de_programaci%C3%B3n)http://es.wikipedia.org/wiki/Perlhttp://es.wikipedia.org/wiki/Perlhttp://es.wikipedia.org/wiki/PHPhttp://es.wikipedia.org/wiki/Luahttp://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n)http://es.wikipedia.org/wiki/Depuraci%C3%B3n_de_programashttp://es.wikipedia.org/wiki/C%C3%A1lculo_lambdahttp://es.wikipedia.org/wiki/M%C3%A1quina_de_Turinghttp://es.wikipedia.org/wiki/Programaci%C3%B3n_funcionalhttp://es.wikipedia.org/wiki/Ciencias_de_la_computaci%C3%B3nhttp://es.wikipedia.org/wiki/Paradigma_de_programaci%C3%B3nhttp://es.wikipedia.org/wiki/Paradigma_de_programaci%C3%B3nhttp://es.wikipedia.org/wiki/Funci%C3%B3n_matem%C3%A1ticahttp://es.wikipedia.org/wiki/Funci%C3%B3n_matem%C3%A1ticahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_imperativahttp://es.wikipedia.org/wiki/C%C3%A1lculo_lambdahttp://es.wikipedia.org/wiki/C%C3%A1lculo_lambdahttp://es.wikipedia.org/wiki/C%C3%A1lculo_lambdahttp://es.wikipedia.org/wiki/Archivo:Subprograma.svghttp://es.wikipedia.org/wiki/BASIChttp://es.wikipedia.org/wiki/C_(lenguaje_de_programaci%C3%B3n)http://es.wikipedia.org/wiki/Fortranhttp://es.wikipedia.org/wiki/Pascal_(lenguaje_de_programaci%C3%B3n)http://es.wikipedia.org/wiki/Perlhttp://es.wikipedia.org/wiki/PHPhttp://es.wikipedia.org/wiki/Luahttp://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n)http://es.wikipedia.org/wiki/Depuraci%C3%B3n_de_programashttp://es.wikipedia.org/wiki/C%C3%A1lculo_lambdahttp://es.wikipedia.org/wiki/M%C3%A1quina_de_Turinghttp://es.wikipedia.org/wiki/Programaci%C3%B3n_funcionalhttp://es.wikipedia.org/wiki/Ciencias_de_la_computaci%C3%B3nhttp://es.wikipedia.org/wiki/Paradigma_de_programaci%C3%B3nhttp://es.wikipedia.org/wiki/Paradigma_de_programaci%C3%B3nhttp://es.wikipedia.org/wiki/Funci%C3%B3n_matem%C3%A1ticahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_imperativahttp://es.wikipedia.org/wiki/C%C3%A1lculo_lambda -
5/26/2018 Tipos de Paradigmas de Programaci n
3/12
#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 dominioespec%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 deerl, 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 deprogramacin funcional.
?37@"?6":
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 estadodel cmputo. #a secuencia de
computaciones llevadas a cabo por el programa se rige nica y e4clusivamente por la
reescriturade 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 devariables 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 funcionalespurosy 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 unlenguaje funcional h%brido.
http://es.wikipedia.org/wiki/Perlhttp://es.wikipedia.org/wiki/Perlhttp://es.wikipedia.org/wiki/JavaScripthttp://es.wikipedia.org/wiki/JavaScripthttp://es.wikipedia.org/w/index.php?title=Definici%C3%B3n_dirigida&action=edit&redlink=1http://es.wikipedia.org/wiki/Transparencia_referencialhttp://es.wikipedia.org/wiki/Efecto_secundario_(computaci%C3%B3n)http://es.wikipedia.org/wiki/Recursi%C3%B3nhttp://es.wikipedia.org/wiki/Recursi%C3%B3nhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_imperativahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_imperativahttp://es.wikipedia.org/wiki/Perlhttp://es.wikipedia.org/wiki/JavaScripthttp://es.wikipedia.org/w/index.php?title=Definici%C3%B3n_dirigida&action=edit&redlink=1http://es.wikipedia.org/wiki/Transparencia_referencialhttp://es.wikipedia.org/wiki/Efecto_secundario_(computaci%C3%B3n)http://es.wikipedia.org/wiki/Recursi%C3%B3nhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_imperativahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_imperativa -
5/26/2018 Tipos de Paradigmas de Programaci n
4/12
-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 depuracinmenos problemtico
3ruebas de unidades ms confiables
1ayor facilidad para la ejecucin concurrente
.enguajes 'uncionales:
Entre los lenguajes funcionales puros, cabe destacar a /as$elly Miranda. #os
lenguajes funcionales h%bridos ms conocidos son *cala+.isp, *cheme, 0caml, *%y*tandard M.*estos dos ltimos, descendientes del lenguaje M.. rlanges otro
lenguaje funcional de programacin concurrente, Mathematicapermite 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& o2ub4
.gico&
#a programacin lgica es un tipo de paradigmas de programacindentro 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#"67? 8S@76":
8istricamente, los ordenadoresse han programado utili!ando lenguajesmuy
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
imperativahan evolucionado de manera ue ya no son tan cr%pticos.
En cambio, lalgica matemticaes la manera ms sencilla, para el intelecto humano,de e4presar formalmente problemas complejos y de resolverlos mediante la aplicacin
http://es.wikipedia.org/wiki/Depuraci%C3%B3n_de_programashttp://es.wikipedia.org/wiki/Haskellhttp://es.wikipedia.org/wiki/Miranda_(lenguaje)http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Scalahttp://es.wikipedia.org/wiki/Lisphttp://es.wikipedia.org/wiki/Schemehttp://es.wikipedia.org/wiki/Ocamlhttp://es.wikipedia.org/wiki/SAPhttp://es.wikipedia.org/wiki/Standard_MLhttp://es.wikipedia.org/wiki/MLhttp://es.wikipedia.org/wiki/Erlanghttp://es.wikipedia.org/wiki/Programaci%C3%B3n_concurrentehttp://es.wikipedia.org/wiki/Mathematicahttp://es.wikipedia.org/wiki/Lenguaje_Rhttp://es.wikipedia.org/wiki/F_Sharphttp://es.wikipedia.org/wiki/F_Sharphttp://es.wikipedia.org/wiki/Perlhttp://es.wikipedia.org/wiki/Pythonhttp://es.wikipedia.org/wiki/Rubyhttp://es.wikipedia.org/wiki/Rubyhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_l%C3%B3gicahttp://es.wikipedia.org/wiki/Paradigma_de_programaci%C3%B3nhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_declarativahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_funcionalhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_funcionalhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_con_restriccioneshttp://es.wikipedia.org/wiki/Programaci%C3%B3n_con_restriccioneshttp://es.wikipedia.org/wiki/Ordenadorhttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3nhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_imperativahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_imperativahttp://es.wikipedia.org/wiki/L%C3%B3gica_matem%C3%A1ticahttp://es.wikipedia.org/wiki/L%C3%B3gica_matem%C3%A1ticahttp://es.wikipedia.org/wiki/L%C3%B3gica_matem%C3%A1ticahttp://es.wikipedia.org/wiki/Depuraci%C3%B3n_de_programashttp://es.wikipedia.org/wiki/Haskellhttp://es.wikipedia.org/wiki/Miranda_(lenguaje)http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Scalahttp://es.wikipedia.org/wiki/Lisphttp://es.wikipedia.org/wiki/Schemehttp://es.wikipedia.org/wiki/Ocamlhttp://es.wikipedia.org/wiki/SAPhttp://es.wikipedia.org/wiki/Standard_MLhttp://es.wikipedia.org/wiki/MLhttp://es.wikipedia.org/wiki/Erlanghttp://es.wikipedia.org/wiki/Programaci%C3%B3n_concurrentehttp://es.wikipedia.org/wiki/Mathematicahttp://es.wikipedia.org/wiki/Lenguaje_Rhttp://es.wikipedia.org/wiki/F_Sharphttp://es.wikipedia.org/wiki/Perlhttp://es.wikipedia.org/wiki/Pythonhttp://es.wikipedia.org/wiki/Rubyhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_l%C3%B3gicahttp://es.wikipedia.org/wiki/Paradigma_de_programaci%C3%B3nhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_declarativahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_funcionalhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_funcionalhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_con_restriccioneshttp://es.wikipedia.org/wiki/Ordenadorhttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3nhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_imperativahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_imperativahttp://es.wikipedia.org/wiki/L%C3%B3gica_matem%C3%A1tica -
5/26/2018 Tipos de Paradigmas de Programaci n
5/12
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 hbitatnatural 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
demostradamentecomputable*hasta el momento.
.enguajes
El lenguaje de programacin lgica por e4celencia es rolog,ue cuenta con diversas
variantes. #a ms importante es laprogramacin lgica con restricciones*v$ase
art%culo sobreprogramacin con restricciones, ue posibilita la resolucin de
ecuacioneslineales adems de la demostracin de hiptesis.
7eclarativo&
#a 3rogramacin )eclarativa, en contraposicin a la programacin imperativaes un
paradigma de programacinue 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 computadoraue es lo ue se desea obtener o ue es lo ue se est
buscando. ?o e4isten asignaciones destructivas, y las variables son utili!adas conTransparencia re'erencial
http://es.wikipedia.org/wiki/Demostraci%C3%B3n_autom%C3%A1ticahttp://es.wikipedia.org/wiki/Lenguaje_naturalhttp://es.wikipedia.org/wiki/Teor%C3%ADa_del_ordenhttp://es.wikipedia.org/wiki/Teor%C3%ADa_del_ordenhttp://es.wikipedia.org/wiki/C%C3%A1lculo_lambdahttp://es.wikipedia.org/wiki/Teor%C3%ADa_de_la_computabilidadhttp://es.wikipedia.org/wiki/Teor%C3%ADa_de_la_computabilidadhttp://es.wikipedia.org/wiki/Prologhttp://es.wikipedia.org/wiki/Prologhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_con_restriccioneshttp://es.wikipedia.org/wiki/Programaci%C3%B3n_con_restriccioneshttp://es.wikipedia.org/wiki/Ecuaci%C3%B3nhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_declarativahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_imperativahttp://es.wikipedia.org/wiki/Paradigma_de_programaci%C3%B3nhttp://es.wikipedia.org/wiki/Softwarehttp://es.wikipedia.org/wiki/Computadorahttp://es.wikipedia.org/wiki/Transparencia_referencialhttp://es.wikipedia.org/wiki/Demostraci%C3%B3n_autom%C3%A1ticahttp://es.wikipedia.org/wiki/Lenguaje_naturalhttp://es.wikipedia.org/wiki/Teor%C3%ADa_del_ordenhttp://es.wikipedia.org/wiki/Teor%C3%ADa_del_ordenhttp://es.wikipedia.org/wiki/C%C3%A1lculo_lambdahttp://es.wikipedia.org/wiki/Teor%C3%ADa_de_la_computabilidadhttp://es.wikipedia.org/wiki/Prologhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_con_restriccioneshttp://es.wikipedia.org/wiki/Ecuaci%C3%B3nhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_declarativahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_imperativahttp://es.wikipedia.org/wiki/Paradigma_de_programaci%C3%B3nhttp://es.wikipedia.org/wiki/Softwarehttp://es.wikipedia.org/wiki/Computadorahttp://es.wikipedia.org/wiki/Transparencia_referencial -
5/26/2018 Tipos de Paradigmas de Programaci n
6/12
7i'erencia entre imperativo 4 declarativo
En la programacin imperativase describe paso a paso un conjunto de instrucciones
ue deben ejecutarse para variar el estado del programa y hallar la solucin, es decir, un
algoritmoen 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 problemaue se uiere solucionar, pero no las instrucciones necesarias para
solucionarlo. Esto ltimo se reali!ar mediante mecanismos internos dein'erenciade
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 programacinue usa objetosy sus interacciones, para dise(ar
aplicaciones y programas in'ormticos,Est basado en varias t$cnicas,
incluyendo herencia+abstraccin+polimor'ismo4 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.
http://es.wikipedia.org/wiki/Programaci%C3%B3n_imperativahttp://es.wikipedia.org/wiki/Algoritmohttp://es.wikipedia.org/wiki/Inferenciahttp://es.wikipedia.org/wiki/Inferenciahttp://es.wikipedia.org/wiki/Prologhttp://es.wikipedia.org/wiki/Maudehttp://es.wikipedia.org/wiki/SQLhttp://es.wikipedia.org/wiki/Haskellhttp://es.wikipedia.org/wiki/Haskellhttp://es.wikipedia.org/wiki/Haskellhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_funcionalhttp://es.wikipedia.org/wiki/MLhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_funcionalhttp://es.wikipedia.org/wiki/Lisphttp://es.wikipedia.org/wiki/Programaci%C3%B3n_funcionalhttp://es.wikipedia.org/wiki/Prologhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_L%C3%B3gicahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetoshttp://es.wikipedia.org/wiki/Paradigma_de_programaci%C3%B3nhttp://es.wikipedia.org/wiki/Objetos_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Inform%C3%A1ticahttp://es.wikipedia.org/wiki/Herencia_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Herencia_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Abstracci%C3%B3n_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Polimorfismo_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Polimorfismo_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Encapsulamiento_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Encapsulamiento_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Programaci%C3%B3n_imperativahttp://es.wikipedia.org/wiki/Algoritmohttp://es.wikipedia.org/wiki/Inferenciahttp://es.wikipedia.org/wiki/Prologhttp://es.wikipedia.org/wiki/Maudehttp://es.wikipedia.org/wiki/SQLhttp://es.wikipedia.org/wiki/Haskellhttp://es.wikipedia.org/wiki/Haskellhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_funcionalhttp://es.wikipedia.org/wiki/MLhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_funcionalhttp://es.wikipedia.org/wiki/Lisphttp://es.wikipedia.org/wiki/Programaci%C3%B3n_funcionalhttp://es.wikipedia.org/wiki/Prologhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_L%C3%B3gicahttp://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetoshttp://es.wikipedia.org/wiki/Paradigma_de_programaci%C3%B3nhttp://es.wikipedia.org/wiki/Objetos_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Inform%C3%A1ticahttp://es.wikipedia.org/wiki/Herencia_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Abstracci%C3%B3n_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Polimorfismo_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Encapsulamiento_(inform%C3%A1tica) -
5/26/2018 Tipos de Paradigmas de Programaci n
7/12
Introduccin
#os objetos son entidades ue tienen un determinado estado, comportamiento (mtodo)
e identidad:
El estadoest compuesto de datos, ser uno o varios atributos a los ue se
habrn asignado unos valores concretos *datos.
El comportamientoest definido por los m-todoso mensajes a los ue sabe
responder dicho objeto, es decir, u$ operaciones se pueden reali!ar con $l.
#a identidades una propiedad de un objeto ue lo diferencia del resto, dicho con
otras palabras, es su identificador *concepto anlogo al de identificador de una
#ariableo 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 programadordebe 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 deinformacin por un lado y clases con m$todos ue manejen a las primeras por el otro.
)e esta manera se estar%a reali!ando unaprogramacin estructuradacamu'ladaen
un lenguaje de programacin orientado a objetos.
#a 377 difiere de laprogramacin estructuradatradicional, 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 paraluego enviarles mensajes solicitndoles ue realicen sus m$todos por s% mismos.
0rigen
#os conceptos de la programacin orientada a objetos tienen origen en*imula :, un
lenguaje dise(ado para hacer simulaciones, creado por0le;"ohan 7ahl4
-
5/26/2018 Tipos de Paradigmas de Programaci n
8/12
=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
deprogramacin 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 demantenimiento 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 i''elde 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 deInternet+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. ntroduce 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
http://es.wikipedia.org/wiki/Smalltalkhttp://es.wikipedia.org/wiki/Xerox_PARChttp://es.wikipedia.org/wiki/Xerox_PARChttp://es.wikipedia.org/wiki/Basichttp://es.wikipedia.org/wiki/C%2B%2Bhttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Chttp://es.wikipedia.org/wiki/Interfaz_gr%C3%A1fica_de_usuariohttp://es.wikipedia.org/wiki/Programaci%C3%B3n_dirigida_por_eventoshttp://es.wikipedia.org/wiki/Programaci%C3%B3n_dirigida_por_eventoshttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Adahttp://es.wikipedia.org/wiki/BASIChttp://es.wikipedia.org/wiki/Lisphttp://es.wikipedia.org/wiki/Lisphttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Pascalhttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Eiffelhttp://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n)http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n)http://es.wikipedia.org/wiki/Internethttp://es.wikipedia.org/wiki/Internethttp://es.wikipedia.org/wiki/Navegadoreshttp://es.wikipedia.org/wiki/Navegadoreshttp://es.wikipedia.org/wiki/PHPhttp://es.wikipedia.org/wiki/PHPhttp://es.wikipedia.org/wiki/Clase_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Herencia_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Objetos_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Smalltalkhttp://es.wikipedia.org/wiki/Xerox_PARChttp://es.wikipedia.org/wiki/Basichttp://es.wikipedia.org/wiki/C%2B%2Bhttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Chttp://es.wikipedia.org/wiki/Interfaz_gr%C3%A1fica_de_usuariohttp://es.wikipedia.org/wiki/Programaci%C3%B3n_dirigida_por_eventoshttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Adahttp://es.wikipedia.org/wiki/BASIChttp://es.wikipedia.org/wiki/Lisphttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Pascalhttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Eiffelhttp://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n)http://es.wikipedia.org/wiki/Internethttp://es.wikipedia.org/wiki/Navegadoreshttp://es.wikipedia.org/wiki/PHPhttp://es.wikipedia.org/wiki/Clase_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Herencia_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Objetos_(programaci%C3%B3n_orientada_a_objetos) -
5/26/2018 Tipos de Paradigmas de Programaci n
9/12
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 puedeproducir un cambio en las propiedades del objeto, o la generacin de un
2evento2 con un nuevo mensaje para otro objeto del sistema.
vento: 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.
stado 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 cmose 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 comportamientoscomunes para definir nuevos tipos de entidades en el mundo real. #a abstraccin
http://es.wikipedia.org/wiki/M%C3%A9todo_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/M%C3%A9todo_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Abstracci%C3%B3n_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/M%C3%A9todo_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Abstracci%C3%B3n_(programaci%C3%B3n_orientada_a_objetos) -
5/26/2018 Tipos de Paradigmas de Programaci n
10/12
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 cohesinde los componentes del sistema. "lgunos
autores confunden este concepto con el principio de ocultacin, principalmente
porue se suelen emplear conjuntamente.
%odularidad0Se 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 ocultacin06ada objeto est aislado del e4terior, es un mdulo
natural, y cada tipo de objeto e4pone una interfaza 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 orompecabe1asde 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 tardao asignacin dinmica. "lgunos lenguajes proporcionan
medios ms estticos *en 2tiempo de compilacin2 de polimorfismo, tales comolas plantillas y lasobrecarga de operadoresde 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
clasesy estas en rboleso enrejadosue reflejan un comportamiento comn.
6uando un objeto hereda de ms de una clase se dice ue hay herencia mltiple.
http://es.wikipedia.org/wiki/Encapsulamiento_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Dise%C3%B1o_estructuradohttp://es.wikipedia.org/wiki/Modularidad_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Principio_de_ocultaci%C3%B3nhttp://es.wikipedia.org/wiki/Rompecabezashttp://es.wikipedia.org/wiki/Polimorfismo_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Sobrecargahttp://es.wikipedia.org/wiki/Sobrecargahttp://es.wikipedia.org/wiki/Herencia_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Encapsulamiento_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Dise%C3%B1o_estructuradohttp://es.wikipedia.org/wiki/Modularidad_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Principio_de_ocultaci%C3%B3nhttp://es.wikipedia.org/wiki/Rompecabezashttp://es.wikipedia.org/wiki/Polimorfismo_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Sobrecargahttp://es.wikipedia.org/wiki/Herencia_(programaci%C3%B3n_orientada_a_objetos) -
5/26/2018 Tipos de Paradigmas de Programaci n
11/12
2ecoleccin de basura0la recoleccin de basura ogarbage collectores 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 lamayor%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 msimportante. 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 C3por medio del mdulo
Class00C3en CPA9,PHP*a partir de su versin H,Po:erBuilder,P)thon,
2ub), Smalltalk*Entorno de objetos puro, %agik+Small;orld,
-
5/26/2018 Tipos de Paradigmas de Programaci n
12/12
"l igual ue 6II otros lenguajes, como CB!, !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 demaduracin, cada ve! atrae a ms investigadores e incluso proyectos comerciales en
todo el mundo.
http://es.wikipedia.org/w/index.php?title=OOCOBOL&action=edit&redlink=1http://es.wikipedia.org/w/index.php?title=OOLISP&action=edit&redlink=1http://es.wikipedia.org/w/index.php?title=OOPROLOG&action=edit&redlink=1http://es.wikipedia.org/w/index.php?title=OOPROLOG&action=edit&redlink=1http://es.wikipedia.org/w/index.php?title=OOPROLOG&action=edit&redlink=1http://es.wikipedia.org/wiki/Object_REXXhttp://es.wikipedia.org/wiki/Object_REXXhttp://es.wikipedia.org/wiki/Object_REXXhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_Orientada_a_Aspectoshttp://es.wikipedia.org/wiki/Programaci%C3%B3n_Orientada_a_Aspectoshttp://es.wikipedia.org/wiki/Programaci%C3%B3n_Orientada_a_Aspectoshttp://es.wikipedia.org/w/index.php?title=OOCOBOL&action=edit&redlink=1http://es.wikipedia.org/w/index.php?title=OOLISP&action=edit&redlink=1http://es.wikipedia.org/w/index.php?title=OOPROLOG&action=edit&redlink=1http://es.wikipedia.org/wiki/Object_REXXhttp://es.wikipedia.org/wiki/Object_REXXhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_Orientada_a_Aspectoshttp://es.wikipedia.org/wiki/Programaci%C3%B3n_Orientada_a_Aspectos