Romeo Alvarez Arana Jorge A. Davila Montoya Fernando Hernández Guzmán

Slides:



Advertisements
Presentaciones similares
Ada 2º Parte (variables, ámbitos , subrutinas , tipos abstractos de datos y excepciones)
Advertisements

5 Paquetes ORACLE Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos Fundamentos de Programación Departamento.
Introducción a la Ingeniería del Software 1 El Diseño de Software Caracteristicas: Proceso Creativo Requiere de experiencia e ingenio Necesita del aprendizaje.
PROGRAMACIÓN I CENTRO DE ESTUDIOS INTEGRADOS EL MARISCAL - CEIM Ing. Luisa Fernanda Arenas Castañeda Feb 6 de 2016.
Una estrategia para evitar la sucesiones repetidas de instrucciones convertir la secuencia en un procedimiento e invocarlo cada vez que se necesite.
2012-BM5A. Introducción Todos los lenguajes de programación son distintos entre si. Sin embargo, pueden ser agrupados según la forma de pensar y estructurar.
PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento y constructores.
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
1 LENGUAJES DE PROGRAMACIÓN. Son aplicaciones específicas diseñadas para crear otras aplicaciones o programas. Son programas para crear programas. 2.
Universidad autónoma del estado de México
Convenciones de nomenclatura y diseño
PROGRAMACIÓN ORIENTADA A OBJETOS
Programación Orientada
Base de datos El almacenamiento, manipulación y recuperación de información en forma eficiente, es vital y estratégico para cualquier organización. Las.
TIPOS ABSTRACTOS DE DATOS.
Programación Orientada a Objetos
Métodos y parámetros.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Programación PHP función saregune CC 2009.
Introducción a las estructuras de datos
Proyecto de Software. t07
Fundamentos de programación
Resolución de problemas y algoritmos
Métodos en Java.
Algunas Características de C++ no presentes en C
Proyecto de Software. Clase 06
PROGRAMACION ESTRUCTURADA.
Guía teórica de manejo de estructuras de datos
INTRODUCCIÓN Elmasri: Pág
Introducción a la Programación
Lenguajes de programación
Tema 3. Fundamentos para la construcción de código a partir del algoritmo Objetivo: El alumno construirá programas utilizando el lenguaje de programación.
Algunas Características de C++ no presentes en C
Tema 6. Conceptos básicos de programación Clase 1
Definición y Conversión de datos
METODOLOGIA DEL DESARROLLO DE SISTEMAS
LÓGICA DE PROGRAMACIÓN
Unidad 1. Conceptos básicos
Procedimientos y Funciones
Ayudantía 3: Procesos y threads
IPOO 2 cuatrimestre 2015 Departamento de Ciencias e Ingeniería
Diseño en Alice En este módulo estudiaremos los elementos del diseño en Alice: Escenarios Storyboards Textuales Visuales Definiciones.
Cobol C Pascal Fortran 6. PARAMETRIZACIÓN SmallTalk Java C++
Estructuras Estructuras En la creación de soluciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos que.
Hardware Description Language
PROGRAMACIÓN 1 INTRODUCCIÓN
Conceptos de Objetos, Clases y Otros Modelo Conceptual
Java – programación orientada a objetos programación ii – iee
Diego Hernández R Pascal Variables Diego Hernández R
El Lenguaje C: Elementos Básicos
LENGUAJE C.
UNIVERSIDAD SAN FRANCISCO DE ASÍS INGENIERÍA DE SISTEMAS DOCENTE: ING. FRANCISCO SOLORZANO UNIVERSITARIO: ALAN TORREZ LOAYZA AÑO 2018.
CURSO PROGRAMACIÓN BÁSICA SEMANA 2
Fundamentos de la Programación I
Programación I MC José Andrés Vázquez Flores
Fundamentos de la Programación I
Conferencia 2 TDA Lista lineal.
Unidad 2 Estructuras ESCUELA DE COMPUTACIÓN.
Informática Ingeniería en Electrónica y Automática Industrial
Curso de Programación Estructurada
Diego Hernández R Pascal Variables Diego Hernández R
Informática Ingeniería en Electrónica y Automática Industrial
Diagrama de componentes
Programación Modular Programación de Computadoras - Hugo Vega Grupo2: Reina Rodríguez Miriam Salluca.
Lenguaje de Programación II
Procedimientos y Funciones
Unida III: Análisis y Diseño de Sistemas Orientado a Objetos
INSTITUTO TECNOLOGICO DE VERACRUZ
Transcripción de la presentación:

