Sunteți pe pagina 1din 18

<<< PARADIGMA Y LENGUAJE DE PROGRAMACIN >>>

UNIDAD II ANLISIS DE LOS PRINCIPALES PARADIGMAS

2.1 PARADIGMA DE PROGRAMACIN IMPERATIVA.

La programacin imperativa, en contraposicin a la programacin declarativa es un paradigma de programacin que describe la programacin en trminos del estado del programa y sentencias que cambian dicho estado. Los programas imperativos son un conjunto de instrucciones que le indican al computador cmo realizar una tarea.

La implementacin de hardware de la mayora de computadores es imperativa; prcticamente todo el hardware de los computadores est diseado para ejecutar cdigo de mquina, que es nativo al computador, escrito en una forma imperativa. Esto se debe a que el hardware de los computadores implementa el paradigma de las Mquinas de Turing. Desde 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 mquina nativo del computador (por ejemplo el lenguaje ensamblador).

Los lenguajes imperativos de alto nivel usan variables y sentencias ms complejas, pero an siguen el mismo paradigma. Las recetas y las listas de revisin de procesos, a pesar de no ser programas de computadora, son tambin conceptos familiares similares en estilo a la programacin imperativa; cada paso es una instruccin, y el mundo fsico guarda el estado (Zoom).

Los primeros lenguajes imperativos fueron los lenguajes de mquina de los computadores originales. En estos lenguajes, las instrucciones fueron muy simples, lo cual

*** UNIDAD II: ANLISIS DE LOS PRINCIPALES PARADIGMAS. ***

<<< PARADIGMA Y LENGUAJE DE PROGRAMACIN >>>

hizo la implementacin de hardware fcil, pero obstruyendo la creacin de programas complejos. Fortran, cuyo desarrollo fue iniciado en 1954 por John Backus en IBM, fue el primer gran lenguaje de programacin en superar los obstculos presentados por el cdigo de mquina en la creacin de programas complejos.

Algunos lenguajes imperativos son:


ASP BASIC C Fortran Pascal Perl PHP Lua Java Desde el punto de vista personal se ha dicho que el estilo de programacin

imperativa, al permitir y depender de efectos colaterales, como el uso de variables globales, dificulta notablemente la depuracin y la paralelizacin (la habilidad para dividir el trabajo en muchos hilos de ejecucin concurrente), en contraposicin a los lenguajes funcionales puros, que se basan en el clculo lambda en lugar de la Mquina de Turing.

2.2 PARADIGMA DE PROGRAMACIN En Lgica.

La programacin lgica consiste en la aplicacin del corpus de conocimiento sobre lgica para el diseo de lenguajes de programacin; no debe confundirse con la disciplina de la lgica computacional. La programacin lgica es un tipo de paradigmas de programacin dentro del paradigma de programacin declarativa. El resto de los subparadigmas de programacin
*** UNIDAD II: ANLISIS DE LOS PRINCIPALES PARADIGMAS. ***

<<< PARADIGMA Y LENGUAJE DE PROGRAMACIN >>>

dentro de la programacin declarativa son: programacin funcional, programacin basada en restricciones, programas DSL (de dominio especfico) e hbridos. La programacin lgica gira en torno al concepto de predicado, o relacin entre elementos. La programacin funcional se basa en el concepto de funcin (que no es ms que una evolucin de los predicados), de corte ms matemtico.

MOTIVACIN:

Histricamente, los ordenadores se han programado utilizando lenguajes muy cercanos a las peculiaridades de la propia mquina: operaciones aritmticas simples, instrucciones de acceso a memoria, etc. Un programa escrito de esta manera puede ocultar totalmente su propsito a la comprensin de un ser humano, incluso uno entrenado. Hoy da, estos lenguajes pertenecientes al paradigma de la Programacin imperativa han evolucionado de manera que ya no son tan crpticos. En cambio, la lgica matemtica es la manera ms sencilla, para el intelecto humano, de expresar formalmente problemas complejos y de resolverlos mediante la aplicacin de reglas, hiptesis y teoremas. De ah que el concepto de "programacin lgica" resulte atractivo en diversos campos donde la programacin tradicional es un fracaso.

