Abstracción (informática)

Ir a: navegación, búsqueda de

En Ciencias de la computación, abstracción es el proceso de separar ideas de instancias específicas de esas ideas en el trabajo. Estructuras computacionales se definen por sus significados (semántica), mientras que esconderse los detalles de cómo funcionan. Abstracción intenta factor detalles de un patrón común para que los programadores puedan trabajar cerca del nivel del pensamiento humano, dejando de lado los detalles que importan en la práctica, pero son irrelevantes para el problema se solucionó. Por ejemplo, un sistema puede tener varios capas de abstracción por el que se exponen diferentes significados y cantidades de detalle del programador; bajo nivel capas de abstracción exponen los detalles de la hardware de computadora donde el programa carreras, mientras que alto nivel capas lidiar con el lógica de negocio del programa.

Abstracción captura sólo los detalles acerca de un objeto que son relevantes para las perspectivas actuales. Por ejemplo, los números son conceptos en lenguajes de programación. Números pueden representarse de muchas maneras diferentes en hardware y software, pero, independientemente de cómo se hace, operaciones numéricas a obedecer reglas similares.

Abstracción puede aplicar al control o a los datos: Abstracción de control es la abstracción de acciones mientras que Resumen de los datos es el de estructuras de datos.

  • Abstracción de control implica el uso de subprogramas y conceptos relacionados flujos de control
  • Resumen de los datos permite manipular los bits de datos en forma significativa. Por ejemplo, es la motivación básica detrás de tipo de datos.

Se puede considerar la noción de una objeto (a partir de programación orientada a objetos) como un intento de combinar las abstracciones de datos y código.

La misma definición abstracta puede ser utilizada como un común interfaz para una familia de objetos con diferentes implementaciones y comportamientos pero que comparten el mismo significado. El herencia mecanismo en la programación orientada a objetos puede utilizarse para definir una clase abstracta como la interfaz común.

La recomendación que los programadores utilizan abstracciones siempre que sea adecuado para evitar la duplicación (generalmente del código) es conocido como el principio de la abstracción. El requisito que un lenguaje de programación proporciona abstracciones convenientes también se llama el principio de la abstracción.

Contenido

  • 1 Análisis razonado
  • 2 Características del lenguaje
    • 2.1 Lenguajes de programación
    • 2.2 Métodos de especificación
    • 2.3 Idiomas de la especificación
  • 3 Abstracción de control
    • 3.1 Programación estructurada
  • 4 Resumen de los datos
  • 5 Abstracción en la programación orientada a objetos
    • 5.1 Diseño orientado a objetos
  • 6 Consideraciones
  • 7 Niveles de abstracción
    • 7.1 Sistemas de base de datos
    • 7.2 Arquitectura de capas
  • 8 Véase también
  • 9 Referencias
  • 10 Lectura adicional
  • 11 Enlaces externos

Análisis razonado

Computación principalmente opera independientemente del mundo concreto: el hardware implementa un modelo de computación es intercambiable con otros. El programa está estructurado en arquitecturas permitir a los seres humanos crear los sistemas enormes por la concentración en algunos temas a la vez. Estas arquitecturas están hechas de opciones específicas de abstracciones. Décima regla de Greenspun es un aforismo ¿Qué tal una arquitectura es inevitable y complejo.

Una forma central de la abstracción en computación es lengua abstracción: se desarrollan nuevos lenguajes artificiales para expresar determinados aspectos de un sistema. Lenguajes de modelado ayudar en la planificación. Lenguajes de programación puede ser procesado con una computadora. Un ejemplo de este proceso de abstracción es el desarrollo generacional de lenguajes de programación desde el lenguaje máquina para el lenguaje ensamblador y el idioma de alto nivel. Cada etapa puede utilizarse como un trampolín para la siguiente etapa. La abstracción de la lengua por ejemplo continúa en lenguajes de scripting y lenguajes específicos de dominio.

