Quando mangi un burrito, ognuno dei tuoi recettori del gusto canta di gioia. Ogni boccone porta in una combinazione di diversi tipi di sapore, come salato, dolce, piccante e umami. Ogni boccone successivo ha un sapore leggermente diverso poiché una nuova raccolta di ingredienti unisce i loro sapori.

Potresti aver letto gli ingredienti dal menu, ma non sai esattamente come viene fatta la salsa. Il condimento che usano sulle loro verdure potrebbe essere una miscela segreta. Tuttavia, non è necessario conoscere ogni ingrediente esatto. Basta sapere che è delizioso.

Gli ingredienti che conosci, come il semplice riso bianco, sono concreti. Gli altri elementi sono astratti. Sai che è salsa, ma di che tipo? Oppure, se qualcuno ti porge un burrito dal nulla, l'intero burrito è astratto.

Astrazione nell'astratto

Insieme all'eredità, l'astrazione è un concetto importante nella programmazione orientata agli oggetti. La teoria è che ogni oggetto dovrebbe fornire risultati semplici e prevedibili. Gli oggetti dovrebbero anche condividere solo ciò che deve essere condiviso.

instagram viewer

Puoi pensare a un burrito come a un oggetto. All'interno del burrito ci sono molti altri oggetti, come fagioli, riso, formaggio e salsa piccante. I fagioli potrebbero essere stati conditi. Il formaggio potrebbe essere una miscela. E la salsa piccante potrebbe essere una combinazione di peperoni invecchiati nell'aceto.

Non è necessario sapere come sono stati fatti tutti gli ingredienti in un burrito. E nel caso degli hot dog, probabilmente non vuoi saperlo. Tutto ciò che conta è che non si sfaldi quando lo mangi e che sia super gustoso.

L'astrazione è strettamente legata all'incapsulamento

È la stessa cosa con la programmazione degli oggetti. Quando crei un'istanza di un oggetto (lo crei da una classe), è come ordinare un burrito dal bancone del food truck. Hai accesso ad alcuni dati, ma non a tutti. Non è necessario sapere come funziona l'oggetto, purché le funzioni restituiscano i dati corretti. Ecco un burrito in JavaScript/Typescript:

La lingua specificata: tsx non esiste'
Generazione del codice fallita!!
'

Puoi gioca con questo codice nella sandbox di TypeScript.

Nell'esempio sopra, gli ingredienti della salsa e del formaggio vengono astratti. In primo luogo, sono incapsulati, per nascondere gli ingredienti speciali. Quindi vengono aggiunti i getter per accedere agli ingredienti. Ma gli ingredienti restituiscono solo una rappresentazione astratta di ciò che sono realmente.

L'astrazione nel cemento

L'astrazione è più di un concetto, però. Le lezioni possono anche essere astratte. Ciò significa che possono definire altre classi. Ma non possono essere istanziati da soli.

Perché le lezioni a volte dovrebbero essere astratte

Immagina di andare in un ristorante e di sederti. Il cameriere ti porge un menu. Lo apri e scopri che c'è solo un oggetto: il cibo.

È piuttosto astratto. Lo ordineresti? Lo mangeresti? Probabilmente non lo faresti. Dire che qualcosa è cibo non basta. Ha bisogno di scomporsi in qualcosa di più concreto.

E la pasta? Bene, questo è un tipo più specifico di cibo. E sappiamo che probabilmente ha tagliatelle e salsa. Ma ci sono molti tipi diversi di pasta là fuori, quindi è ancora astratto.

Cos'è l'astratto e cos'è il concreto?

Le Fettuccine Alfredo sono un esempio concreto sia di cibo che di pasta. La stessa cosa vale per le classi. Non tutte le classi devono essere istanziate. Alcune classi dovrebbero solo definire la struttura di altre classi.

Ecco un esempio con un abstract Cibo classe e un bambino Noci di macadamia classe:

La lingua specificata: tsx non esiste'
Generazione del codice fallita!!
'

Ecco il codice.

Le classi astratte dicono alle altre classi come dovrebbero comportarsi. Nell'esempio sopra, se parteciperai a una lezione di cibo, devi disporre di funzioni che consentano l'accesso al tuo nome, sapore, descrizione e calorie.

Si noti che il Noci di macadamia classe si estendeCibo. Questo sta dicendo Noci di macadamia si impegna a seguire le regole di Cibo. Inoltre, nota che il costruttore chiama super. Quel comando istanzia la classe padre prima che il costruttore crei un'istanza Noci di macadamia.

Se stai imparando a programmare, puoi farlo divertiti di più con questi giochi di programmazione.

Pratica di astrazione

  • Visita il link sopra e usa la sandbox per creare una classe astratta chiamata La minestra.
  • Crea un figlio concreto del La minestra classe, chiamato Cereale.
  • Utilizzo console.log per testare il tuo codice. Cosa succede se il tuo Cereale alla classe manca una delle funzioni definite in La minestra?

Ma qual è il punto di una classe che non puoi istanziare?

All'inizio, le classi astratte possono sembrare non necessarie. Dopotutto, non puoi effettivamente usarli per creare un oggetto. E non è che trasmettano le loro funzioni. Le funzioni devono essere riscritte in ogni classe figlio.

Ci sono due ragioni principali per cui hai bisogno di classi astratte. Mantengono il tuo codice coerente e si assicurano che anche altri sviluppatori scrivano codice coerente. Non lavorerai sempre da solo. Tutta la squadra deve seguire le stesse regole. Puoi imparare di più da la documentazione di TypeScript sulle classi astratte.

Come organizzare il tuo codice orientato agli oggetti con l'ereditarietà

Leggi Avanti

CondividereTwittaCondividereE-mail

Argomenti correlati

  • Programmazione
  • Programmazione
  • Programmazione orientata agli oggetti

Circa l'autore

Lee Nathan (19 articoli pubblicati)

Lee è un nomade a tempo pieno e un poliedrico con molte passioni e interessi. Alcune di queste passioni ruotano attorno alla produttività, allo sviluppo personale e alla scrittura.

Altro da Lee Nathan

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!

Clicca qui per iscriverti