SlideShare una empresa de Scribd logo
I. Abstracción en Programación
a) Abstracción: Operación intelectual que ignora selectivamente partes de un todo
para facilitar su comprensión.
b) Abstracción en la resolución de problemas: Ignorar detalles específicos
buscando generalidades que ofrezcan una perspectiva distinta, más favorable a
su resolución.
c) Abstracción: Descomposición en que se varía el nivel de detalle.
Propiedades de una descomposición útil:
 Todas las partes deben estar al mismo nivel
 Cada parte debe poder ser abordada por separado.
 La solución de cada parte debe poder unirse al resto para obtener la solución final.
Mecanismos de Abstracción en Programación
 Abstracción por parametrización: Se introducen parámetros para abstraer un
número infinito de computaciones.
Ejemplo: cálculo de cos 𝛼.
 Abstracción por especificación: Permite abstraerse de la implementación
concreta de un procedimiento asociándole una descripción precisa de su
comportamiento.
Ejemplo: doublé sqrt (doublé a);
Requisitos 𝑎 ≥ 0;
Efecto: devuelve una aproximación de √ 𝑎.
La especificaciónes un comentario lo suficientemente definido y explicito como para usar
el procedimiento sin necesitar conocer otros elementos.
 Abstracción por Especificación
Se suele expresar en términos de:
 Precondición: Condiciones necesarias y suficientes que el procedimiento se
comparte como se prevé.
 Postcondición: Enunciados que se suponen en ciertos tras la ejecución del
procedimiento, si se cumplió la precondición.
int busca_minimo(float * array, int num_elem)
/*
precondición:
- num_elem > 0.
- 'array' es un vector con 'num_elem'
componentes.
Postcondición:
devuelve la posición del m__nimo elemento
de 'array'.
*/
Tipos de Abstracción
a) Abstracción Procedimental. Definimos un conjunto de operaciones
(procedimiento) que se comporta como una operación.
a) Abstracción de Datos (TDA). Tenemos un conjunto de datos y un conjunto de
operaciones que caracterizan el comportamiento del conjunto. Las operaciones
están vinculadas a los datos del tipo.
b) Abstracción de Iteración. Abstracción que permite trabajar sobre colecciones de
objetos sin tener que preocuparse por la forma concreta en que se organizan.
 Abstracción Procedimental
Permite abstraer un conjunto preciso de operaciones de cómputo como una operación
simple. Realiza la aplicación de un conjunto de entradas en las salidas con posible
modificación de entradas.
 La identidad de los datos no es relevante para el diseño. Solo interesa el número
de parámetros y su tipo.
 Con abstracción por especificación es irrelevante la implementación, pero no que
hace.
-Localidad: Para implementar una abstracción procedimental no es necesario conocer
la implementación de otras que se usen, solo su especificación.
-Modificabilidad: Se puede cambiar la implementación son de una abstracción
procedimental sin afectar a otras abstracciones que la usen, siempre y cuando no cambie
la especificación.
Especificación de una Abstracción Procedimental (I)
Propiedades
 Útil
 Completa
 Consistente
 Indicar el comportamiento en todos los casos en que sea aplicable.
Debe identificar claramente:
 Entradas
 Salidas
 Requisitos
 Efectos