Dentro de un lenguaje de programación, algunas funciones permiten al programador crear nuevas abstracciones. Estos incluyen la subrutina, la móduloy el componente de software. Algunas otras abstracciones tales como patrones de diseño de software y estilos arquitectónicos permanecen invisibles a un lenguaje de programación y operar sólo en el diseño de un sistema.

Algunas abstracciones tratan de limitar la amplitud de un programador necesita ocultando completamente las abstracciones que a su vez se basan en conceptos. El ingeniero y escritor Joel Spolsky ha criticado estos esfuerzos afirmando que todas las abstracciones son agujereado — que nunca totalmente pueden esconder los detalles de abajo[citación necesitada]; Sin embargo esto no niega la utilidad de la abstracción. Algunas abstracciones están diseñadas para interactuar con los demás, por ejemplo un lenguaje de programación puede contener un interfaz de funciones extranjeros para hacer llamadas a la lengua de nivel inferior. Abstracción de datos es la separación entre la especificación del objeto de datos y su aplicación.

Características del lenguaje

Lenguajes de programación

Artículo principal: Lenguaje de programación

Diferentes lenguajes de programación proporcionan diferentes tipos de abstracción, dependiendo de los usos previstos para el lenguaje. Por ejemplo:

  • En lenguajes de programación orientada a objetos tales como C++, Object Pascal, o Java, el concepto de abstracción se ha convertido en una declaración declarativa - usando el Palabras clave virtual (en C++) o Resumen[1] y interfaz[2] (en Java). Después de esa declaración, es responsabilidad del programador para implementar un clase crear instancias de la objeto de la declaración.
  • Lenguajes de programación funcional comúnmente exhiben abstracciones relacionadas a las funciones, tales como abstracciones Lambda (haciendo un término en función de alguna variable), funciones de orden superior (los parámetros son funciones), soporte abstracción (haciendo un término en función de una variable).
  • Ceceo moderno tales como Clojure, Esquema y Common Lisp apoyo sistemas de macro para permitir la abstracción sintáctica. Esto permite a un programador de Lisp eliminar Código repetitivo, Resumen las secuencias de llamada función tedioso lejos, implementar nuevos estructuras de control de flujo, implementar o incluso construir Lenguajes específicos de dominio (DSL), que permiten a conceptos específicos de dominio ser expresado en algunos optimizados en forma. Todos de estos, cuando se usa correctamente, mejorar tanto la eficiencia del programador y la claridad del código por medio de la finalidad más explícito. Una consecuencia de la abstracción sintáctica es también que cualquier dialecto de Lisp y de hecho casi cualquier lenguaje de programación pueden, en principio, aplicar en cualquier esfuerzo de Lisp con significativamente menor (pero todavía no triviales en algunos casos) moderno en comparación con los lenguajes de programación "tradicionales" tales como Python, C o Java.

Métodos de especificación

Artículo principal: Especificación formal

Los analistas han desarrollado varios métodos para especificar formalmente sistemas de software. Algunos conocidos métodos incluyen:

  • Modelo abstracto basado en método (VDM, Z);
  • Técnicas algebraicas (Alerce, CLEAR, OBJ, acto, CASL);
  • Técnicas basadas en procesos (LOTOS, SDL, Estelle);
  • Técnicas basadas en trazas (especial, TAM);
  • Técnicas basadas en el conocimiento (refinar, Gist).

Idiomas de la especificación

Artículo principal: Lenguaje de especificación

Idiomas de la especificación generalmente dependen de las abstracciones de un tipo u otro, puesto que las especificaciones son típicamente definidas antes en un proyecto (y a un nivel más abstracto) que una eventual aplicación. El UML lenguaje de especificación, por ejemplo, permite la definición de Resumen clases, que siguen siendo abstractas durante la fase del proyecto de arquitectura y especificación.

Abstracción de control

Artículo principal: Flujo de control

