Latest web development tutorials

C ++ abstração de dados

abstração de dados refere-se apenas para fornecer informações críticas para o mundo exterior, e esconder os detalhes de implementação do seu plano de fundo, que o desempenho de apenas as informações necessárias, sem apresentar mais detalhes.

abstração de dados é uma dependência no interface de programação e tecnologia de separação de implementação (design).

Vamos dar alguns exemplos reais da vida real, como uma televisão, você pode ligar e desligar, mudar de canal, ajustar o volume, adição de componentes externos (como alto-falantes, VCR, DVD player), mas você não sabe a sua interno detalhes de implementação, isto é, você não sabe como ele é recebido por um sinal de cabo, como converter o sinal e, eventualmente, exibida na tela.

Portanto, podemos dizer que a TV para a sua implementação interna e interfaces externas separadas, e você não sabe o seu princípio interno, diretamente através de sua interface externa (como o botão de energia no controle remoto, controlador de volume de som) pode controlar a TV.

Agora, vamos começar a trabalhar, é em termos de programação C ++, C ++abstração de dados de classe possível.-Los para o mundo exterior proporciona um método comum para a operação de um grande número de objetos de dados, que é, de fato, o mundo exterior não sabia a implementação da classe interna.

Por exemplo, o programa pode chamar a funçãosort (), sem a necessidade de saber a função dos algoritmos utilizados para classificar os dados.Na verdade, a função de base da realização da espécie devido à diferente repositório variar, desde que a mesma interface, chamada de função, como de costume.

Em C ++, usamos a nossa própriaclasse para definir o tipo de dados abstratos (ADT).Você pode usar oostream classe coutobjeto para dados de saída para a saída padrão, como segue:

#include <iostream>
using namespace std;

int main( )
{
   cout << "Hello C++" <<endl;
   return 0;
}

Aqui, você não entende como o textocout exibido na tela do usuário.Você só precisa saber a interface pública para, cout implementação subjacente pode ser alterado livremente.

guia Acesso Abstract obrigatória

Em C ++, usamos o guia acesso para definir a classe interface abstrata. Uma classe pode conter zero ou mais etiquetas de acesso:

  • Tag define o uso de membros públicos pode acessar todas as partes do programa. Vista abstrata de um tipo de dados é público pelos seus membros definidos.
  • O uso de private label definido usando os membros da classe não pode ter acesso ao código. parte privada do código usando o tipo de detalhes hide implementação.

tag frequência de acesso aparece, não há limite. Cada tag especifica o acesso seguido por membros dos níveis de acesso definidos. nível de acesso atribuído permanecerá em vigor até a próxima guia encontro Access ou fechar o tipo de corpo direita encontrou entre parênteses.

Benefícios abstração de dados

abstração de dados tem duas vantagens importantes:

  • classe interna é protegida de erros em nível de usuário inadvertidamente causou danos ao estado do objeto.
  • Com a implementação da classe pode mudar ao longo do tempo, a fim de responder às novas necessidades, ou atender a essas exigências não mudam o relatório de erro código de nível de usuário.

seção privada define os membros de dados da classe, mesmo que apenas na preparação de tais autores podem alterar livremente os dados. Se forem implementadas mudanças, você só precisa verificar o código para a classe para ver qual o impacto que esta mudança pode causar. Se os dados é público, qualquer acesso directo à velha forma de membros de função de representação de dados são susceptíveis de ser afectadas.

dados de instância Abstract

C ++ programa, qualquer classe com os membros da abstração de dados públicos e privados podem ser usados ​​como exemplos. Considere os seguintes exemplos:

#include <iostream>
using namespace std;

class Adder{
   public:
      // 构造函数
      Adder(int i = 0)
      {
        total = i;
      }
      // 对外的接口
      void addNum(int number)
      {
          total += number;
      }
      // 对外的接口
      int getTotal()
      {
          return total;
      };
   private:
      // 对外隐藏的数据
      int total;
};
int main( )
{
   Adder a;
   
   a.addNum(10);
   a.addNum(20);
   a.addNum(30);

   cout << "Total " << a.getTotal() <<endl;
   return 0;
}

Quando o código acima é compilado e executado, ele produz os seguintes resultados:

Total 60

A classe acima dos números juntos e retorna a soma. Membro PúblicaaddNum e getTotalé interface externa, os usuários precisam saber para usar sua classe. membros privadostotal de usuários não precisam saber, mas a classe pode trabalhar necessário.

Estratégia de design

Abstract para separar código na interface e implementação. Assim, no projeto de componentes, a interface deve permanecer independente da aplicação, de modo que se você alterar a implementação subjacente, a interface permanecerá inalterada.

Neste caso, independentemente de qualquer programa, utilizando a interface, a interface não será afectado, apenas para perceber a última recompilação.