Especificación de una Abs. Proc.(II)
int elimina_deuda(int * partidas,
int num_partidas)
/*
Argumentos:
----------
partidas: Array monodimensional de enteros
con 'num_partidas' componentes.
Es MODIFICADO.
num_partidas: N_umero de componentes de
'partidas'. num_partidas > 0.
Valores de retorno:
------------------
Valor absoluto de la suma de las partidas
negativas.
Efecto:
------
Calcula la suma de las componentes de
'partidas' con valor negativo. Pone a cero
cada componente negativa, cambia el signo
de la suma resultante y la devuelve.
*/
Especificación de una Abs. Proc. (III)
a) Cabecera: (Parte sintáctica) Indica el nombre del procedimiento y el número,
orden y tipo de las entradas y salidas. Se suele adoptar la sintaxis de un lenguaje
de programación concreto. Ejemplo, el prototipo de la función en C.
b) Cuerpo: (Parte semántica) Está compuesto por las siguientes clausulas.
1. Argumentos
2. Requiere
3. Valores de retorno
4. Efecto
Especificación de una Abs. Proc. (IV)
1. Argumentos: Explica el significado de cada parámetro de la abstracción, no el tipo,
que ya se ha indicado en la cabecera, sino que representa. Indicar las restricciones sobre
el conjunto datos del tipo sobre los cuales puede operar el procedimiento. Procedimiento
total y parcial.
Indicar si cada argumento es modificado o no.
Cuando un parámetro vaya a ser alterado, se incluirá la expresión “Es MODIFICADO”.
2. Requiere: Restricciones impuestas por el uso del procedimiento no recogidas en
Argumentos. Ejemplo: que exista cierta operación para los objetos del tipo con que se
llama a la abstracción o necesidad de que previamente se haya ejecutado otra
abstracción procedimental.
Especificación de una Abs. Proc. (V)
3. Valores de retorno Descripción de que valores devuelve la abstracción y que
significan.
4. Efecto: Describe el comportamiento del procedimiento para las entradas no excluidas
por los requisitos. El efecto debe indicar las salidas producidas y las modificaciones
producidas sobre los argumentos marcados con Es MODIFICADO".
No se indica nada sobre el comportamiento del procedimiento cuando la entrada no
satisface los requisitos. Tampoco se indica nada sobre sobre cómo se lleva a cabo dicho
efecto, salvo que esto sea requerido por la especificación. Por ejemplo, que haya un
requisito expreso sobre la forma de hacerlo o sobre la eficiencia requerida.
Generalización o parametrización
Subiendo en el nivel de abstracción: crear una abstracción que se pueda usar para más
de un tipo de dato. Parametrizar el tipo de dato.
int minimo(int a, int b)
{
return (a < b ? a : b);
}
Esta función devuelve el mínimo de sus dos argumentos int. Sin embargo, la forma de
calcular este valor no solo es válida para cualquier par de int, sino también para cualquier
par de valores para los que este definida la operación <.
De modo más general:
T mínimo (T a, T b)
{
return (a < b ? a : b);
Generalizacion en C++
El lenguaje C++ soporta la generalizacion mediante funciones patron (en ingles,
template). El parámetro del tipo de dato se designa mediante la construcción template
<class T>:
template <class T>
T minimo(T a, T b)
{
return (a < b ? a : b);
}
Instanciación: Cada vez que se necesita una función específica (p.ej: mínimo para int),
se crea particularizando la función genérica (patrón).
Tratamiento de Templates
Para usar un tipo genérico hay que instanciarlo, indicando los tipos concretos con que se
quiere particularizar. Ejemplos:
VectorDinamico<int> vi;
VectorDinamico<float> vf;
El compilador generar las definiciones de clases y su función miembro correspondientes
para cada instanciación que encuentre. Por ello, la definición completa de la clase
genérica debe estar disponible: tanto la definición de la clase como las de las funciones,
para que el compilador pueda particularizarlas.
Por ello, el código se organizara como siempre: interfaz en el fichero .h e implementación
en el fichero .cpp. Pero la inclusión será al revés. No se incluirá en él .h en él .cpp, sino
el .cpp al final del .h.
Templates organización del código
VD.H
#ifndef __VD_H__
#define __VD_H__
template <class T>
class VectorDinamico {
...
};
#include "VD.cpp"
#endif
VD.cpp
#incluye <cassert>
template <class T>
VectorDinamico<T>::VectorDinamico (int n)
{
...
}
...
Tipo abstracto (Tipo de Operaciones)
1. Constructores primitivos. Crean objetos del tipo sin necesitar objetos del mismo tipo
como entrada.
2. Constructores. Crean objetos del tipo a partir de otros objetos del tipo.
3. Modificadores o mutadores. Operadores que modifican los objetos del tipo.
4. Observadores o consultores. Toman como entrada objetos de un tipo y devuelven
objetos de otro tipo.
Es usual la combinación de operadores. En particular, de los tipos 3 y 4.
Diseño TDAs
1. Elección de la mutabilidad.
 Debe corresponder con la entidad del mundo real que modelan.
 Seguridad: tipos inmutables.
 Eficiencia: tipos mutables.
2. Elección de las operaciones:
 No hay normas estrictas, solo guías heurísticas.
 Debe haber: constructores primitivos, observadores y para inmutables:
constructores, para mutables: modificadores.
 No es un buen criterio la abundancia.
 En objetos compuestos habrá que incluir iteradores.
 Dependen del uso del tipo.

Más contenido relacionado

La actualidad más candente

Polimorfismo y herencia
Polimorfismo y herenciaPolimorfismo y herencia
Polimorfismo y herencia
PonceSolsFernando
 
Agentes inteligentes
Agentes inteligentesAgentes inteligentes
Agentes inteligentes
Jefferson Guillen
 
Polimorfismo resumen
Polimorfismo resumenPolimorfismo resumen
Polimorfismo resumen
wouyrmz
 
macros Lenguaje ensamblador
macros Lenguaje ensambladormacros Lenguaje ensamblador
macros Lenguaje ensamblador
Jesus Adrian Muñoa Martinez
 
POO: Herencia, Abstraccion y Polimorfismo
POO: Herencia, Abstraccion y PolimorfismoPOO: Herencia, Abstraccion y Polimorfismo
POO: Herencia, Abstraccion y Polimorfismo
Actimel
 
Cuadro comparativo modelos para el desarrollo de software
Cuadro comparativo modelos para el desarrollo de softwareCuadro comparativo modelos para el desarrollo de software
Cuadro comparativo modelos para el desarrollo de software
paoaboytes
 
Analizador Sintáctico
Analizador SintácticoAnalizador Sintáctico
Analizador Sintáctico
Pablo Guerra
 
Metodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A ObjetosMetodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A Objetoshector_h30
 
Vectores, array y sus métodos
Vectores, array y sus métodosVectores, array y sus métodos
Vectores, array y sus métodosOrlando Verdugo
 
DISEÑO DE LA ARQUITECTURA DEL SOFTWARE
DISEÑO DE LA ARQUITECTURA DEL SOFTWAREDISEÑO DE LA ARQUITECTURA DEL SOFTWARE
DISEÑO DE LA ARQUITECTURA DEL SOFTWARE
jose_rob
 
Polimorfismo y Clases Abstractas
Polimorfismo y Clases AbstractasPolimorfismo y Clases Abstractas
Polimorfismo y Clases Abstractas
codigosyalgomas
 
Constructores en Java
Constructores en JavaConstructores en Java
Constructores en Java
UCE
 
Estructura for and while pseint - Herramientas CASE
Estructura for and while pseint - Herramientas CASEEstructura for and while pseint - Herramientas CASE
Estructura for and while pseint - Herramientas CASE
Universidad de cordoba
 
Fun_01_fundamentacion_objetos
Fun_01_fundamentacion_objetosFun_01_fundamentacion_objetos
Excepciones en java
Excepciones en javaExcepciones en java
Excepciones en javajent46
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
Kelly Cuervo
 
Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)
Josue Lara Reyes
 