Lenguajes de programación ofrecen control abstracción como uno de los principales propósitos de su uso. Máquinas de la computadora entienden las operaciones en el muy bajo nivel como trasladar algunos trozos de un lugar de la memoria a otra ubicación y produciendo la suma de dos secuencias de bits. Lenguajes de programación permiten a realizarse en el nivel superior. Por ejemplo, considere esta declaración escrita en una Pascal-gusta la moda:

un: = (1 + 2) * 5

A un ser humano, esto me parece un cálculo bastante simple y obvia ("uno y dos son tres, cinco veces es quince años"). Sin embargo, los pasos bajo nivel necesarios para llevar a salir esta evaluación y devolver el valor de "15" y luego asignar ese valor a la variable "a", en realidad son muy sutiles y complejos. Los valores necesitan ser convertidos a representación binaria (a menudo una tarea mucho más complicada de lo que uno cree) y los cálculos de descomponer (por el compilador o interprete) en instrucciones de montaje (una vez más, que son mucho menos intuitiva para el programador: operaciones tales como cambiar un binario alta izquierda, o agregar el complemento binario del contenido de un registro a otroson simplemente no cómo los seres humanos piensan en los abstractos operaciones aritméticas de suma o la multiplicación). Finalmente, asignando el valor resultante de "15" a la variable con la etiqueta "a", para que "a" puede ser utilizado más adelante, implica pasos adicionales 'entre bastidores' de buscar la etiqueta de una variable y la situación resultante en física o memoria virtual, almacenar la representación binaria de "15" a esa localización de memoria, etc..

Sin abstracción de control, un programador tendría que especificar todos los pasos de nivel de registro/binario cada vez que ella simplemente quería agregar o un par de números se multiplican y asignar el resultado a una variable. Dicha duplicación del esfuerzo tiene dos consecuencias negativas:

  1. obliga al programador a repetir constantemente tareas bastante común cada vez que se necesita una operación similar
  2. obliga al programador programa para el conjunto de hardware y la instrucción particular

Programación estructurada

Artículo principal: Programación estructurada

Programación estructurada implica la división de las tareas del programa complejo en trozos más pequeños con control de flujo claro e interfaces entre los componentes, con la reducción de la complejidad potencial de efectos secundarios.

En un programa sencillo, esto puede apuntar para que bucles tengan puntos de salida simple u obvio y (cuando sea posible) para tener puntos de salida única de funciones y procedimientos.

En un sistema más grande, que puede involucrar derribando las tareas complejas en muchos módulos diferentes. Considere un sistema que nómina de asas en los buques y en las oficinas de la orilla:

  • El nivel superior puede presentar un menú de operaciones típicas del usuario final.
  • Dentro de eso podría ser ejecutables independientes o bibliotecas para tareas tales como firmar dentro y fuera de los empleados o de impresión de cheques.
  • Dentro de cada uno de esos standalone componentes allí podrían ser muchos archivos de diferentes fuentes, cada una contiene el código del programa para manejar una parte del problema, con sólo las interfaces disponibles a otras partes del programa. Un cartel en el programa podría tener archivos de código fuente para cada pantalla de ingreso de datos y la interfaz de base de datos (que se puede ser una biblioteca de tercero independiente o un conjunto de rutinas de biblioteca enlazado estáticamente).
  • La base de datos o la aplicación de nómina también tiene que iniciar un proceso de intercambio de datos con entre la nave y la orilla, y esa tarea de transferencia de datos a menudo contiene muchos otros componentes.

Estas capas de producen el efecto de aislar los detalles de implementación de un componente y sus variados métodos internos de los demás. Programación orientada a objetos abrazado y ampliado este concepto.

Resumen de los datos

Artículo principal: Tipo de dato abstracto

Abstracción de datos impone una separación clara entre la Resumen las propiedades de un tipo de datos y el hormigón detalles de su aplicación. Las propiedades abstractas son aquellas que son visibles para el código del cliente que hace uso del tipo de datos — la interfaz al tipo de datos, mientras que la aplicación concreta se mantiene completamente privada y de hecho puede cambiar, por ejemplo, para incorporar mejoras de eficiencia en el tiempo. La idea es que estos cambios no deben para tener repercusión sobre el código de cliente, ya que no implican ninguna diferencia en el comportamiento abstracto.

