Tipos de Paradigmas de Programación

download Tipos de Paradigmas de Programación

of 12

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