La actualidad más candente (20)

Polimorfismo y herencia
Polimorfismo y herenciaPolimorfismo y herencia
Polimorfismo y herencia
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Agentes inteligentes
Agentes inteligentesAgentes inteligentes
Agentes inteligentes
 
Polimorfismo resumen
Polimorfismo resumenPolimorfismo resumen
Polimorfismo resumen
 
macros Lenguaje ensamblador
macros Lenguaje ensambladormacros Lenguaje ensamblador
macros Lenguaje ensamblador
 
POO: Herencia, Abstraccion y Polimorfismo
POO: Herencia, Abstraccion y PolimorfismoPOO: Herencia, Abstraccion y Polimorfismo
POO: Herencia, Abstraccion y Polimorfismo
 
Cuadro comparativo modelos para el desarrollo de software
Cuadro comparativo modelos para el desarrollo de softwareCuadro comparativo modelos para el desarrollo de software
Cuadro comparativo modelos para el desarrollo de software
 
Analizador Sintáctico
Analizador SintácticoAnalizador Sintáctico
Analizador Sintáctico
 
Seguridad sql server
Seguridad sql serverSeguridad sql server
Seguridad sql server
 
Metodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A ObjetosMetodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A Objetos
 
Vectores, array y sus métodos
Vectores, array y sus métodosVectores, array y sus métodos
Vectores, array y sus métodos
 
DISEÑO DE LA ARQUITECTURA DEL SOFTWARE
DISEÑO DE LA ARQUITECTURA DEL SOFTWAREDISEÑO DE LA ARQUITECTURA DEL SOFTWARE
DISEÑO DE LA ARQUITECTURA DEL SOFTWARE
 
Polimorfismo y Clases Abstractas
Polimorfismo y Clases AbstractasPolimorfismo y Clases Abstractas
Polimorfismo y Clases Abstractas
 
Constructores en Java
Constructores en JavaConstructores en Java
Constructores en Java
 
Estructura for and while pseint - Herramientas CASE
Estructura for and while pseint - Herramientas CASEEstructura for and while pseint - Herramientas CASE
Estructura for and while pseint - Herramientas CASE
 
Fun_01_fundamentacion_objetos
Fun_01_fundamentacion_objetosFun_01_fundamentacion_objetos
Fun_01_fundamentacion_objetos
 
Conceptos Basicos de POO
Conceptos Basicos de POOConceptos Basicos de POO
Conceptos Basicos de POO
 
Excepciones en java
Excepciones en javaExcepciones en java
Excepciones en java
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)
 

Destacado

Portafolio redes i
Portafolio redes iPortafolio redes i
Portafolio redes i
Alex Yungan
 
Integracion modulo v
Integracion modulo vIntegracion modulo v
Integracion modulo v
ajrb16
 
Hdp 2015 Seçim bildirgesi
Hdp 2015 Seçim bildirgesiHdp 2015 Seçim bildirgesi
Hdp 2015 Seçim bildirgesi
Hüseyin Ipek
 
One-Page Red Hill SI RA modeling Omaha feb13
One-Page Red Hill SI RA modeling Omaha feb13One-Page Red Hill SI RA modeling Omaha feb13
One-Page Red Hill SI RA modeling Omaha feb13Jeffrey Hart
 
Reading activities
Reading activitiesReading activities
Reading activities
Mònica Smile
 
Tarea 4
Tarea 4Tarea 4
Tarea 4
Alex Yungan
 
Mobilizing Domestic Resources for Universal Health Coverage by Dr. Ngozi Okon...
Mobilizing Domestic Resources for Universal Health Coverage by Dr. Ngozi Okon...Mobilizing Domestic Resources for Universal Health Coverage by Dr. Ngozi Okon...
Mobilizing Domestic Resources for Universal Health Coverage by Dr. Ngozi Okon...
Ngozi Okonjo-Iweala
 