Por ejemplo, uno puede definir un tipo de dato abstracto llamado tabla de consulta que únicamente associates llaves con valores, y en los valores que pueden ser obtenidos especificando sus teclas correspondientes. Tan una tabla de búsqueda puede implementarse de varias maneras: como un tabla hash, un árbol binario de búsqueda, o incluso un simple lineal lista de pares (clave: valor). En cuanto se refiere a código de cliente, las propiedades del tipo abstractas son los mismos en cada caso.

Por supuesto, todo esto se basa en acertar con los detalles de la interfaz en primer lugar, ya que cualquier cambio que puede tener importantes impactos en código de cliente. Como una manera de ver esto: las formas interfaz un contrato sobre el comportamiento acordada entre el código de cliente y tipo de datos; nada no enunciadas en el contrato está sujeto a cambios sin previo aviso.

Idiomas que implementan abstracción de datos incluyen Ada y Modula-2. Orientado a objetos idiomas comúnmente son reclamados[¿por quién?] para ofrecer la obtención de los datos; Sin embargo, su herencia concepto tiende a colocar la información en la interfaz que más bien pertenece en la aplicación; Así, los cambios en dicha información termina impactando código de cliente, conduce directamente a la Problema interfaz binaria frágil.

Abstracción en la programación orientada a objetos

Artículo principal: Objeto (informática)

En programación orientada a objetos teoría, abstracción consiste en la instalación para definir objetos que representan los "actores" abstractos que pueden realizar el trabajo, Informe sobre y cambiar su estado y "comunicarse" con otros objetos en el sistema. El término encapsulación se refiere a la ocultación de estado detalles, pero ampliando el concepto de tipo de datos de los lenguajes de programación anteriores para asociar comportamiento más fuertemente con los datos y estandarizar la forma en que interactúan diferentes tipos de datos, es el principio de abstracción. Cuando la abstracción procede a las operaciones definidas, permitiendo a los objetos de diferentes tipos que serían sustituidos, se llama polimorfismo. Cuando se procede en la dirección opuesta, dentro de los tipos o clases, estructurarlas para simplificar un conjunto complejo de relaciones, se llama Delegación o herencia.

Varios lenguajes de programación orientados a objetos ofrecen facilidades similares para la abstracción, para sustentar una estrategia general de polimorfismo en la programación orientada a objetos, que incluye la sustitución de uno tipo por otra en la función igual o similar. Aunque no como generalmente apoyado, un configuración o imagen o paquete puede predeterminar un grande muchos de estos enlaces en tiempo de compilación, tiempo de enlace, o loadtime. Esto dejaría sólo un mínimo de tales vinculaciones de cambiar a tiempo de ejecución.

Sistema de objetos Lisp común o Auto, por ejemplo, cuentan con menos de una distinción de la instancia de la clase y más uso de delegación para polimorfismo. Funciones y objetos individuales se abstraen más flexible para encajar mejor con un patrimonio compartido funcional de Lisp.

C++ ejemplifica el otro extremo: confía pesadamente en plantillas y sobrecarga y otros enlaces estáticos en tiempo de compilación, que a su vez tiene ciertos problemas de flexibilidad.

A pesar de estos ejemplos ofrecen estrategias alternativas para lograr la misma abstracción, no altera fundamentalmente la necesidad de apoyar a los sustantivos abstractos en código - toda la programación se basa en la capacidad de los verbos abstractos como funciones, sustantivos como estructuras de datos y tampoco como procesos.

Consideremos por ejemplo una muestra Java fragmento de representar una granja común "animales" a un nivel de abstracción adecuado para los aspectos simples del modelo de su hambre y alimentación. Define un Animal clase para representar tanto al estado del animal y sus funciones:

