For faster navigation, this Iframe is preloading the Wikiwand page for Camada de abstração.

Camada de abstração

Na computação, uma camada de abstração ou nível de abstração é uma forma de ocultar os detalhes de trabalho de um subsistema, permitindo a separação de interesses para facilitar a interoperabilidade e a independência da plataforma. Exemplos de modelos de software que usam camadas de abstração incluem o modelo OSI para protocolos de rede, OpenGL e outras bibliotecas gráficas.

Na ciência da computação, uma camada de abstração é uma generalização de um modelo conceitual ou algoritmo, longe de qualquer implementação específica. Essas generalizações surgem de grandes semelhanças que são melhor encapsuladas por modelos que expressam semelhanças presentes em várias implementações específicas. A simplificação fornecida por uma boa camada de abstração permite uma fácil reutilização, destilando um conceito útil ou padrão de design para que as situações, onde ele pode ser aplicado com precisão, possam ser rapidamente reconhecidas.

Uma camada é considerada sobreposta a outra se depender dela. Cada camada pode existir sem as camadas acima dela e requer que as camadas abaixo funcionem. Frequentemente, as camadas de abstração podem ser compostas em uma hierarquia de níveis de abstração. O modelo OSI compreende sete camadas de abstração. Cada camada do modelo encapsula e aborda uma parte diferente das necessidades de comunicação digital, reduzindo assim a complexidade das soluções de engenharia associadas.

Um famoso aforismo de David Wheeler é "Todos os problemas da ciência da computação podem ser resolvidos por outro nível de indireção".[1] Isso é muitas vezes mal citado deliberadamente com "abstração" substituída por "indireção". Às vezes, também é atribuído incorretamente a Butler Lampson. O corolário de Kevlin Henney para isso é, "... exceto pelo problema de muitas camadas de indireção."[2]

Arquitetura do computador

[editar | editar código-fonte]

Em uma arquitetura de computador, um sistema de computador é geralmente representado como consistindo em vários níveis de abstração, como:

A lógica programável é frequentemente considerada parte do hardware, enquanto as definições lógicas também são algumas vezes vistas como parte do software ou firmware de um dispositivo. O firmware pode incluir apenas software de baixo nível, mas também pode incluir todo o software, incluindo um sistema operacional e aplicativos. As camadas de software podem ser divididas em camadas de abstração de hardware, drivers de dispositivos físicos e lógicos, repositórios como sistemas de arquivos, kernels de sistema operacional, middleware, aplicativos e outros. Uma distinção também pode ser feita de linguagens de programação de baixo nível como VHDL , linguagem de máquina , linguagem assembly para uma linguagem compilada , intérprete e linguagem de script.[3]

Entrada e saída

[editar | editar código-fonte]

No sistema operacional Unix, a maioria dos tipos de operações de entrada e saída são considerados fluxos de bytes lidos de um dispositivo ou gravados em um dispositivo. Este modelo de fluxo de bytes é usado para E/S de arquivo, E/S de soquete e E/S de terminal para fornecer independência de dispositivo. Para ler e gravar em um dispositivo no nível do aplicativo, o programa chama uma função para abrir o dispositivo, que pode ser um dispositivo real, como um terminal, ou um dispositivo virtual, como uma porta de rede ou um arquivo em um sistema de arquivos . As características físicas do dispositivo são mediadas pelo sistema operacional que, por sua vez, apresenta uma interface abstrata que permite ao programador ler e gravar bytes de / para o dispositivo. O sistema operacional então executa a transformação real necessária para ler e gravar o fluxo de bytes no dispositivo.

A maioria das bibliotecas gráficas, como OpenGL, fornece um modelo de dispositivo gráfico abstrato como uma interface. A biblioteca é responsável por traduzir os comandos fornecidos pelo programador em comandos de dispositivo específicos necessários para desenhar os elementos gráficos e objetos. Os comandos de dispositivo específicos para uma plotadora são diferentes dos comandos de dispositivo para um monitor CRT, mas a biblioteca gráfica oculta a implementação e os detalhes dependentes do dispositivo, fornecendo uma interface abstrata que fornece um conjunto de primitivas que geralmente são úteis para desenhar objetos gráficos.

Referências

  1. Spinellis, Diomidis (2007). Beautiful Code: Leading Programmers Explain How They Think. Sebastopol, CA: O'Reilly and Associates. pp. 279–291 
  2. @kevlinhenney (3 de setembro de 2012). «Yes, that's my corollary» (Tweet) – via Twitter 
  3. Tanenbaum, Andrew S. (1979). Structured Computer Organization. Englewood Cliffs, New Jersey: Prentice-Hall. ISBN 0-13-148521-0 
{{bottomLinkPreText}} {{bottomLinkText}}
Camada de abstração
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?