Deficion Genrerica
Enviado por peerqwrtawrgv • 18 de Noviembre de 2012 • 1.097 Palabras (5 Páginas) • 286 Visitas
5. CLASES Y FUNCIONES GENÉRICAS
Plantillas
Hemos indicado que en la programación clásica existía una clara diferenciación entre
los datos y su manipulación, es decir, entre los datos y el conjunto de algoritmos para
manejarlos. Los datos eran tipos muy simples y generalmente los algoritmos estaban
agrupados en funciones orientadas de forma muy específica a los datos que debían
manejar.
Posteriormente la POO introdujo nuevas facilidades; la posibilidad de extender el
concepto de dato, permitiendo que existiesen tipos más complejos a los que se podía
asociar la operatoria necesaria. Esta nueva habilidad fue perfilada con un par de mejoras
adicionales: la posibilidad de ocultación de determinados detalles internos irrelevantes
para el usuario, y la capacidad de herencia simple o múltiple.
Observe que las mejoras introducidas por la POO se pueden sintetizar en tres palabras:
composición, ocultación y herencia. De otro lado, la posibilidad de incluir juntos los
datos y su operatoria no era exactamente novedosa. Esta circunstancia ya existía de
forma subyacente en todos los lenguajes. Recuerde que el concepto de entero (int en C)
ya incluye implícitamente todo un álgebra y reglas de uso para dicho tipo. Observe
también que la POO mantiene un paradigma de programación orientado al dato (o
estructuras de datos). De hecho los "Objetos" se definen como instancias concretas de
las clases y estas representan nuevos tipos-de-datos, de modo que POO es sinónimo de
Programación Orientada a Tipos-de-datos.
Programación genérica
Desde luego la POO supuso un formidable avance del arsenal de herramientas de
programación. Incluso en algunos casos, un auténtico balón de oxígeno en el desarrollo
y mantenimiento de aplicaciones muy grandes, en las que se estaba en el límite de lo
factible con las técnicas programación tradicional. Sin embargo, algunos teóricos
seguían centraron su atención en los algoritmos. Algo que estaba ahí también desde el
principio. Se dieron cuenta que frecuentemente las manipulaciones contienen un
denominador común que se repite bajo apariencias diversas. Por ejemplo, la idea de
ordenación "Sort" se repite infinidad de veces en la programación, aunque los objetos a
ordenar y los criterios de ordenación varíen de un caso a otro. Alrededor de esta idea
surgió un nuevo paradigma denominado programación genérica o funcional.La programación genérica está mucho más centrada en los algoritmos que en los datos y
su postulado fundamental puede sintetizarse en una palabra: generalización. Significa
que, en la medida de lo posible, los algoritmos deben ser parametrizados al máximo y
expresados de la forma más independiente posible de detalles concretos, permitiendo así
que puedan servir para la mayor variedad posible de tipos y estructuras de datos.
Los expertos consideran que la parametrización de algoritmos supone una aportación a
las técnicas de programación, al menos tan importante, como fue en su momento la
introducción del concepto de herencia, y que permite resolver algunos problemas que
aquella deja sin solución.
Observe que la POO y la programación genérica representan enfoques en cierta forma
ortogonales entre si:
La programación orientada al dato razona del siguiente modo: representemos un tipo de
dato genérico (por ejemplo int) que permita representar objetos con ciertas
características comunes (peras y manzanas). Definamos también que operaciones
pueden aplicarse a este tipo (por ejemplo aritméticas) y sus reglas de uso,
independientemente que el tipo represente peras o manzanas en cada caso.
Por su parte la programación funcional razona lo siguiente: construyamos un algoritmo
genérico (por ejemplo sort), que permita representar algoritmos con ciertas
características comunes (ordenación de cadenas alfanuméricas y vectores por ejemplo).
Definamos también a que tipos pueden aplicarse a este algoritmo y sus reglas de uso,
independientemente que el algoritmo represente la ordenación de cadenas alfanuméricas
o de vectores.
Con el fin de adoptar los paradigmas de programación entonces en vanguardia, desde
sus inicios C++ había adoptado conceptos
...