CAMPOS DE APLICACIN:

La programacin lgica encuentra su hbitat natural en aplicaciones de inteligencia artificial o relacionada: sistema experto/Sistemas expertos, donde un sistema de informacin imita las recomendaciones de un experto sobre algn dominio de conocimiento.
Demostracin automtica de teoremas, donde un programa genera nuevos teoremas

sobre una teora existente.

*** UNIDAD II: ANLISIS DE LOS PRINCIPALES PARADIGMAS. ***

<<< PARADIGMA Y LENGUAJE DE PROGRAMACIN >>>

Reconocimiento de lenguaje natural, donde un programa es capaz de comprender

(con limitaciones) la informacin contenida en una expresin lingstica humana.


Etc.

La programacin lgica tambin se utiliza en aplicaciones ms "mundanas" pero de manera muy limitada, ya que la programacin tradicional es ms adecuada a tareas de propsito general.

FUNDAMENTOS: La mayora de los lenguajes de programacin lgica se basan en la teora lgica de primer orden, aunque tambin incorporan algunos comportamientos de orden superior. En este sentido, destacan los lenguajes funcionales, ya que se basan en el clculo lambda, que es la nica teora lgica de orden superior que es demostradamente computable (hasta el momento).

EN QU CONSISTE (EJEMPLO)?: La programacin lgica permite formalizar hechos del mundo real, por ejemplo: las aves vuelan los pinginos no vuelan "pichurri" es un ave "sandokan" es un perro "alegra" es un ave Y tambin reglas o restricciones: una mascota vuela si es un ave y no es un pingino

*** UNIDAD II: ANLISIS DE LOS PRINCIPALES PARADIGMAS. ***

<<< PARADIGMA Y LENGUAJE DE PROGRAMACIN >>>

Ante dicho "programa" es posible establecer hiptesis que no son ms que preguntas o incgnitas, por ejemplo: "pichurri" vuela ? Qu mascotas vuelan ?....

Gracias a que la lgica de primer orden es computable, el ordenador ser capaz de verificar la hiptesis, es decir, responder a las incgnitas: Es cierto que "pichurri" vuela. "pichurri" y "alegra" vuelan.

Obsrvese que el programa lgico no solamente es capaz de responder si una determinada hiptesis es verdadera o falsa. Tambin es capaz de determinar que valores de la incgnita hacen cierta la hiptesis.

Este ejemplo es claramente acadmico. Sin embargo, consideremos el siguiente ejemplo: el sistema de control de semforos de una ciudad.

El estado de cada uno de los semforos (verde, rojo o mbar) constituye los hechos del mundo real. El programa en s consiste en unas pocas reglas de sentido comn: determinados semforos no pueden permanecer simultneamente en verde, un semforo solamente puede transitar de verde a mbar y de mbar a rojo, etc. La hiptesis es el estado en el que deberan estar cada uno de los semforos en el siguiente instante de tiempo.

ste es un ejemplo imposible de resolver mediante programacin tradicional, ya que la lgica subyacente al comportamiento de los semforos en su conjunto queda

*** UNIDAD II: ANLISIS DE LOS PRINCIPALES PARADIGMAS. ***

<<< PARADIGMA Y LENGUAJE DE PROGRAMACIN >>>

enmascarada por simples rdenes imperativas del tipo "cambiar color de tal o cual semforo".

LENGUAJES:

El lenguaje de programacin lgica por excelencia es Prolog, que cuenta con diversas variantes. La ms importante es la programacin lgica con restricciones (vase artculo sobre programacin con restricciones), que posibilita la resolucin de ecuaciones lineales adems de la demostracin de hiptesis.

2.3 PARADIGMA DE PROGRAMACIN FUNCIONAL.