Romeo Alvarez Arana Jorge A. Davila Montoya Fernando Hernández Guzmán Encapsulamiento Romeo Alvarez Arana Jorge A. Davila Montoya Fernando Hernández Guzmán

Tipos abstractos de datos. Introducción:   La abstracción es un proceso mental que tiene dos aspectos complementarios: El aspecto de destacar los detalles relevantes del objeto en estudio. El aspecto de ignorar los detalles irrelevantes del objeto.

Los llamados lenguajes de alto nivel Las lenguajes ensambladores La historia de la programación está repleta de ejemplos del uso de la abstracción como mecanismo para disminuir la complejidad: Los llamados lenguajes de alto nivel Las lenguajes ensambladores La de procedimiento con parámetros, Las construcciones creadas para sincronizar procesos.  

Podemos decir que la historia de la programación es, en realidad, un camino hacia un grado creciente de abstracción

La abstracción funcional Los primeros lenguajes de alto nivel (Fortran, Cobol), ya tenían este mecanismo.   Sin embargo no es posible especificar sus tipos de datos,

El siguiente paso fue la creación de tipos definidos por el programador,

Imaginemos que el programador desea definir un tipo fecha para manipular valores cuyo significado sean fechas del calendario. Una forma de hacerlo en Pascal es la siguiente: type fecha = record   día: 1..31;   mes: 1..12;   año: 1900..2000 end

El programador puede definir variables del nuevo tipo mediante declaraciones de la forma: var fl,f2: fecha; e incluso definir procedimientos que operen sobre, o consulten propiedades de los valores del tipo: function fiesta (f: fecha): boolean; Sin embargo, no puede impedir que se generen valores que no tienen semántica, teniendo en cuenta la intención del programador: f1.dia := 30; f1.mes := 2;. .. o que se realicen operaciones sin sentido sobre los valores del tipo: f1.dia := 5 * f2.mes

La situación equivalente respecto a los tipos predefinidos sería permitir que los programadores directamente los bits de un carácter o de un número real (de hecho, los primeros lenguajes de alto nivel proporcionaban esta "facilidad").

Con el advenimiento de Algol, y luego de Pascal, poco a poco se introdujo la verificación de tipos en los argumentos de cada rutina, como una herramienta para reducir el tiempo de desarrollo de un programa. Sin embargo, todavía no se reconocían las grandes ventajas de especificar procedimientos. El usuario del procedimiento sólo necesita conocer la especificación de la abstracción (el qué) y puede ignorar el resto de los detalles (el cómo).

Por eso decimos que que la abstracción produce un ocultamiento de información.

El concepto de tipo abstracto de datos, propuesto hacia 1974 por John Guttag y otros investigadores, es la siguiente: · Definición Tipo abstracto de datos Es una colección de valores y de operaciones que se definen mediante una especificación que es independiente de cualquier representación.

Características: ABSTRACCIÓN. ENCAPSULAMIENTO  

ENCAPSULAMIENTO La encapsulación sirve para separar la interfaz de una abstracción y su implementación. Es un concepto complementario al de abstracción. La encapsulación da lugar a que las clases se dividan en dos partes: Especificacion Implementación

Para que sirve? Ocultamos los detalles, de forma que no se conoce como se implementa. Esta propiedad de los objetos se vive en el mundo real en muchas situaciones con las cajas negras. Tal es el caso de la labor de conducir un automóvil: no es necesario que el conductor sepa de mecánica automotriz, sólo tiene que saber cómo interactuar con el vehículo.

Protege los datos del uso arbitrario y no pretendido. Ventajas: Evita la corrupción de los datos de un objeto. Se permite modificar los elementos internos del objeto sin afectar a los usuarios del objeto. Protege los datos del uso arbitrario y no pretendido.

Para implementar un TDA un lenguaje debe proveer: Una forma de definir los tipos de datos Una forma de definir operaciones abstractas para estos objetos Encapsular los datos, es decir que solo puedan ser manipulados por operaciones abstractas.

Posibilidad de verificar formalmente los programas usuarios del tipo. Otros motivos que hacen conveniente la especificación formal de un tipo abstracto son los siguientes: Unanimidad de interpretación por parte de los distintos usuarios del tipo. Posibilidad de verificar formalmente los programas usuarios del tipo. Deducción, a partir de la especificación, de propiedades satisfechas por cualquier implementación válida de tipo