público clase Animal se extiende LivingThing
{
     privado Ubicación loc;
     privado doble energyReserves;
 
     público Boolean isHungry() {
         retorno energyReserves < 2.5;
     }
     público vacío comer(Comida) {
         Consumir alimentos
energyReserves += comida.getCalories();
     }
     público vacío moveTo(Ubicación) {
         Mover a la nueva ubicación
         Esto.Loc = Ubicación;
     }
}

Con la definición anterior, se podrían crear objetos de tipo Animal y llamar a sus métodos como este:

thePig = Nuevo Animal();
vacasin = Nuevo Animal();
if (thePig.isHungry()) {
thePig.comer(tableScraps);
}
if (vacasin.isHungry()) {
vacasin.comer(hierba);
}
vacasin.moveTo(Granero);

En el ejemplo anterior, la clase Animal es una abstracción utilizada en lugar de un animal real, LivingThing es una abstracción más (en este caso una generalización) de Animal.

Si se requiere una jerarquía más diferenciada de los animales — para distinguir, digamos, quienes proporcionan leche de quienes ofrecen nada excepto carne al final de sus vidas — es un nivel intermedio de abstracción, probablemente DairyAnimal (vacas, cabras) que come los alimentos adecuados para dar buena leche y MeatAnimal (cerdos, reses) que comía alimentos para dar la mejor calidad de carne.

Tan una abstracción podría eliminar la necesidad del codificador de aplicación especificar el tipo de comida, así que podría concentrarse en cambio en el horario de alimentación. Las dos clases podrían estar relacionadas con herencia o quedarse solos, y el programador puede definir diferentes grados de polimorfismo entre los dos tipos. Estas instalaciones suelen variar drásticamente entre idiomas, pero en general cada uno puede lograr cualquier cosa que sea posible con cualquiera de los otros. Un gran muchas sobrecargas de operación, tipo de datos por tipo de datos, pueden tener el mismo efecto en tiempo de compilación como cualquier grado de herencia u otros medios para lograr el polimorfismo. La notación de clase es simplemente conveniencia de un codificador.

Diseño orientado a objetos

Artículo principal: Diseño orientado a objetos

Las decisiones sobre qué abstracta y mantener bajo el control del codificador se convierten en la principal preocupación del diseño orientado a objetos y Análisis de dominio— en realidad determinar las relaciones relevantes en el mundo real es la preocupación de Análisis orientado a objetos o Análisis de legado.

En general, para determinar la abstracción apropiado, uno debe tomar muchas decisiones pequeñas sobre alcance (análisis de dominio), determinar qué otros sistemas hay que cooperar con (análisis obsoleta), entonces realizar un detallado análisis orientado a objetos que se expresa dentro de las limitaciones de tiempo y presupuestas del proyecto como un diseño orientado a objetos. En nuestro ejemplo simple, el dominio es el corral, vacas y cerdos vivos y sus hábitos alimentarios son las limitaciones de legado, el análisis detallado es que los codificadores deben tener la flexibilidad necesaria para alimentar a los animales lo que está disponible y por lo tanto no hay razón para codificar el tipo de comida en la propia clase y el diseño es una sola clase simple Animal de los cuales los cerdos y las vacas son instancias con las mismas funciones. La decisión de distinguir DairyAnimal cambiaría el análisis detallado pero el dominio y el legado análisis sería invariable — está enteramente bajo el control del programador, y nos referimos a la abstracción en la programación orientada a objetos diferencia de abstracción en el análisis de dominio o legado.

Consideraciones

Cuando se habla de semántica formal de lenguajes de programación, métodos formales o interpretación abstracta, abstracción se refiere al acto de considerar una definición menos detallada, pero segura, de los comportamientos observados programa. Por ejemplo, uno puede observar sólo el resultado final de las ejecuciones de programa en lugar de considerar todos los pasos intermedios de ejecuciones. Abstracción se define a un hormigón modelo (más exacto) de ejecución.