En ciencias de la computacin, la programacin funcional es un paradigma de programacin declarativa basado en la utilizacin de funciones aritmticas que no maneja datos mutables o de estado. Enfatiza la aplicacin de funciones, en contraste con el estilo de programacin imperativa, que enfatiza los cambios de estado. La programacin funcional tiene sus races en el clculo lambda, un sistema formal desarrollado en los 1930s para investigar la definicin de funcin, la aplicacin de las funciones y la recursin. Muchos 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 "funcin" utilizada en la programacin imperativa es que las funciones imperativas pueden tener efectos secundarios, al cambiar el valor de clculos realizados previamente. Por esta razn carecen de transparencia referencial, es decir, la misma expresin lingstica puede resultar en valores diferentes en diferentes momentos dependiendo del estado del programa siendo
*** UNIDAD II: ANLISIS DE LOS PRINCIPALES PARADIGMAS. ***

<<< PARADIGMA Y LENGUAJE DE PROGRAMACIN >>>

ejecutado. Con cdigo funcional, en contraste, el valor generado por una funcin depende exclusivamente de los argumentos alimentados a la funcin. Al 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 utilizar la programacin funcional.

Los lenguajes de programacin funcional, especialmente los que son puramente funcionales, han sido enfatizados en el ambiente acadmico principalmente y no tanto en el desarrollo de software comercial. Sin embargo, lenguajes de programacin importantes tales como Scheme, Erlang, Objective Caml y Haskel, han sido utilizados en aplicaciones comerciales e industriales por muchas organizaciones. La programacin funcional tambin es utilizada en la industria a travs de lenguajes de dominio especfico como R (estadstica), Mathematica (matemticas simblicas), J y K (anlisis financiero), F# en Microsoft.NET y XSLT (XML). Lenguajes de uso especfico usados comnmente como SQL y Lex/Yacc, utilizan algunos elementos de programacin funcional, especialmente al procesar valores mutables. Las hojas de clculo tambin pueden ser consideradas lenguajes de programacin funcional.

La programacin funcional tambin puede ser desarrollada en lenguajes que no estn diseados especficamente para la programacin funcional. En el caso de Perl, por ejemplo, que es un lenguaje de programacin imperativo, existe un libro que describe como aplicar conceptos de programacin funcional. JavaScript, uno de los lenguajes ms ampliamente utilizados en la actualidad, tambin incorpora capacidades de programacin funcional.

UTILIDAD:

El objetivo es conseguir lenguajes expresivos y matemticamente elegantes, en los que no sea necesario bajar al nivel de la mquina para describir el proceso llevado a cabo por el programa, y evitar el concepto de estado del cmputo. La secuencia de

*** UNIDAD II: ANLISIS DE LOS PRINCIPALES PARADIGMAS. ***

<<< PARADIGMA Y LENGUAJE DE PROGRAMACIN >>>

computaciones llevadas a cabo por el programa se rige nica y exclusivamente por la reescritura de definiciones ms amplias a otras cada vez ms concretas y definidas, usando lo que se denominan "definiciones dirigidas".

CARACTERSTICAS:

Los 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 que se verifican ciertas propiedades como la transparencia referencial (el significado de una expresin depende nicamente del significado de sus subexpresiones), y por tanto, la carencia total de efectos colaterales.

Otras caractersticas propias de estos lenguajes son la no existencia de asignaciones de variables y la falta de construcciones estructuradas como la secuencia o la iteracin (lo que obliga en la prctica a que todas las repeticiones de instrucciones se lleven a cabo por medio de funciones recursivas).

Existen dos grandes categoras de lenguajes funcionales: los funcionales puros y los hbridos. La diferencia entre ambos estriba en que los lenguajes funcionales hbridos son menos dogmticos que 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 expresiva, conservando a la vez su transparencia referencial, algo que no se cumple siempre con un lenguaje funcional hbrido.

VENTAJAS DE USAR UN PARADIGMA FUNCIONAL:


*** UNIDAD II: ANLISIS DE LOS PRINCIPALES PARADIGMAS. ***

<<< PARADIGMA Y LENGUAJE DE PROGRAMACIN >>>

