Latest web development tutorials

C ++ dati astrazione

astrazione dati si riferiscono solo per fornire informazioni critiche per il mondo esterno, e nascondere i dettagli di implementazione di loro background, che le prestazioni del solo le informazioni necessarie senza presentare particolari.

astrazione dei dati è una dipendenza sull'interfaccia di programmazione e la tecnologia di separazione realizzazione (progettazione).

Diamo vita reale esempi reali, come ad esempio un televisore, è possibile accendere e spegnere, cambiare i canali, regolare il volume, l'aggiunta di componenti esterni (come gli altoparlanti, videoregistratore, lettore DVD), ma non si conosce il suo interno dettagli di implementazione, che è, non si sa come viene ricevuto da un cavo di segnale, come convertire il segnale e, infine, visualizzato sullo schermo.

Pertanto, possiamo dire la TV per la sua implementazione interna e interfacce esterne separati, e non si sa il suo principio interna, direttamente attraverso la sua interfaccia esterna (come ad esempio il pulsante di accensione sul telecomando, regolatore di volume) in grado di controllare il televisore.

Ora, andiamo al lavoro, è in termini di programmazione C ++, C ++ possibiledati di classe astrazione.Loro al mondo esterno fornisce un metodo comune per la gestione di un gran numero di oggetti di dati, che è, in effetti, il mondo esterno non sapevano l'implementazione della classe interna.

Ad esempio, il programma può chiamare la funzionesort (), senza la necessità di conoscere la funzione degli algoritmi utilizzati per ordinare i dati.Infatti, la funzione sottostante della realizzazione del genere dovuto differente repository variare, purché la stessa interfaccia, chiamata di funzione come al solito.

In C ++, usiamo la nostraclasse per definire il tipo di dato astratto (ADT).È possibile utilizzare la classeostream coutoggetto per i dati di output sullo standard output, come segue:

#include <iostream>
using namespace std;

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

Qui, non si capisce come il testocout visualizzato sullo schermo dell'utente.Hai solo bisogno di conoscere l'interfaccia pubblica di, cout implementazione sottostante può essere liberamente modificato.

scheda di accesso obbligatoria astratta

In C ++, si usa la scheda di accesso per definire la classe un'interfaccia astratta. Una classe può contenere zero o più etichette di accesso:

  • Tag definisce l'uso di membri pubblici possono accedere tutte le parti del programma. Vista astratta di un tipo di dato è pubblico dai suoi membri definiti.
  • L'uso di Private Label definito utilizzando i membri della classe non può avere accesso al codice. parte privata del codice utilizzando il tipo di dati da nascondere di implementazione.

tag frequenza di accesso appare non c'è limite. Ogni tag specifica l'accesso seguito da membri dei livelli di accesso definiti. livello di accesso assegnato resterà in vigore fino a quando la scheda incontro Accesso accanto o chiudere il tipo di corpo destra incontrato in parentesi.

Vantaggi astrazione dei dati

astrazione dei dati ha due importanti vantaggi:

  • classe interna è protetta da involontario errore a livello utente causato danni allo stato dell'oggetto.
  • Con l'implementazione della classe possono cambiare nel tempo, al fine di rispondere alle esigenze che cambiano, o soddisfare tali requisiti non modificare il rapporto di errore codice di livello utente.

sezione privata definisce i dati membro della classe, se solo nella preparazione di tali autori possono modificare liberamente i dati. Se le modifiche attuate, è sufficiente controllare il codice per la classe per vedere quale impatto questa modifica potrebbe causare. Se i dati sono pubblici, qualsiasi accesso diretto alla vecchia forma di membri della funzione di rappresentazione dei dati sono suscettibili di essere colpiti.

dati astratta esempio

C ++ programma, qualsiasi classe con i membri del astrazione di dati pubbliche e private può essere utilizzato come esempi. Considerate i seguenti esempi:

#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 il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:

Total 60

La classe al di sopra dei numeri e restituisce la somma. Gli pubblicoaddNum e getTotalè interfaccia esterna, gli utenti hanno bisogno di sapere per poter usare la loro classe. I membri privati utentitotali non hanno bisogno di sapere, ma la classe può lavorare necessario.

design Strategy

Estratto di separare il codice in interfaccia e implementazione. Così nella progettazione di componenti, l'interfaccia deve rimanere indipendente dalla realizzazione, in modo che se si cambia l'implementazione sottostante, l'interfaccia rimarrà invariato.

In questo caso, indipendentemente da qualsiasi programma utilizzando l'interfaccia, l'interfaccia non è applicabile, solo per realizzare l'ultima ricompilazione.