Abstracción puede ser Exacto o fieles con respecto a una propiedad si se puede responder a una pregunta sobre la propiedad igualmente bien en el modelo concreto o abstracto. Por ejemplo, si queremos saber lo que el resultado de la evaluación de una expresión matemática que implica sólo números enteros +, -, ×, vale la pena Modulo n, nosotros sólo necesitamos realizar todas las operaciones modulo n (es una forma familiar de esta abstracción expulsiones de nueves).

Abstracciones, sin embargo, aunque no necesariamente Exacto, debe ser sonido. Es decir, debería ser posible obtener respuestas sonidas de ellos — aunque la abstracción simplemente puede producir un resultado de indecidibilidad. Por ejemplo, podemos abstraemos los estudiantes en una clase por sus edades mínimas y máximas; Si uno se pregunta si una persona pertenece a esa clase, simplemente se puede comparar las edad de esa persona con la edad mínima y máxima; Si su edad se encuentra fuera del rango, uno puede responder con seguridad que la persona no pertenece a la clase; Si no lo hace, uno sólo puede responder "No sé".

El nivel de abstracción incluido en un lenguaje de programación puede influir en su conjunto usabilidad. El Dimensiones cognitivas marco incluye el concepto de gradiente de abstracción en un formalismo. Este marco permite al diseñador de un lenguaje de programación estudiar las ventajas y desventajas entre la abstracción y otras características del diseño, y cómo los cambios en la abstracción influyen la usabilidad del lenguaje.

Abstracciones pueden resultar útiles cuando se trata con programas de computadora, porque las propiedades no triviales de los programas informáticos son esencialmente indecidible (véase Teorema del arroz). Como consecuencia, métodos automáticos para derivar información sobre el comportamiento de los programas informáticos tampoco tienen que dejar caer la terminación (en algunas ocasiones, pueden fallar, accidente o no ceder nunca un resultado), validez (que pueden proporcionar información falsa), o precisión (puede responder "No sé" a algunas preguntas).

La abstracción es el concepto de la base de interpretación abstracta. Comprobación de modelo ocurre generalmente en las versiones abstractas de los sistemas estudiados.

Niveles de abstracción

Artículo principal: Capa de abstracción

Ciencias de la computación se presenta comúnmente niveles de (o, menos comúnmente, capas) de la abstracción, en donde cada nivel representa un modelo diferente de la misma información y los procesos, pero utiliza un sistema de expresión que involucra un conjunto único de objetos y composiciones que se aplican sólo a un dominio particular. [3] Cada nivel relativamente abstracto, "superior" se basa en un nivel relativamente concreto, "inferior", que tiende a proporcionar una representación cada vez más "granular". Por ejemplo, gates basan en circuitos electrónicos, binarios en puertas, lenguaje máquina en binario, en lenguaje máquina, aplicaciones y sistemas operativos en lenguajes de programación lenguaje de programación. Cada nivel se incorporó, pero no determinado, por el nivel bajo, por lo que es un lenguaje de descripción que es algo autónomo.

Sistemas de base de datos

Artículo principal: Sistema de gestión de base de datos

Muchos usuarios de sistemas de base de datos carecen de profunda familiaridad con las estructuras de datos de computadoras, los desarrolladores de bases de datos a menudo ocultan complejidad a través de los siguientes niveles:

Niveles de abstracción de datos de un sistema de base de datos

Nivel físico: El nivel más bajo de abstracción describe Cómo un sistema realmente almacena datos. El nivel físico describe las estructuras de datos complejos de bajo nivel en detalle.

Nivel lógico: El siguiente nivel más alto de abstracción describe ¿Qué datos de la base de datos almacena, y qué relaciones existen entre esos datos. El nivel lógico describe así una base de datos completa en términos de un pequeño número de estructuras relativamente simples. Aunque la implementación de las estructuras simples a nivel lógico puede implicar complejas estructuras de nivel físicas, el usuario del nivel de lógico no necesita ser conscientes de esta complejidad. Esto se refiere como independencia de datos físicos. Administradores de bases de datos, quien debe decidir qué información se mantenga en una base de datos, utilice el nivel de abstracción lógico.