Entre las ventajas que suelen citarse de usar un paradigma funcional en la programacin de computadoras, estn las siguientes:1

Ausencia de efectos colaterales Proceso de depuracin menos problemtico Pruebas de unidades ms confiables Mayor facilidad para la ejecucin concurrente

LENGUAJES FUNCIONALES:

Entre los lenguajes funcionales puros, cabe destacar a Haskell y Miranda. Los lenguajes funcionales hbridos ms conocidos son Scala, Lisp, Scheme, Ocaml, SAP y Standard ML (estos dos ltimos, descendientes del lenguaje ML). Erlang es otro lenguaje funcional de programacin concurrente. R tambin es un lenguaje funcional dedicado a la estadstica. Recientemente Microsoft Research est trabajando en el lenguaje F# (Functional#).

Entre otros lenguajes que se podran utilizar para programacin funcional se podran incluir a Perl, pues, aunque es un lenguaje de propsito muy general, se pueden realizar programas usando exclusivamente funciones definidas por el usuario; as como Python, como lenguaje que incorpora el paradigma funcional; o Ruby.

2.4 PARADIGMA DE PROGRAMACIN ORIENTADA A OBJETOS.


*** UNIDAD II: ANLISIS DE LOS PRINCIPALES PARADIGMAS. ***

<<< PARADIGMA Y LENGUAJE DE PROGRAMACIN >>>

La programacin orientada a objetos o POO (OOP segn sus siglas en ingls) es un paradigma de programacin que usa objetos y sus interacciones, para disear aplicaciones y programas informticos. Est basado en varias tcnicas, incluyendo herencia, abstraccin, polimorfismo y encapsulamiento. Su uso se populariz a principios de la dcada de los aos 1990. En la actualidad, existe variedad de lenguajes de programacin que soportan la orientacin a objetos.

Los objetos son entidades que tienen un determinado comportamiento (mtodo) e identidad:

El estado est compuesto de datos, ser uno o varios atributos a los que se habrn asignado unos valores concretos (datos). El comportamiento est definido por los mtodos o mensajes a los que sabe responder dicho objeto, es decir, qu operaciones se pueden realizar con l. La identidad es una propiedad de un objeto que lo diferencia del resto, dicho con otras palabras, es su identificador (concepto anlogo al de identificador de una variable o una constante).

Un objeto contiene toda la informacin que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, al poder tener valores bien diferenciados en sus atributos. A su vez, los objetos disponen de mecanismos de interaccin llamados mtodos, que favorecen la comunicacin entre ellos. Esta comunicacin favorece a su vez el cambio de estado en los propios objetos. Esta caracterstica lleva a tratarlos como unidades indivisibles, en las que no se separa el estado y el comportamiento.

Los

mtodos

(comportamiento)

atributos

(estado)

estn

estrechamente

relacionados por la propiedad de conjunto. Esta propiedad destaca que una clase requiere
*** UNIDAD II: ANLISIS DE LOS PRINCIPALES PARADIGMAS. ***

10

<<< PARADIGMA Y LENGUAJE DE PROGRAMACIN >>>

de mtodos para poder tratar los atributos con los que cuenta. El programador debe pensar indistintamente en ambos conceptos, sin separar ni darle mayor importancia a alguno de ellos. Hacerlo podra producir el hbito errneo de crear clases contenedoras de informacin por un lado y clases con mtodos que manejen a las primeras por el otro. De esta manera se estara realizando una programacin estructurada camuflada en un lenguaje de programacin orientado a objetos.

La POO difiere de la programacin estructurada tradicional, en la que los datos y los procedimientos estn separados y sin relacin, ya que lo nico que se busca es el procesamiento de unos datos de entrada para obtener otros de salida. La programacin estructurada anima al programador a pensar sobre todo en trminos de procedimientos o funciones, y en segundo lugar en las estructuras de datos que esos procedimientos manejan. En la programacin estructurada slo se escriben funciones que procesan datos. Los programadores que emplean POO, en cambio, primero definen objetos para luego enviarles mensajes solicitndoles que realicen sus mtodos por s mismos.

