Video: [C++ von { bis }] 14 - Abstrakte Klassen 2025
Som intellektuelt tilfredsstillende som factoring er i C ++, introduserer det et eget problem. I et eksempel om bankkontoklasser, spesielt den vanlige baseklassen Konto. Tenk et øyeblikk om hvordan du kan gå om å definere de forskjellige medlemsfunksjonene som er definert i Konto.
De fleste Konto medlemsfunksjoner er ikke noe problem fordi begge konto typer implementerer dem på samme måte. Implementering av disse fellesfunksjonene med Konto :: tilbaketrekking () er imidlertid forskjellig.
Reglene for å trekke seg fra en sparekonto er forskjellige enn de for å trekke seg fra en kontrollkonto. Du må implementere Savings:: withdrawal () annerledes enn du gjør Kontrollerer:: tilbaketrekking () . Men hvordan skal du implementere Konto:: tilbaketrekking ()?
La oss spørre bankansvarlig for hjelp. Samtalen kan gå noe slikt som følger:
"Hva er reglene for å få uttak fra en konto? " du spør.
"Hvilken type konto? Besparelser eller sjekker? "Kommer svaret.
"Fra en konto," sier du. "Bare en konto. "
Blank utseende.
Problemet er at spørsmålet ikke gir mening. Det er ikke slikt som "bare en konto. "Alle kontoer (i dette eksemplet) er enten sjekker kontoer eller sparekontoer. Konseptet med en konto er en abstrakt som utfordrer egenskaper som er felles for de to konkrete klassene.
Det er ufullstendig fordi det mangler kritisk tilbaketrekning av eiendom () . (Etter at du har kommet nærmere inn i detaljene, kan du finne andre egenskaper som mangler en enkel konto.)
En abstrakt klasse er en som bare finnes i underklasser. En konkret klasse er en klasse som ikke er abstrakt.