2014年2月より随時開催(ビー・テクノロジー)
2014年2月より随時開催(ビー・テクノロジー)2014年2月より随時開催(ビー・テクノロジー)
2014年2月より随時開催(ビー・テクノロジー)
Tsuyoshi Horigome
 
Impulsan ventas de cocinas a inducción
Impulsan ventas de cocinas a inducciónImpulsan ventas de cocinas a inducción
Impulsan ventas de cocinas a inducción
Cocinas Inducción
 
Presentación Poolminers
Presentación PoolminersPresentación Poolminers
Presentación Poolminers
Hernando Rivera
 
Witryny edukacyjne i naukowe przykłady
Witryny edukacyjne i naukowe   przykładyWitryny edukacyjne i naukowe   przykłady
Witryny edukacyjne i naukowe przykłady
irasz
 
Bazy danych źródłowych przydatnych dla humanisty, nauczyciela i badacza
Bazy danych źródłowych przydatnych dla humanisty, nauczyciela i badaczaBazy danych źródłowych przydatnych dla humanisty, nauczyciela i badacza
Bazy danych źródłowych przydatnych dla humanisty, nauczyciela i badacza
irasz
 
Api &amp; afi
Api &amp; afiApi &amp; afi
Api &amp; afi
Dr.Prajeesh Nath E N
 
Laporan sistem informasi akuntansi pada rumah makan basamo
Laporan   sistem informasi akuntansi pada rumah makan basamoLaporan   sistem informasi akuntansi pada rumah makan basamo
Laporan sistem informasi akuntansi pada rumah makan basamo
Rohmad Adi Siaman SST Akt., M.Ec.Dev.
 

Destacado (19)

Portafolio redes i
Portafolio redes iPortafolio redes i
Portafolio redes i
 
Integracion modulo v
Integracion modulo vIntegracion modulo v
Integracion modulo v
 
Hdp 2015 Seçim bildirgesi
Hdp 2015 Seçim bildirgesiHdp 2015 Seçim bildirgesi
Hdp 2015 Seçim bildirgesi
 
One-Page Red Hill SI RA modeling Omaha feb13
One-Page Red Hill SI RA modeling Omaha feb13One-Page Red Hill SI RA modeling Omaha feb13
One-Page Red Hill SI RA modeling Omaha feb13
 
Reading activities
Reading activitiesReading activities
Reading activities
 
Tarea 4
Tarea 4Tarea 4
Tarea 4
 
Mobilizing Domestic Resources for Universal Health Coverage by Dr. Ngozi Okon...
Mobilizing Domestic Resources for Universal Health Coverage by Dr. Ngozi Okon...Mobilizing Domestic Resources for Universal Health Coverage by Dr. Ngozi Okon...
Mobilizing Domestic Resources for Universal Health Coverage by Dr. Ngozi Okon...
 
Apple i
Apple iApple i
Apple i
 
My Feature
My FeatureMy Feature
My Feature
 
AFCEE ST18A
AFCEE ST18AAFCEE ST18A
AFCEE ST18A
 
Apple i
Apple iApple i
Apple i
 
2014年2月より随時開催(ビー・テクノロジー)
2014年2月より随時開催(ビー・テクノロジー)2014年2月より随時開催(ビー・テクノロジー)
2014年2月より随時開催(ビー・テクノロジー)
 
Impulsan ventas de cocinas a inducción
Impulsan ventas de cocinas a inducciónImpulsan ventas de cocinas a inducción
Impulsan ventas de cocinas a inducción
 
Presentación Poolminers
Presentación PoolminersPresentación Poolminers
Presentación Poolminers
 
Witryny edukacyjne i naukowe przykłady
Witryny edukacyjne i naukowe   przykładyWitryny edukacyjne i naukowe   przykłady
Witryny edukacyjne i naukowe przykłady
 
Bazy danych źródłowych przydatnych dla humanisty, nauczyciela i badacza
Bazy danych źródłowych przydatnych dla humanisty, nauczyciela i badaczaBazy danych źródłowych przydatnych dla humanisty, nauczyciela i badacza
Bazy danych źródłowych przydatnych dla humanisty, nauczyciela i badacza
 
Api &amp; afi
Api &amp; afiApi &amp; afi
Api &amp; afi
 
Laporan sistem informasi akuntansi pada rumah makan basamo
Laporan   sistem informasi akuntansi pada rumah makan basamoLaporan   sistem informasi akuntansi pada rumah makan basamo
Laporan sistem informasi akuntansi pada rumah makan basamo
 
ISSSTE
ISSSTEISSSTE
ISSSTE
 

Similar a Abstracción en programación

Trabajo tutorial de visual C++
Trabajo tutorial de visual C++Trabajo tutorial de visual C++
Trabajo tutorial de visual C++
Bryangio2002
 
Tutorial jared
Tutorial jaredTutorial jared
Tutorial jared
HUGOJAREDSANCHEZMARTINEZ
 
Características de c sharp
Características de c sharpCaracterísticas de c sharp
Características de c sharpuccvirtual
 
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...jaircazarin
 