ORIGEN:

Los conceptos de la programacin orientada a objetos tienen origen en Simula 67, un lenguaje diseado para hacer simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard del Centro de Cmputo Noruego en Oslo. En este centro, se trabajaba en simulaciones de naves, que fueron confundidas por la explosin combinatoria de cmo las diversas cualidades de diferentes naves podan afectar unas a las otras. La idea surgi al agrupar los diversos tipos de naves en diversas clases de objetos, siendo responsable cada clase de objetos de definir sus propios datos y comportamientos. Fueron refinados ms tarde en Smalltalk, desarrollado en Simula en Xerox PARC (cuya primera versin fue escrita sobre Basic) pero diseado para ser un sistema completamente dinmico en el cual los objetos se podran crear y modificar "sobre la marcha" (en tiempo de ejecucin) en lugar de tener un sistema basado en programas estticos.

*** UNIDAD II: ANLISIS DE LOS PRINCIPALES PARADIGMAS. ***

11

<<< PARADIGMA Y LENGUAJE DE PROGRAMACIN >>>

La programacin orientada a objetos se fue convirtiendo en el estilo de programacin dominante a mediados de los aos ochenta, en gran parte debido a la influencia de C++, una extensin del lenguaje de programacin C. Su dominacin fue consolidada gracias al auge de las Interfaces grficas de usuario, para las cuales la programacin orientada a objetos est particularmente bien adaptada. En este caso, se habla tambin de programacin dirigida por eventos.

Las caractersticas de orientacin a objetos fueron agregadas a muchos lenguajes existentes durante ese tiempo, incluyendo Ada, BASIC, Lisp, Pascal, entre otros. La adicin de estas caractersticas a los lenguajes que no fueron diseados inicialmente para ellas condujo a menudo a problemas de compatibilidad y en la capacidad de mantenimiento del cdigo. Los lenguajes orientados a objetos "puros", por su parte, carecan de las caractersticas de las cuales muchos programadores haban venido a depender. Para saltar este obstculo, se hicieron muchas tentativas para crear nuevos lenguajes basados en mtodos orientados a objetos, pero permitiendo algunas caractersticas imperativas de maneras "seguras". El Eiffel de Bertrand Meyer fue un temprano y moderadamente acertado lenguaje con esos objetivos pero ahora ha sido esencialmente reemplazado por Java, en gran parte debido a la aparicin de Internet, y a la implementacin de la mquina virtual de Java en la mayora de navegadores. PHP en su versin 5 se ha modificado, soporta una orientacin completa a objetos, cumpliendo todas las caractersticas propias de la orientacin a objetos.

CONCEPTOS FUNDAMENTALES:

La programacin orientada a objetos es una forma de programar que trata de encontrar una solucin a estos problemas. Introduce nuevos conceptos, que superan y amplan conceptos antiguos ya conocidos. Entre ellos destacan los siguientes:

*** UNIDAD II: ANLISIS DE LOS PRINCIPALES PARADIGMAS. ***

12

<<< PARADIGMA Y LENGUAJE DE PROGRAMACIN >>>

Clase: definiciones de las propiedades y comportamiento de un tipo de objeto

concreto. La instanciacin es la lectura de estas definiciones y la creacin de un objeto a partir de ellas.


Herencia: (por ejemplo, herencia de la clase C a la clase D) Es la facilidad mediante

la cual la clase D hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y operaciones hubiesen sido definidos por la misma D. Por lo tanto, puede usar los mismos mtodos y variables publicas declaradas en C. Los componentes registrados como "privados" (private) tambin se heredan, pero como no pertenecen a la clase, se mantienen escondidos al programador y slo pueden ser accedidos a travs de otros mtodos pblicos. Esto es as para mantener hegemnico el ideal de OOP.
Objeto: entidad provista de un conjunto de propiedades o atributos (datos) y de