Nivel de vista: El nivel más alto de abstracción describe sólo parte de la base de datos. Aunque el nivel de lógico utiliza estructuras más simples, complejidad se mantiene debido a la variedad de información almacenada en una base de datos grande. Muchos usuarios de un sistema de base de datos no necesita toda esta información; en cambio, necesitan acceder a sólo una parte de la base de datos. El nivel de vista de la abstracción existe para simplificar su interacción con el sistema. El sistema puede proporcionar muchas Vistas de la misma base de datos.

Arquitectura de capas

Artículo principal: Capa de abstracción

La capacidad de proporcionar un diseño de diferentes niveles de abstracción puede

  • simplificar considerablemente el diseño
  • permiten a los jugadores de rol diferente trabajar eficazmente en varios niveles de abstracción
  • apoyar la portabilidad de los artefactos de software (basado en el modelo ideal)

Diseño de sistemas y diseño de procesos de negocio ambos pueden usar esto. Algunos procesos de diseño específicamente generar diseños que contienen diferentes niveles de abstracción.

Capas de arquitectura particiones las preocupaciones de la aplicación en grupos apilados (capas). Es una técnica utilizada en el diseño de programas informáticos, hardware y comunicaciones en qué sistema o red de componentes están aislados en capas para que los cambios pueden hacerse en una sola capa sin afectar a los demás.

Véase también

  • Principio de la abstracción (programación)
  • Inversión de abstracción para un patrón contra un peligro en abstracción
  • Tipo de dato abstracto para una descripción abstracta de un conjunto de datos
  • Algoritmo para una descripción abstracta de un procedimiento computacional
  • Soporte abstracción para convertir un término en función de una variable
  • Modelado de datos para la estructuración de datos independientes de los procesos que lo utilizan
  • Encapsulación para el doble categórico (el otro lado) de la abstracción
  • Décima regla de Greenspun para un aforismo sobre (el?) punto óptimo en el espacio de abstracciones
  • Función de orden superior para la abstracción donde funciones producen o consumen otras funciones
  • Abstracción Lambda para convertir un término en función de alguna variable
  • Refinamiento por el contrario de la abstracción en computación
  • Sustitución para la izquierda categórica adjoint (inverso) de la abstracción.

Referencias

  1. ^ "Clases y métodos abstractos". Los tutoriales de Java ™. Oracle. 4 de septiembre 2014.
  2. ^ "Usando una interfaz como un tipo". Los tutoriales de Java ™. Oracle. 4 de septiembre 2014.
  3. ^ Luciano Floridi, Levellism y el método de la abstracción PIERNA – informe de investigación 22.11.04

Este artículo está basado en material extraído de la Diccionario en línea gratuito de la computación antes de 01 de noviembre de 2008 e incorporada bajo los términos "conjetura" de la GFDL, versión 1.3 o posterior.

Lectura adicional

  • Harold Abelson; Gerald Jay Sussman; Julie Sussman (25 de julio de 1996). Estructura e interpretación de los programas informáticos (2 ed.). MIT Press. ISBN978-0-262-01153-2. 22 de junio 2012.
  • Lorenza Saitta; Jean-Daniel Zucker (2013). Abstracción en Inteligencia Artificial y sistemas complejos (1 Ed.). Springer-Verlag. ISBN978-1-4614-7051-9.
  • Spolsky, Joel (11 de noviembre de 2002). "La ley de fugas abstracciones". Joel on Software.
  • Ocultar información/abstracción -CS211 por supuesto, la Universidad de Cornell.
  • Gorodinski, Lev (31 de mayo de 2012). "Abstracciones".

Enlaces externos

  • SimArch ejemplo de arquitectura de capas para sistemas de simulación distribuida.

Otras Páginas

Obtenido de"http://en.copro.org/w/index.php?title=Abstraction _ (computer_science) & oldid = 628465272"