11 enero 2007

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

30 noviembre 2006

Competencias:

Competencias transversales genéricas:
  1. Capacidad de anális y síntesis.
  2. Resolución de problemas.
  3. Trabajo en equipo.
  4. Aprendizaje autónomo.
Competencias específicas:
  1. Conocimiento de productos tecnológicos y tendencias de la tecnología, asociados al segmento del mercado.
  2. Capacidad para entender y evaluar especificaciones internas y externas.
  3. Programación.
  4. Documentación técnica.

13 noviembre 2006

Práctica 1:


Paradigma Imperativo

Describe la programación en términos del estado del programa y sentencias que cambian dicho estado. Consiste en determinar qué datos son requeridos para el cálculo, asociar a esos datos unas direcciones de memoria, y efectuar paso a paso una secuencia de transformaciones en los datos almacenados, de forma que el estado final represente el resultado correcto.


Conceptos propios:

  • Concepto de celda de memoria ("variable") para almacenar valores: El componente principal de la arquitectura es la memoria, compuesto por un gran número de celdas donde se almacenan los datos. Las celdas tienen nombre (concepto de variable) que las referencian, y sobre los que se producen efectos de lado y definiciones de alias.
  • Operaciones de asignación: Estrechamente ligado a la arquitectura de la memoria, se encuentra la idea de que cada valor calculado debe ser "almacenado", es decir asignado a una celda. Esta es la razón de la importancia de la sentencia de asignación en el paradigma imperativo. Las nociones de celda de memoria y asignación en bajo nivel, se tienden a todos los lenguajes de programación y fuerzan en los programadores un estilo de pensamiento basado en la arquitectura Von Neumann.
  • Repetición: Un programa imperativo, normalmente realiza su tarea ejecutando repetidamente una secuencia de pasos elementales, ya que en este modelo computacional la única forma de ejecutar algo complejo es repitiendo una secuencia de instrucciones.
  • Subprogramas: Es un algoritmo separado del algoritmo principal, el cual permite resolver una tarea específica. Ha ido evolucionando, dando origen a los procedimientos, las funciones (subprogramas que devuelven un valor) y los módulos (conjunto de subprogramas relacionados).


Paradigma de Orientación a Objetos

Define los programas en términos de "clases de objetos", objetos que son entidades que combinan estado (es decir, datos), comportamiento (esto es, procedimientos o métodos) e identidad (propiedad del objeto que lo diferencia del resto). La programación orientada a objetos expresa un programa como un conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Esto permite hacer los programas y módulos más fáciles de escribir, mantener y reutilizar.

Conceptos propios:

  • Abstracción: 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.
  • Encapsulamiento: También llamado "ocultación de la información". Cada objeto está aislado del exterior. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos 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.
  • Polimorfismo: Es la posibilidad de definir varias operaciones con el mismo nombre, diferenciándose solo en los parámetros de entrada. Proporciona una gran flexibilidad.
  • Herencia: las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. También se pueden añadir nuevos comportamientos o modificar los heredados.

Fuentes

www.wikilearning.com/paradigma_imperativo-wkccp-3618-4.htm es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos
Apuntes de MTP.

Cambios en la plantilla:
  • Se modifico el profile y los links.
  • Se cambió el título, se centro y se puso en mayúsculas.
  • Ligeros cambios en los colores de la plantilla.
  • Se pusieron todas las palabras en español (por ej.: comentarios, etc).
  • Se introdujo código para poder mostrar un trozo de texto y si se quiere leer el textro entero.

Presentación:

Este blog ha sido creado para realizar las prácticas de la asignatura LPR, que se cursa en la ESEI del campus de Ourense.
El blog pertenece al grupo: 51; está compuesto por: Emma e Ismael.