comportamiento o funcionalidad (mtodos) los mismos que consecuentemente reaccionan a eventos. Se corresponde con los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa). Es una instancia a una clase.
Mtodo: Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecucin se

desencadena tras la recepcin de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un mtodo puede producir un cambio en las propiedades del objeto, o la generacin de un "evento" con un nuevo mensaje para otro objeto del sistema.
Evento: Es un suceso en el sistema (tal como una interaccin del usuario con la

mquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. Tambin se puede definir como evento, a la reaccin que puede desencadenar un objeto, es decir la accin que genera.
Mensaje: una comunicacin dirigida a un objeto, que le ordena que ejecute uno de

sus mtodos con ciertos parmetros asociados al evento que lo gener.


Propiedad o atributo: contenedor de un tipo de datos asociados a un objeto (o a una

clase de objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus caractersticas predeterminadas, y cuyo valor puede ser alterado por la ejecucin de algn mtodo.
Estado interno: es una variable que se declara privada, que puede ser nicamente

accedida y alterada por un mtodo del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). No es visible al programador que maneja una instancia de la clase.
*** UNIDAD II: ANLISIS DE LOS PRINCIPALES PARADIGMAS. ***

13

<<< PARADIGMA Y LENGUAJE DE PROGRAMACIN >>>

Componentes de un objeto: atributos, identidad, relaciones y mtodos. Identificacin de un objeto: un objeto se representa por medio de una tabla o entidad

que est compuesta por sus atributos y funciones correspondientes.

En comparacin con un lenguaje imperativo, una "variable", no es ms que un contenedor interno del atributo del objeto o de un estado interno, as como la "funcin" es un procedimiento interno del mtodo del objeto.

CARACTERSTICAS DE LA POO:

Existe un acuerdo acerca de qu caractersticas contempla la "orientacin a objetos", las caractersticas siguientes son las ms importantes: Abstraccin: denota las caractersticas esenciales de un objeto, donde se capturan sus comportamientos. Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar cmo se implementan estas caractersticas. Los procesos, las funciones o los mtodos pueden tambin ser abstrados y cuando lo estn, una variedad de tcnicas son requeridas para ampliar una abstraccin. El proceso de abstraccin permite seleccionar las caractersticas relevantes dentro de un conjunto e identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. La abstraccin es clave en el proceso de anlisis y diseo orientado a objetos, ya que mediante ella podemos llegar a armar un conjunto de clases que permitan modelar la realidad o el problema que se quiere atacar. Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstraccin. Esto permite aumentar la cohesin de los componentes del sistema. Algunos autores

*** UNIDAD II: ANLISIS DE LOS PRINCIPALES PARADIGMAS. ***

14

<<< PARADIGMA Y LENGUAJE DE PROGRAMACIN >>>

confunden este concepto con el principio de ocultacin, principalmente porque se suelen emplear conjuntamente. Modularidad: Se denomina Modularidad a la propiedad que permite subdividir una aplicacin en partes ms pequeas (llamadas mdulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicacin en s y de las restantes partes. Estos mdulos se pueden compilar por separado, pero tienen conexiones con otros mdulos. Al igual que la encapsulacin, los lenguajes soportan la Modularidad de diversas formas. Principio de ocultacin: Cada objeto est aislado del exterior, es un mdulo natural, y cada tipo de objeto expone una interfaz a otros objetos que especifica cmo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificacin por quien no tenga derecho a acceder a ellas, solamente los propios mtodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstraccin. La aplicacin entera se reduce a un agregado o rompecabezas de objetos. Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizar el comportamiento correspondiente al objeto que se est usando. O dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocacin de un comportamiento en una referencia producir el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecucin", esta ltima caracterstica se llama asignacin tarda o asignacin dinmica. Algunos lenguajes proporcionan medios ms estticos (en "tiempo de compilacin") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++. Herencia: las clases no estn aisladas, sino que se relacionan entre s, formando una jerarqua de clasificacin. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos
*** UNIDAD II: ANLISIS DE LOS PRINCIPALES PARADIGMAS. ***

15

<<< PARADIGMA Y LENGUAJE DE PROGRAMACIN >>>

pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en rboles o enrejados que reflejan un comportamiento comn. Cuando un objeto hereda de ms de una clase se dice que hay herencia mltiple. Recoleccin de basura: la recoleccin de basura o garbage collector es la tcnica por la cual el entorno de objetos se encarga de destruir automticamente, y por tanto desvincular la memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por la asignacin o liberacin de memoria, ya que el entorno la asignar al crear un nuevo objeto y la liberar cuando nadie lo est usando. En la mayora de los lenguajes hbridos que se extendieron para soportar el Paradigma de Programacin Orientada a Objetos como C++ u Object Pascal, esta caracterstica no existe y la memoria debe desasignarse manualmente.

ANLISIS CRTICO:

La programacin orientada a objetos es un paradigma que utiliza objetos como elementos fundamentales en la construccin de la solucin. Surge en los aos 70. Un objeto es una abstraccin de algn hecho o ente del mundo real que tiene atributos que representan sus caractersticas o propiedades y mtodos que representan su comportamiento o acciones que realizan. Todas las propiedades y mtodos comunes a los objetos se encapsulan o se agrupan en clases. Una clase es una plantilla o un prototipo para crear objetos, por eso se dice que los objetos son instancias de clases.

LENGUAJES ORIENTADOS A OBJETOS:

Simula (1967) es aceptado como el primer lenguaje que posee las caractersticas principales de un lenguaje orientado a objetos. Fue creado para hacer programas de simulacin, en donde los "objetos" son la representacin de la informacin ms importante.

*** UNIDAD II: ANLISIS DE LOS PRINCIPALES PARADIGMAS. ***

16

<<< PARADIGMA Y LENGUAJE DE PROGRAMACIN >>>

Smalltalk (1972 a 1980) es posiblemente el ejemplo cannico, y con el que gran parte de la teora de la programacin orientada a objetos se ha desarrollado. Entre los lenguajes orientados a objetos se destacan los siguientes:
ABAP ABL Lenguaje de programacin de OpenEdge de Progress Software ActionScript ActionScript 3 Ada C++ C# Clarion Clipper (lenguaje de programacin) (Versin 5.x con librera de objetos Class(y)) D Object Pascal (Delphi) Gambas Harbour Eiffel Java JavaScript (la herencia se realiza por medio de la programacin basada en

prototipos)
Lexico (en castellano) Objective-C Ocaml Oz R Perl (soporta herencia mltiple. La resolucin se realiza en preorden, pero puede

modificarse al algoritmo linearization C3 por medio del mdulo Class::C3 en CPAN)


PHP (a partir de su versin 5) PowerBuilder Python Ruby Smalltalk (Entorno de objetos puro) Magik (SmallWorld)
*** UNIDAD II: ANLISIS DE LOS PRINCIPALES PARADIGMAS. ***

17

<<< PARADIGMA Y LENGUAJE DE PROGRAMACIN >>>

Vala VB.NET Visual FoxPro (en su versin 6) Visual Basic 6.0 Visual Objects XBase++ Lenguaje DRP Lenguaje de programacin Scala (lenguaje usado por Twitter) http://www.scala-

lang.org/page.jsp

Muchos de estos lenguajes de programacin no son puramente orientados a objetos, sino que son hbridos que combinan la POO con otros paradigmas.

Al igual que C++ otros lenguajes, como OOCOBOL, OOLISP, OOPROLOG y Object REXX, han sido creados aadiendo extensiones orientadas a objetos a un lenguaje de programacin clsico.

Un nuevo paso en la abstraccin de paradigmas de programacin es la Programacin Orientada a Aspectos (POA). Aunque es todava una metodologa en estado de maduracin, cada vez atrae a ms investigadores e incluso proyectos comerciales en todo el mundo.

*** UNIDAD II: ANLISIS DE LOS PRINCIPALES PARADIGMAS. ***

18

S-ar putea să vă placă și