Funciones
FuncionesFunciones
Programación 1: modularización
Programación 1: modularizaciónProgramación 1: modularización
Programación 1: modularización
Angel Vázquez Patiño
 
Introduccion a C++
Introduccion a C++Introduccion a C++
Introduccion a C++
LenHugo
 
Portafolio de evidencias
Portafolio de evidenciasPortafolio de evidencias
Portafolio de evidencias
Héctor Díaz Ponce Inda
 
Algoritmos y lenjuage de programacion
Algoritmos y  lenjuage de programacionAlgoritmos y  lenjuage de programacion
Algoritmos y lenjuage de programacionYsaac Ruiz
 
Jorge salazar 4 to b xd
Jorge salazar 4 to b xdJorge salazar 4 to b xd
Jorge salazar 4 to b xd
Jorgitop15
 
Jorge salazar 4 to b xd
Jorge salazar 4 to b xdJorge salazar 4 to b xd
Jorge salazar 4 to b xdJorgitop15
 
Jorge salazar 4 to b xd
Jorge salazar 4 to b xdJorge salazar 4 to b xd
Jorge salazar 4 to b xdJorgitop15
 
Funciones lenguaje c modulo4
Funciones lenguaje c modulo4Funciones lenguaje c modulo4
Funciones lenguaje c modulo4
flaquita_dany
 
6 libro fundamentos cap__modularidad_ecler mv
6 libro fundamentos cap__modularidad_ecler mv6 libro fundamentos cap__modularidad_ecler mv
6 libro fundamentos cap__modularidad_ecler mv
Ecler Mamani Vilca
 
Introducción-a-Microsoft.NET-[parte3]
Introducción-a-Microsoft.NET-[parte3]Introducción-a-Microsoft.NET-[parte3]
Introducción-a-Microsoft.NET-[parte3]Kevin Reaño
 

Similar a Abstracción en programación (20)

Trabajo tutorial de visual C++
Trabajo tutorial de visual C++Trabajo tutorial de visual C++
Trabajo tutorial de visual C++
 
Tipos de Datos Abstractos.
Tipos de Datos Abstractos.Tipos de Datos Abstractos.
Tipos de Datos Abstractos.
 
Tipos de datos abstractos
Tipos de datos abstractosTipos de datos abstractos
Tipos de datos abstractos
 
Tutorial jared
Tutorial jaredTutorial jared
Tutorial jared
 
Tema3
Tema3Tema3
Tema3
 
Características de c sharp
Características de c sharpCaracterísticas de c sharp
Características de c sharp
 
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
 
Funciones
FuncionesFunciones
Funciones
 
Programación 1: modularización
Programación 1: modularizaciónProgramación 1: modularización
Programación 1: modularización
 
Introduccion a C++
Introduccion a C++Introduccion a C++
Introduccion a C++
 
Portafolio de evidencias
Portafolio de evidenciasPortafolio de evidencias
Portafolio de evidencias
 
Funciones en c++
Funciones en c++Funciones en c++
Funciones en c++
 
Algoritmos y lenjuage de programacion
Algoritmos y  lenjuage de programacionAlgoritmos y  lenjuage de programacion
Algoritmos y lenjuage de programacion
 
Jorge salazar 4 to b xd
Jorge salazar 4 to b xdJorge salazar 4 to b xd
Jorge salazar 4 to b xd
 
Jorge salazar 4 to b xd
Jorge salazar 4 to b xdJorge salazar 4 to b xd
Jorge salazar 4 to b xd
 
Jorge salazar 4 to b xd
Jorge salazar 4 to b xdJorge salazar 4 to b xd
Jorge salazar 4 to b xd
 
Funciones lenguaje c modulo4
Funciones lenguaje c modulo4Funciones lenguaje c modulo4
Funciones lenguaje c modulo4
 
6 libro fundamentos cap__modularidad_ecler mv
6 libro fundamentos cap__modularidad_ecler mv6 libro fundamentos cap__modularidad_ecler mv
6 libro fundamentos cap__modularidad_ecler mv
 
Introducción-a-Microsoft.NET-[parte3]
Introducción-a-Microsoft.NET-[parte3]Introducción-a-Microsoft.NET-[parte3]
Introducción-a-Microsoft.NET-[parte3]
 
Funcionesenlenguaje c
Funcionesenlenguaje cFuncionesenlenguaje c
Funcionesenlenguaje c
 

Último

Pobreza en el Perú en 2023 - Industrias Alimentarias
Pobreza en el Perú en 2023 - Industrias Alimentarias Pobreza en el Perú en 2023 - Industrias Alimentarias
Pobreza en el Perú en 2023 - Industrias Alimentarias
melanychacnama
 
CONSOLIDADO DE CLASES DE DERECHOS REALES.pptx
CONSOLIDADO DE CLASES DE DERECHOS REALES.pptxCONSOLIDADO DE CLASES DE DERECHOS REALES.pptx
CONSOLIDADO DE CLASES DE DERECHOS REALES.pptx
ChristianMejiaM
 
