Når du spiser en burrito, synger hver eneste af dine smagsreceptorer af glæde. Hver bid bringer en kombination af forskellige smagstyper ind, såsom salt, sødt, krydret og umami. Hver bid efter det smager lidt anderledes, da en ny samling af ingredienser kombinerer deres smag.

Du har måske læst ingredienserne fra menuen, men du ved ikke præcis, hvordan salsaen bliver lavet. Krydderierne, de bruger på deres grøntsager, kunne være en hemmelig blanding. Du behøver dog ikke kende hver enkelt ingrediens. Det er nok at vide, at det er lækkert.

De ingredienser du kender, som almindelig hvid ris, er beton. De øvrige elementer er abstrakte. Du ved, det er salsa, men hvilken slags? Eller, hvis nogen bare giver dig en burrito ud af ingenting, så er hele burritoen abstrakt.

Abstraktion i det abstrakte

Sammen med arv, er abstraktion et vigtigt begreb i objektorienteret programmering. Teorien er, at hvert objekt skal levere enkle og forudsigelige resultater. Objekter skal også kun dele det, der skal deles.

instagram viewer

Du kan tænke på en burrito som et objekt. Inde i burritoen har du flere andre genstande, som bønner, ris, ost og varm sauce. Bønnerne kan være krydret. Osten kunne være en blanding. Og den varme sauce kan være en kombination af peberfrugter lagret i eddike.

Du behøver ikke at vide, hvordan alle ingredienserne i en burrito blev lavet. Og i tilfælde af hotdogs, vil du sikkert ikke vide det. Det afgørende er, at det ikke falder fra hinanden, når du spiser det, og at det er super velsmagende.

Abstraktion er tæt knyttet til indkapsling

Det er det samme med programmering af objekter. Når du instansierer et objekt (opretter det fra en klasse), er det som at bestille en burrito fra food truck disken. Du har adgang til nogle data, men ikke alle. Du behøver ikke vide, hvordan objektet fungerer, så længe funktionerne returnerer de korrekte data. Her er en burrito i JavaScript/Typescript:

Det angivne sprog: tsx eksisterer ikke'
Kodegenerering mislykkedes!!
'

Du kan leg med denne kode i TypeScript-sandkassen.

I ovenstående eksempel er salsa- og osteingredienserne abstraheret væk. Først er de indkapslet for at skjule de specielle ingredienser. Derefter tilsættes getters for at få adgang til ingredienserne. Men ingredienserne giver kun en abstrakt repræsentation af, hvad de virkelig er.

Abstraktion i betonen

Abstraktion er dog mere end et koncept. Klasser kan også være abstrakte. Det betyder, at de kan definere andre klasser. Men de kan ikke instantieres selv.

Hvorfor klasser nogle gange skal være abstrakte

Forestil dig, at du går på restaurant og sætter dig ned. Tjeneren giver dig en menu. Du åbner den for at finde ud af, at der kun er én ting: mad.

Det er ret abstrakt. Ville du bestille det? Ville du spise det? Det ville du nok ikke. At sige noget er mad er ikke nok. Det skal brydes ned til noget mere konkret.

Hvad med pasta? Nå, det er en mere specifik type mad. Og vi ved, at den sandsynligvis har nudler og sauce. Men der er mange forskellige slags pasta derude, så det er stadig abstrakt.

Hvad er abstrakt og hvad er konkret?

Fettuccine Alfredo er et konkret eksempel på både mad og pasta. Det samme gælder for klasser. Ikke hver klasse bør instansieres. Nogle klasser skal kun definere strukturen af ​​andre klasser.

Her er et eksempel med et abstrakt Mad klasse og et barn Macadamia nødder klasse:

Det angivne sprog: tsx eksisterer ikke'
Kodegenerering mislykkedes!!
'

Her er koden.

Abstrakte klasser fortæller andre klasser, hvordan de skal opføre sig. I eksemplet ovenfor, hvis du skal være en madklasse, skal du have funktioner, der giver adgang til dit navn, smag, beskrivelse og kalorier.

Bemærk, at Macadamia nødder klasse strækker sigMad. Det er at sige det Macadamia nødder accepterer at følge reglerne vedr Mad. Bemærk også, at konstruktøren kalder super. Denne kommando instansierer den overordnede klasse, før konstruktøren instansierer Macadamia nødder.

Hvis du lærer at programmere, kan du have mere sjov med disse programmeringsspil.

Abstraktionspraksis

  • Besøg linket ovenfor og brug sandkassen til at oprette en abstrakt klasse kaldet Suppe.
  • Skab et konkret barn af Suppe klasse, kaldet Korn.
  • Brug console.log for at teste din kode. Hvad sker der, hvis din Korn klasse mangler en af ​​funktionerne defineret i Suppe?

Men hvad er meningen med en klasse, du ikke kan instantiere?

I begyndelsen kan abstrakte klasser virke unødvendige. Du kan jo faktisk ikke bruge dem til at lave et objekt. Og det er ikke sådan, at de overgiver deres funktioner. Funktioner skal omskrives i hver børneklasse.

Der er to hovedårsager til, at du har brug for abstrakte klasser. De holder din kode konsistent, og de sørger for, at andre udviklere også skriver konsistent kode. Du vil ikke altid arbejde alene. Hele holdet skal følge de samme regler. Du kan lære mere af TypeScript-dokumentationen om abstrakte klasser.

Sådan organiserer du din objektorienterede kode med arv

Læs Næste

DelTweetDelE-mail

Relaterede emner

  • Programmering
  • Programmering
  • Objektorienteret programmering

Om forfatteren

Lee Nathan (19 artikler udgivet)

Lee er en fuldtidsnomad og en polymat med mange passioner og interesser. Nogle af disse passioner kredser om produktivitet, personlig udvikling og skrivning.

Mere fra Lee Nathan

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for tekniske tips, anmeldelser, gratis e-bøger og eksklusive tilbud!

Klik her for at abonnere