Encapsulación por Subprogramas

Características de los Subprogramas Permite crear abstracción de proceso: – encapsulando código – definiendo una interfaz de invocación para paso de parámetros y resultados Permite reutilizar código, ahorrando memoria y tiempo de codificación.

Elementos en la definición de interfaces Nombre: permite referenciar al subprograma como unidad e invocarlo. Parámetros (Opcional): Define la comunicación de datos (nombre, orden y tipo de parámetros formales) Valor de retorno: Opcional para funciones (tipificado).

Firmas y protocolos de la Interfaz La firma (signature) es un contrato entre el invocador y el subprograma que define la semántica de la interfaz. El protocolo especifica cómo debe realizarse la comunicación de parámetros y resultados (tipo y orden de los parámetros y, opcionalmente, valor de retorno).

Encapsulación por Subprogramas Diseño del Programa. Diseño del lenguaje.

Diseño del Programa

Subprogramas como operaciones abstractas Especificación. Implementación.

Especificación de un Subprograma Nombre del subprograma. Prototipo del subprograma. Acción realizada por el subprograma.

Subprogramas como funciones Especificación de una Función en C: float FN(float X, int Y) Representación: FN : real x integer  real

Subprogramas como funciones Especificación de una Función en Pascal: function FN(X: real;Y: integer): real Representación: FN : real x integer  real

Subprogramas como funciones Especificación de una función en Ada: function Arcsin(X : Real) return Real Representación: Arcsin : real  real

Subprogramas como subrutinas Especificación de una subrutina en C: void Sub(float X, int Y, float *Z, int *W)

Subprogramas como subrutinas Especificación de una subrutina en Ada: procedure Sub(X: in REAL; Y: in integer; Z: in out REAL; W: out BOOLEAN) Representación: Sub: real1 x integer x real2  real3 x Boolean

Implementación de Subprogramas Un subprograma representa una operación del nivel de computadora virtual construido por el programador. Es implementado haciendo uso de las operaciones y estructuras de datos que posee el lenguaje.

Implementación de Subprogramas Las declaraciones e instrucciones se encuentran encapsuladas. El usuario podrá invocar el subprograma solo con un determinado número de argumentos.

Implementación de Subprogramas Forma típica de la implementación: Especificación del subprograma. Declaración de tipos de datos locales. Secuencia de instrucciones que definen las acciones que realiza el subprograma.

Cuerpo de Subprogramas Implementación de un subprograma en C: float FN(float X, int Y) { float M(10); int N; . }