Régimen de licencias docente Santa Cruz.pdf
Régimen de licencias docente Santa Cruz.pdfRégimen de licencias docente Santa Cruz.pdf
Régimen de licencias docente Santa Cruz.pdf
colegio271
 
Desempleo En México, ventajas, desventajas, que es, que afecta.
Desempleo En México, ventajas, desventajas, que es, que afecta.Desempleo En México, ventajas, desventajas, que es, que afecta.
Desempleo En México, ventajas, desventajas, que es, que afecta.
rosalesfloresximena1
 
Explora el boletín del 27 de mayo de 2024
Explora el boletín del 27 de mayo de 2024Explora el boletín del 27 de mayo de 2024
Explora el boletín del 27 de mayo de 2024
Yes Europa
 
Cuadro de Mérito de los Profesionales posutlantes al proceso de Asimilacion.pdf
Cuadro de Mérito de los Profesionales posutlantes al proceso de Asimilacion.pdfCuadro de Mérito de los Profesionales posutlantes al proceso de Asimilacion.pdf
Cuadro de Mérito de los Profesionales posutlantes al proceso de Asimilacion.pdf
franco46040
 
IPERC LINEA BASE DDH - SONDAJES, CONTROLES Y TEMAS MEDIOAMBIENTALES
IPERC LINEA BASE DDH - SONDAJES, CONTROLES Y TEMAS MEDIOAMBIENTALESIPERC LINEA BASE DDH - SONDAJES, CONTROLES Y TEMAS MEDIOAMBIENTALES
IPERC LINEA BASE DDH - SONDAJES, CONTROLES Y TEMAS MEDIOAMBIENTALES
CoolFiveSR
 
Elaboración, implementación y evaluación del PCI para la gestión pedagógica d...
Elaboración, implementación y evaluación del PCI para la gestión pedagógica d...Elaboración, implementación y evaluación del PCI para la gestión pedagógica d...
Elaboración, implementación y evaluación del PCI para la gestión pedagógica d...
moshe jonathan
 
Explora el boletín del 24 de mayo de 2024
Explora el boletín del 24 de mayo de 2024Explora el boletín del 24 de mayo de 2024
Explora el boletín del 24 de mayo de 2024
Yes Europa
 
PLAN DE BACHEO 2024+PROCEDIMIENTO modificado.pdf
PLAN DE BACHEO 2024+PROCEDIMIENTO modificado.pdfPLAN DE BACHEO 2024+PROCEDIMIENTO modificado.pdf
PLAN DE BACHEO 2024+PROCEDIMIENTO modificado.pdf
SeguimientoSoporte
 
欧洲杯投注app-欧洲杯投注app推荐-欧洲杯投注app| 立即访问【ac123.net】
欧洲杯投注app-欧洲杯投注app推荐-欧洲杯投注app| 立即访问【ac123.net】欧洲杯投注app-欧洲杯投注app推荐-欧洲杯投注app| 立即访问【ac123.net】
欧洲杯投注app-欧洲杯投注app推荐-欧洲杯投注app| 立即访问【ac123.net】
larisashrestha558
 
Capacitación dé válvula de control1.pptx
Capacitación dé válvula de control1.pptxCapacitación dé válvula de control1.pptx
Capacitación dé válvula de control1.pptx
Esteban Casanova de la Hoz
 

Último (12)

Pobreza en el Perú en 2023 - Industrias Alimentarias
Pobreza en el Perú en 2023 - Industrias Alimentarias Pobreza en el Perú en 2023 - Industrias Alimentarias
Pobreza en el Perú en 2023 - Industrias Alimentarias
 
CONSOLIDADO DE CLASES DE DERECHOS REALES.pptx
CONSOLIDADO DE CLASES DE DERECHOS REALES.pptxCONSOLIDADO DE CLASES DE DERECHOS REALES.pptx
CONSOLIDADO DE CLASES DE DERECHOS REALES.pptx
 
Régimen de licencias docente Santa Cruz.pdf
Régimen de licencias docente Santa Cruz.pdfRégimen de licencias docente Santa Cruz.pdf
Régimen de licencias docente Santa Cruz.pdf
 
Desempleo En México, ventajas, desventajas, que es, que afecta.
Desempleo En México, ventajas, desventajas, que es, que afecta.Desempleo En México, ventajas, desventajas, que es, que afecta.
Desempleo En México, ventajas, desventajas, que es, que afecta.
 
Explora el boletín del 27 de mayo de 2024
Explora el boletín del 27 de mayo de 2024Explora el boletín del 27 de mayo de 2024
Explora el boletín del 27 de mayo de 2024
 
Cuadro de Mérito de los Profesionales posutlantes al proceso de Asimilacion.pdf
Cuadro de Mérito de los Profesionales posutlantes al proceso de Asimilacion.pdfCuadro de Mérito de los Profesionales posutlantes al proceso de Asimilacion.pdf
Cuadro de Mérito de los Profesionales posutlantes al proceso de Asimilacion.pdf
 
