Práctica final de grupo
- La abstracción funcional en java
En Java todo es un objeto: considere un objeto una variable especial, no solamente guarda datos, sino también se pueden hacer solicitudes a este objeto en sí. En teoría, cualquier elemento en el problema espacial(real) (edificios, servicios, automóviles, u otra entidad) puede ser representado como un objeto en un programa.
Todo objeto tiene su tipo, en este sentido tipo se refiere a clase, donde cada objeto es una instancia de una clase en cuestión. La característica más importante de una clase es el tipo de mensajes que pueden ser enviados a ella.
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 cómo se implementan estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos y cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción. Esta consiste en aislar un elemento de su contexto o del resto de los elementos que lo acompañan.
La abstracción encarada desde el punto de vista de la programación orientada a objetos expresa las características esenciales de un objeto, las cuales distinguen al objeto de los demás. Además de distinguir entre los objetos provee límites conceptuales.
La abstracción funcional permite llevar a cabo el concepto de modularidad:
– Una función agrupa a un conjunto de instrucciones altamente cohesionadas
– Una función realiza una tarea específica.
– Para usar una función no es necesario conocer su implementación.
Las funciones similares se agrupan en bibliotecas (en java en clases):
– Funciones matemáticas
– Funciones trigométricas
– Funciones para el manejo de cadenas de caracteres
– etc.
- La abstracción funcional en pascal
La abstracción permite dividir un problema grande en pequeños problemas que son solubles. La solución del problema original es el agregado de las pequeñas soluciones.
El concepto que se usa para lograr la abstracción es el de módulo, que es una sección de un programa bien construida, con un fin específico, y que puede ser reutilizado.
A cada módulo le corresponde una abstracción; a cada abstracción le corresponde un módulo. Para lograr esta concreción, se define primero la especificación de cada módulo, y luego se escribe la implementación.
La idea es introducir un conjunto de instrucciones en un módulo, que tiene una interfaz claramente definida, de forma que al arreglar o mejorar el módulo no sea necesario cambiar ninguna otra parte del programa. Para definir la interfaz de un módulo es necesario definir los objetos con que trabaja. Los tipos son una eficaz herramienta para que el compilador del lenguaje verifique el correcto enlace entre módulos, labor que realiza al corroborar que los tipos de datos de las variables que aparecen en la invocación a un módulo (argumentos), coincidan con los tipos de los parámetros formales declarados para el módulo.
La abstracción de procedimientos da origen a las rutinas o funciones que forman un programa. Este tipo de abstracción se usa para hacer el diseño de programas de arriba hacia abajo (Top-Down) y para crear las bibliotecas de programación.
El módulo proporciona control de acceso. Permitirá evitar que el código cliente acceda a declaraciones privadas, que únicamente son visibles dentro del módulo.
Por último, el módulo proporciona compilación separada. La implementación puede compilarse una vez, y ser utilizada en la construcción de otros programas sin tener que volver a recompilarla. Al separar el programa en partes independientes, o módulos, se evita que cambios en una parte produzcan errores en otras partes del programa.
Pascal estándar no soporta el concepto de módulo aunque este concepto sí es soportado por muchas de sus extensiones. Turbo Pascal incluye un tipo de módulos denominados UNITs. Las UNITs en Turbo Pascal constan de una parte de definición y una parte de implementación. Así mismo, pueden compilarse separadamente.
- Similitudes
Ambos están ligados a técnicas de diseño descendente y a la programación estructurada de manera que los métodos y las funciones se invocan para realizar una tarea, pero sin necesidad de saber cómo la llevan a cabo.
Ambos permiten el paso de parámetros a los métodos, funciones y procedimientos para usarlos dentro de ese módulo.
Ambos permiten la recursividad. La recursividad consiste en la auto invocación de un módulo, es decir, un método, función o procedimiento se puede llamar a sí mismo.
En ambos lenguajes de programación pueden ocurrir efectos laterales, debido a un uso indebido de las variables.
También permiten la sobrecarga de funciones, consistente en definir una misma función de diferentes maneras y que realiza diferentes tareas, ante una invocación de una función sobrecargada, la diferenciación de ambas se hacer por aspectos como el tipo de los parámetros que recibe, el tipo de los parámetros y los valores de que devuelve, aunque cada uno de los lenguajes con sus propias particularidades en este aspecto.
- Diferencias
Java emplea interfaces y Pascal las Units.
En java son todo objetos, en Pascal no.
Java es un lenguaje orientado a objetos, Pascal es un paradigma imperativo.
Pascal permite que a una función procedimiento se le pasen, a parte de parámetros, otras funciones para ser utilizadas dentro, esto permite que bajo un mismo nombre se puedan realizar varias operaciones. En Java, no se permite este tipo de parámetros.
Como en Java todos los elementos se encuentran situados dentro de una clase, no existe el concepto de variable global como entendemos en pascal, lo que no quiere decir que no existan problemas de efectos laterales debido a un mal uso de las variables.
- Fuentes
www.dte.upct.es/personal/balvarez/Docencia/Fundamentos/Tema%20_5.pdf
http://es.wikipedia.org/wiki/Abstracci%C3%B3n_%28programaci%C3%B3n_orientada_a_objetos%29
http://www.di-mare.com/adolfo/binder/c03.htm
https://www.fdi.ucm.es/profesor/jlsierra/introprog/transparencias/ejcadbusord.pdf
www.cmat.edu.uy/cmat/cursos/2004/introcomp/teorico/clase1.pdf
http://javabasico.osmosislatina.com/curso/objetos.htm
“Java, Un lenguaje de programación multiplataforma para Internet” de Enrique Castillo, Patricia Gómez y otros, Editorial panarinfo, ISBN: 84-283-2368-2, Signatura biblioteca universidad de Vigo: 681.32 / 522
