Non spaventarti con le parole: l'astrazione è il processo di rimozione di ogni aspetto del problema che non è utile per risolverlo.
-Perché puoi concentrarti solo su ciò che conta-
L'astrazione è così ampiamente utilizzata perché esiste un numero di "schemi" in programmazione che continua a ripetersi in ogni applicazione. Trova il modello corrispondente al tuo problema, trova la soluzione astratta, implementalo e il gioco è fatto.
Ancora meglio: la maggior parte (? Tutti?) Delle linguaggi di codifica fornisce alcuni schemi astratti incorporati, che sono più facili da usare. Alcune API forniscono anche schemi più avanzati.
L'astrazione sta rimuovendo, così puoi raggiungere diversi livelli di astrazione rimuovendo più o meno aspetti del tuo problema. Ma se rimuovi troppi elementi, non dirai nulla sul nulla (expl: A=sort(A)
non risolverà molti problemi ..).
D'altra parte, se mantieni troppi dettagli potresti non vedere ciò che è rilevante per risolvere il problema.
Equilibrio.
Consideriamo il problema dell'ordinamento: non è rilevante quale tipo di oggetto si desidera utilizzare, né il tipo di spazio di archiviazione che si sta utilizzando per tali oggetti. (E non sia la piattaforma o il linguaggio di programmazione che stai usando).
Ordinamento tutto si riduce a:
- avere una collezione di oggetti in cui è possibile iterare.
- avere un modo per confrontare due elementi.
Quindi lo scopo del tipo è di avere ogni due articoli successivi correttamente ordinati.
Ora puoi pensare a bubble sort / quick sort / ... per ogni tipo di raccolta iterabile di oggetti comparabili.
Risolvi il problema una sola volta e usalo ogni volta che incontri questo problema, non importa se stai usando una lista, un array, uno stack .... per memorizzare date, o oggetti grafici, o ...: il l'algoritmo astratto sarà lo stesso.
Javascript, ad esempio, come Collection incorporato chiamato Array
(è in effetti un array dinamico che può essere sparse), che ha un metodo sort
. L'unica cosa che devi fare per ordinare l'array è di fornire la funzione di confronto al metodo di ordinamento -Grande! -.
piccolo esempio:
// let's define a collection of information about travels.
var travels = [ travel1, travel2, travel3, ... ] ;
// sort the travels on their start date
// : just provide the right comparison function to the sort method.
travels.sort( function ( t1, t2 ) { return t1.startDate - t2.startDate } );
==> done !
Rq: l'astrazione viene utilizzata per l'algoritmo, ma anche per la progettazione generale del software: ecco di cosa si tratta con gli schemi di progettazione.
Solo un piccolo esempio: immagina di avere un oggetto molto costoso da creare che potresti anche non usare, cosa puoi fare?
(vedi che questa domanda è molto 'astratta' non ci sono dettagli inutili sul tipo di oggetto, la risorsa usata, ..., c'è solo lo scheletro del problema).
La risposta è - > > > usa il modello di inizializzazione pigro: non creare l'oggetto finché non viene effettivamente richiesto dall'applicazione.
class SomeClass {
public get someHeavyObject {
// create object if it was not created already
if (_someHeavyObject == null) _someHeavyObject = new SomeHeavyObject();
// return the object
return _someHeavyObject;
}
private _someHeavyObject = null;
}
(altro sui modelli di design qui link )
Un altro grande vantaggio dell'astrazione è che quando cerchi aiuto, che si tratti di forum o di un compagno, non tutti vorranno ascoltare / leggere la descrizione di 30 minuti di ciò che stai costruendo.
Se vai dritto al punto estraendo il problema, aumenti notevolmente le tue possibilità di essere compreso e di ottenere la tua risposta.
Vincerai molto tempo riutilizzando i giusti tipi / algoritmi / schemi di dati astratti, quindi non esitare a indagare.