IPERC LINEA BASE DDH - SONDAJES, CONTROLES Y TEMAS MEDIOAMBIENTALES
IPERC LINEA BASE DDH - SONDAJES, CONTROLES Y TEMAS MEDIOAMBIENTALESIPERC LINEA BASE DDH - SONDAJES, CONTROLES Y TEMAS MEDIOAMBIENTALES
IPERC LINEA BASE DDH - SONDAJES, CONTROLES Y TEMAS MEDIOAMBIENTALES
 
Elaboración, implementación y evaluación del PCI para la gestión pedagógica d...
Elaboración, implementación y evaluación del PCI para la gestión pedagógica d...Elaboración, implementación y evaluación del PCI para la gestión pedagógica d...
Elaboración, implementación y evaluación del PCI para la gestión pedagógica d...
 
Explora el boletín del 24 de mayo de 2024
Explora el boletín del 24 de mayo de 2024Explora el boletín del 24 de mayo de 2024
Explora el boletín del 24 de mayo de 2024
 
PLAN DE BACHEO 2024+PROCEDIMIENTO modificado.pdf
PLAN DE BACHEO 2024+PROCEDIMIENTO modificado.pdfPLAN DE BACHEO 2024+PROCEDIMIENTO modificado.pdf
PLAN DE BACHEO 2024+PROCEDIMIENTO modificado.pdf
 
欧洲杯投注app-欧洲杯投注app推荐-欧洲杯投注app| 立即访问【ac123.net】
欧洲杯投注app-欧洲杯投注app推荐-欧洲杯投注app| 立即访问【ac123.net】欧洲杯投注app-欧洲杯投注app推荐-欧洲杯投注app| 立即访问【ac123.net】
欧洲杯投注app-欧洲杯投注app推荐-欧洲杯投注app| 立即访问【ac123.net】
 
Capacitación dé válvula de control1.pptx
Capacitación dé válvula de control1.pptxCapacitación dé válvula de control1.pptx
Capacitación dé válvula de control1.pptx
 