Cuerpo de Subprogramas Implementación de un subprograma en Ada: function Strip_Leading_Blank (Str : String) return String is begin -- Strip_Leading_Blank if Str (Str'First) = ' ' then return Str (1+Str'First .. Str'Last); else return Str; end if; end Strip_Leading_Blank;

Cuerpo de Subprogramas Implementación de un subprograma en LISP: (defun recur (x) (when (> x 0) (recur (1- x)))) => RECUR Uso de un subprograma en LISP: (recur 8) => (7)

Cuerpo de Subprogramas Especificación de una función en LISP: defun function-name lambda-list [[declaration* | documentation]] form* => function-name

Diseño del Lenguaje

Definición e invocación de Subprogramas Definición y activación de subprogramas. Implementación de la definición e invocación de subprogramas. Subprogramas genéricos.

Definición y activación de Subprogramas Definición de un programa como propiedad estática. La activación como medio para el uso del subprograma.

Definición de un Subprograma Almacenamiento de un programa en forma escrita. Es la única información que se tiene de un porgrama cuando es traducido.

Activación de un Subprograma Representa un bloque de almacenamiento cuando el subprograma se ejecuta. Su tiempo de vida transcurre entre la llamada al subprograma en el que la activación es creada y el regreso de resultados, instante en el que la activación es destruida.

Componentes de la definición La especificación. Declaración de variables. Almacenamiento de literales y variables constantes. Instrucciones o cuerpo del subprograma.

Definición de Subprogramas Definición de un subprograma en C: float FN (float X, int Y) { const initval=2; #define finalval 10 float M(10); int N; N=initval; if (N < finalval) . } return (20 * X + M(N));

Segmento de código y Registro de Activación

Estructura en ejecución

Subprogramas genéricos Subprograma genérico en FORTRAN 90: INTERFACE ENTER SUBROUTINE ENTER_STUDENTS(STUDENT, SECT) INTEGER :: STUDENT SECTION :: SECT END SUBROUTINE ENTER_STUDENTS SUBROUTINE ENTER_SECTION(S, TAB) SECTION :: S CLASSLIST :: TAB END SUBROUTINE ENTER_SECTION END INTERFACE ENTER

Subprogramas genéricos Subprograma genérico en Ada: procedure Enter (Student: in integer; Sect: in out Section) is begin serie de funciones que permiten inscribir a un alumno a una clase. end Enter; procedure Enter(S: in Section; Tab: in out Classlist) is serie de instrucciones que permiten ingresar una sección en la lista de clases.

Compilación de Subprogramas Compilación Separada: unidades de programas pueden compilarse en diferentes tiempos, pero se consideran dependencias. Compilación Independiente: Se compilan unidades de programa sin información de otras.

Definición de Tipos

Definición de Tipos Mecanismo para la definición de una clase de un objeto dato, en los lenguajes es llamado definición de tipo Una definición de tipo no define completamente un tipo de dato abstracto

Definición de Tipos end Nombre de tipo, junto con una declaración que describe la estructura de una clase del objeto dato type Racional = record Numerador : integer; Denominador : integer end var A, B, C : Racional;

Definición de Tipos Struct Tiporacional {int numerador; int denominador;} struct Tiporacional A,B,C;

Definición de Tipos Typedef struct Tiporacional {int numerador; int denominador;} Racional; Racional A,B,C;

Definición de Tipos La modificación de la estructura del objeto dato se realiza solo en la definición del tipo Al pasar el objeto dato como argumento a un subprograma, solo se necesita su nombre

Nueva forma de encapsulamiento y ocultamiento de información Definición de Tipos Nueva forma de encapsulamiento y ocultamiento de información La estructura interna del objeto dato es independiente de la declaración de variables

Nueva forma de encapsulamiento y ocultamiento de información Definición de Tipos Nueva forma de encapsulamiento y ocultamiento de información La definición puede ser modificada sin alterar los subprogramas en donde es llamado Estructura encapsulada, solo subprogramas definidos accesan a los componentes internos

Definición de Tipos Implementación El traductor pone la información de la definición de tipo en una tabla, y en donde el nombre del tipo es referenciado, utiliza la información de la tabla para producir el código ejecutable

Equivalencia de Tipos La verificación de tipos involucra una comparación entre el tipo de dato del argumento dado y el tipo de dato del argumento esperado por la operación

Equivalencia de Tipos ¿Qué significa que dos tipos sean el mismo? ¿Qué significa que dos objetos dato del mismo tipo son iguales?

Equivalencia de Tipos program main(input,output); type Vect1: array [1..10] of real; Vect2: array [1..10] of real; Var X,Z: Vect1; Y: Vect2; procedure Sub(A:Vect1); . end; begin X:=Y; Sub(Y) end.

Equivalencia de Tipos Equivalencia de nombres Dos tipos de datos son considerados equivalentes solo si tienen el mismo nombre

Equivalencia de Tipos program main(input,output); type Vect1: array [1..10] of real; Vect2: array [1..10] of real; Var X,Z: Vect1; Y: Vect2; procedure Sub(A:Vect1); . end; begin X:=Y; Sub(Y) end.

Equivalencia de Tipos Equivalencia de nombres, desventajas Cada objeto usado en una asignación debe tener el mismo nombre de tipo y no pueden tener tipos anónimos Var W: array [1..10] of real;

Equivalencia de Tipos Equivalencia de nombres, desventajas Una vez que el tipo de un objeto dato es pasado como un argumento a una serie de subprogramas, no puede ser definido nuevamente en cada subprograma

Equivalencia de Tipos Equivalencia estructural Dos tipos de datos son considerados equivalentes si definen objetos dato que tengan los mismos componentes internos

Equivalencia de Tipos program main(input,output); type Vect1: array [1..10] of real; Vect2: array [1..10] of real; Var X,Z: Vect1; Y: Vect2; procedure Sub(A:Vect1); . end; begin X:=Y; Sub(Y) end.

Equivalencia de Tipos Equivalencia estructural, desventajas Dos variables pueden ser estructuralmente equivalentes type Metros = integer; Litros = integer; var Long: Metros; Vol: Litros;