Abstracción en programación

  • 1. I. Abstracción en Programación a) Abstracción: Operación intelectual que ignora selectivamente partes de un todo para facilitar su comprensión. b) Abstracción en la resolución de problemas: Ignorar detalles específicos buscando generalidades que ofrezcan una perspectiva distinta, más favorable a su resolución. c) Abstracción: Descomposición en que se varía el nivel de detalle. Propiedades de una descomposición útil:  Todas las partes deben estar al mismo nivel  Cada parte debe poder ser abordada por separado.  La solución de cada parte debe poder unirse al resto para obtener la solución final. Mecanismos de Abstracción en Programación  Abstracción por parametrización: Se introducen parámetros para abstraer un número infinito de computaciones. Ejemplo: cálculo de cos 𝛼.  Abstracción por especificación: Permite abstraerse de la implementación concreta de un procedimiento asociándole una descripción precisa de su comportamiento. Ejemplo: doublé sqrt (doublé a); Requisitos 𝑎 ≥ 0; Efecto: devuelve una aproximación de √ 𝑎. La especificaciónes un comentario lo suficientemente definido y explicito como para usar el procedimiento sin necesitar conocer otros elementos.  Abstracción por Especificación Se suele expresar en términos de:  Precondición: Condiciones necesarias y suficientes que el procedimiento se comparte como se prevé.  Postcondición: Enunciados que se suponen en ciertos tras la ejecución del procedimiento, si se cumplió la precondición. int busca_minimo(float * array, int num_elem) /* precondición: - num_elem > 0. - 'array' es un vector con 'num_elem' componentes.
  • 2. Postcondición: devuelve la posición del m__nimo elemento de 'array'. */ Tipos de Abstracción a) Abstracción Procedimental. Definimos un conjunto de operaciones (procedimiento) que se comporta como una operación. a) Abstracción de Datos (TDA). Tenemos un conjunto de datos y un conjunto de operaciones que caracterizan el comportamiento del conjunto. Las operaciones están vinculadas a los datos del tipo. b) Abstracción de Iteración. Abstracción que permite trabajar sobre colecciones de objetos sin tener que preocuparse por la forma concreta en que se organizan.  Abstracción Procedimental Permite abstraer un conjunto preciso de operaciones de cómputo como una operación simple. Realiza la aplicación de un conjunto de entradas en las salidas con posible modificación de entradas.  La identidad de los datos no es relevante para el diseño. Solo interesa el número de parámetros y su tipo.  Con abstracción por especificación es irrelevante la implementación, pero no que hace. -Localidad: Para implementar una abstracción procedimental no es necesario conocer la implementación de otras que se usen, solo su especificación. -Modificabilidad: Se puede cambiar la implementación son de una abstracción procedimental sin afectar a otras abstracciones que la usen, siempre y cuando no cambie la especificación. Especificación de una Abstracción Procedimental (I) Propiedades  Útil  Completa  Consistente  Indicar el comportamiento en todos los casos en que sea aplicable. Debe identificar claramente:  Entradas  Salidas
  • 3.  Requisitos  Efectos Especificación de una Abs. Proc.(II) int elimina_deuda(int * partidas, int num_partidas) /* Argumentos: ---------- partidas: Array monodimensional de enteros con 'num_partidas' componentes. Es MODIFICADO. num_partidas: N_umero de componentes de 'partidas'. num_partidas > 0. Valores de retorno: ------------------ Valor absoluto de la suma de las partidas negativas. Efecto: ------ Calcula la suma de las componentes de 'partidas' con valor negativo. Pone a cero cada componente negativa, cambia el signo de la suma resultante y la devuelve. */ Especificación de una Abs. Proc. (III) a) Cabecera: (Parte sintáctica) Indica el nombre del procedimiento y el número, orden y tipo de las entradas y salidas. Se suele adoptar la sintaxis de un lenguaje de programación concreto. Ejemplo, el prototipo de la función en C. b) Cuerpo: (Parte semántica) Está compuesto por las siguientes clausulas. 1. Argumentos 2. Requiere 3. Valores de retorno 4. Efecto Especificación de una Abs. Proc. (IV) 1. Argumentos: Explica el significado de cada parámetro de la abstracción, no el tipo, que ya se ha indicado en la cabecera, sino que representa. Indicar las restricciones sobre el conjunto datos del tipo sobre los cuales puede operar el procedimiento. Procedimiento total y parcial. Indicar si cada argumento es modificado o no.
  • 4. Cuando un parámetro vaya a ser alterado, se incluirá la expresión “Es MODIFICADO”. 2. Requiere: Restricciones impuestas por el uso del procedimiento no recogidas en Argumentos. Ejemplo: que exista cierta operación para los objetos del tipo con que se llama a la abstracción o necesidad de que previamente se haya ejecutado otra abstracción procedimental. Especificación de una Abs. Proc. (V) 3. Valores de retorno Descripción de que valores devuelve la abstracción y que significan. 4. Efecto: Describe el comportamiento del procedimiento para las entradas no excluidas por los requisitos. El efecto debe indicar las salidas producidas y las modificaciones producidas sobre los argumentos marcados con Es MODIFICADO". No se indica nada sobre el comportamiento del procedimiento cuando la entrada no satisface los requisitos. Tampoco se indica nada sobre sobre cómo se lleva a cabo dicho efecto, salvo que esto sea requerido por la especificación. Por ejemplo, que haya un requisito expreso sobre la forma de hacerlo o sobre la eficiencia requerida. Generalización o parametrización Subiendo en el nivel de abstracción: crear una abstracción que se pueda usar para más de un tipo de dato. Parametrizar el tipo de dato. int minimo(int a, int b) { return (a < b ? a : b); } Esta función devuelve el mínimo de sus dos argumentos int. Sin embargo, la forma de calcular este valor no solo es válida para cualquier par de int, sino también para cualquier par de valores para los que este definida la operación <. De modo más general: T mínimo (T a, T b) { return (a < b ? a : b); Generalizacion en C++ El lenguaje C++ soporta la generalizacion mediante funciones patron (en ingles, template). El parámetro del tipo de dato se designa mediante la construcción template <class T>: template <class T> T minimo(T a, T b) { return (a < b ? a : b);
  • 5. } Instanciación: Cada vez que se necesita una función específica (p.ej: mínimo para int), se crea particularizando la función genérica (patrón). Tratamiento de Templates Para usar un tipo genérico hay que instanciarlo, indicando los tipos concretos con que se quiere particularizar. Ejemplos: VectorDinamico<int> vi; VectorDinamico<float> vf; El compilador generar las definiciones de clases y su función miembro correspondientes para cada instanciación que encuentre. Por ello, la definición completa de la clase genérica debe estar disponible: tanto la definición de la clase como las de las funciones, para que el compilador pueda particularizarlas. Por ello, el código se organizara como siempre: interfaz en el fichero .h e implementación en el fichero .cpp. Pero la inclusión será al revés. No se incluirá en él .h en él .cpp, sino el .cpp al final del .h. Templates organización del código VD.H #ifndef __VD_H__ #define __VD_H__ template <class T> class VectorDinamico { ... }; #include "VD.cpp" #endif VD.cpp #incluye <cassert> template <class T> VectorDinamico<T>::VectorDinamico (int n) { ... } ... Tipo abstracto (Tipo de Operaciones) 1. Constructores primitivos. Crean objetos del tipo sin necesitar objetos del mismo tipo como entrada. 2. Constructores. Crean objetos del tipo a partir de otros objetos del tipo. 3. Modificadores o mutadores. Operadores que modifican los objetos del tipo.
  • 6. 4. Observadores o consultores. Toman como entrada objetos de un tipo y devuelven objetos de otro tipo. Es usual la combinación de operadores. En particular, de los tipos 3 y 4. Diseño TDAs 1. Elección de la mutabilidad.  Debe corresponder con la entidad del mundo real que modelan.  Seguridad: tipos inmutables.  Eficiencia: tipos mutables. 2. Elección de las operaciones:  No hay normas estrictas, solo guías heurísticas.  Debe haber: constructores primitivos, observadores y para inmutables: constructores, para mutables: modificadores.  No es un buen criterio la abundancia.  En objetos compuestos habrá que incluir iteradores.  Dependen del uso del tipo.