Hjem Personlig finansiering Factoring og arv i C ++ - dummies

Factoring og arv i C ++ - dummies

Video: How to solve equations of the form ax = b | Linear equations | Algebra I | Khan Academy 2025

Video: How to solve equations of the form ax = b | Linear equations | Algebra I | Khan Academy 2025
Anonim

Begrebet arv og dermed factoring i C ++ gør det muligt for en klasse at arve egenskaberne af en base klasse. Arv har en række formål; Hovedfordelen ved arv er evnen til at påpege forholdet mellem klasser. Dette er det såkaldte IS_A forhold - en MicrowaveOven IS_A Ovn og ting sådan.

Factoring er gode ting, hvis du foretager de korrekte korrelationer. For eksempel virker mikrobølgeovnen mod konventionelle ovneforhold naturligt. Påstå, at mikrobølgeovn er en særlig slags brødrister, og du er på vej til problemer. Det er sandt, at de begge gør tingene varme, de begge bruger elektricitet, og de findes begge i køkkenet, men ligheden slutter der - en mikrobølgeovn kan ikke lave toast, og en brødrister kan ikke lave nachos.

Identifikation af de klasser, der er forbundet med et problem og tegning af de korrekte forhold mellem disse klasser, er en proces, der kaldes factoring. (Ordet er relateret til den aritmetik, som du blev tvunget til at gøre i klasseskolen: factoring ud de mindste fællesbetegnelser, for eksempel er 12 lig med 2 gange 2 gange 3.)

Sådan kan du bruge arv for at forenkle dine programmer ved hjælp af et bankkonto eksempel. Antag at du blev bedt om at skrive et simpelt bankprogram, der implementerede begrebet en opsparingskonto og en checkkonto.

Objektorienterede programmører har fået en kortfattet måde at beskrive de vigtigste punkter i en klasse i en tegning. Klasserne Checking og Savings er vist i denne figur. (Dette er kun en af ​​flere måder til at udtrykke det samme grafisk.)

Kontrollerer og Besparelser. ">

Uafhængige klasser Kontrollerer og Besparelser.

For at læse denne figur og de andre figurer, husk følgende:

  • Den store boks er klassen, med klassenavnet øverst.

  • Navne i bokse er medlemsfunktioner.

  • Navne ikke i felter er data medlemmer.

  • Navne, der strækker sig halvvejs ud af boksene, er offentligt tilgængelige medlemmer; det vil sige, disse medlemmer kan få adgang til funktioner, der ikke er en del af klassen eller nogen af ​​dens efterkommere. De medlemmer, der er helt inde i kassen, er ikke tilgængelige uden for klassen.

  • En tykk pil repræsenterer IS_A-forholdet.

  • En tynd pil repræsenterer HAS_A-forholdet.

En bil IS_A-køretøj , men en bil HAS_A Motor .

Du kan se i den første figur, at Checking og Savings klasserne har meget til fælles. For eksempel har begge klasser en tilbagetrækning () og indbetaling () medlemsfunktion.Fordi de to klasser ikke er identiske, skal de forblive som separate klasser. (I en rigtig bankansøgning ville de to klasser være meget mere anderledes end i dette eksempel.) Der skal stadig være en måde at undgå denne gentagelse.

Du kan have en af ​​disse klasser arve fra den anden. Besparelser har flere medlemmer end Kontrol, , så du kan lade Besparelser arve fra Kontrol. Dette arrangement er vist i denne næste figur.

Klassen Savings arver alle medlemmerne. Klassen er afsluttet med tilføjelsen af ​​datamedlemmet noWithdrawals og ved at overstyre funktionens tilbagetrækning () . Du skal tilsidesætte tilbagetrækning (), fordi reglerne for tilbagetrækning af penge fra en opsparingskonto er forskellige fra dem, der gælder for at hæve penge fra en checkkonto.

Besparelser implementeret som en underklasse af Kontrol. ">

Besparelser implementeret som en underklasse af Kontrol.

Selvom Besparelser arve fra Checking er laborsaving, er det ikke helt tilfredsstillende. Det største problem er, at den som den vægt, der er anført på mit kørekort, forkerte sandheden. Dette arveforhold indebærer, at en opsparingskonto er en særlig type kontokonto, som det ikke er.

Sådanne forkerte oplysninger er forvirrende for programmøren, både dagens og morgendagens. Som en dag er en programmør, der ikke er bekendt med vores programmeringstricks, nødt til at læse og forstå, hvad vores kode gør. Vildledende repræsentationer er vanskelige at forene og forstå.

Desuden kan sådanne vildledninger føre til problemer ned ad vejen. Antag for eksempel, at banken ændrer sine politikker med hensyn til kontrol af konti. Sig det beslutter at opkræve et servicegebyr ved kun at kontrollere konti, hvis minimumsbalancen falder under en given værdi i løbet af måneden.

En ændring som denne kan nemt håndteres med minimale ændringer i klassen Kontrol. Du skal tilføje et nyt data-medlem til klassen Kontrollerer for at holde styr på minimumsbalancen i løbet af måneden. Lad os gå ud på en lem og kalde det minimumBalance.

Men nu har du et problem. Fordi Besparelser arver fra Checking, Savings får også dette nye datamedlem. Det har ingen brug for dette medlem, fordi minimumsbalancen ikke påvirker sparekonti, så det sidder bare der. Husk at hvert kontokontobjekt har dette ekstra minimumBalance medlem. Et ekstra data medlem er muligvis ikke en big deal, men det giver yderligere forvirring.

Ændringer som denne akkumulere. I dag er det et ekstra data medlem - i morgen er det en ændret medlemsfunktion. Til sidst bærer opsparningskontoklassen en masse ekstra bagage, som kun kan bruges til at kontrollere konti.

Nu kommer banken tilbage og beslutter at ændre en politik for opsparingskonto. Dette kræver, at du ændrer nogle funktioner i Kontrol. Ændringer som dette i basisklassen forplanter sig automatisk til underklassen, medmindre funktionen allerede er overskredet i underkategorien Besparelser.

For eksempel, at banken beslutter at give væk brødristere for hver indbetaling til kontokontoen. Uden banken (eller dens programmører) ved det, vil indskud til checkkonti automatisk resultere i brødristerdonationer. Medmindre du er meget forsigtig, kan ændringer i Checking muligvis forekomme i Besparelser.

Hvordan kan du undgå disse problemer? At påstå, at Kontrollerer er et specielt tilfælde af Besparelser ændringer, men løser ikke vores problem. Hvad du har brug for, er en tredje klasse (kald det Konto, kun for grin), der beskriver de ting, der er almindelige mellem Checking og Savings, som vist her.

Kontrollerer og Besparelser på en fælles Konto klasse. ">

Basing Kontrollerer og Besparelser på en almindelig Konto klasse.

Hvordan løser du en ny konto med problemerne? For det første oprettes en ny konto klasse en mere præcis beskrivelse af den virkelige verden (uanset hvad det er). Selvfølgelig er der virkelig noget kendt som en konto. Besparelser konti og kontrol konti er særlige tilfælde af dette mere grundlæggende koncept.

Desuden er klassen Savings isoleret fra ændringer i klassen Kontrollerer (og omvendt). Hvis banken indfører en grundlæggende ændring i alle konti, kan du ændre Konto, , og alle underklasser vil automatisk arve ændringen. Men hvis banken kun ændrer sin politik for at kontrollere konti, kan du kun ændre Kontrol kontoklassen uden at påvirke Besparelser.

Denne proces med at kaste fælles egenskaber fra lignende klasser er essensen af ​​klasse factoring .

Factoring er kun legitim, hvis arveforholdet svarer til virkeligheden. At sammenfatte en klasse Mus og Joystick , fordi de begge er hardware-pegeenheder, er legitime. At sammenkoble en klasse Mus og Skærm , fordi de begge foretager opkald på lavt niveau, er ikke.

Factoring og arv i C ++ - dummies

Valg af editor

10 Transaktioner og funktioner, som de fleste oplysninger konverterer til i QuickBooks Online - dummies

10 Transaktioner og funktioner, som de fleste oplysninger konverterer til i QuickBooks Online - dummies

Følgende listen indeholder detaljer om transaktioner og funktioner, som de fleste data konverterer og sammenlignelige transaktioner og funktioner findes i QuickBooks Online (QBO). I nogle tilfælde findes undtagelser; Du finder specifikke noter i web-ekstraartikel & ldquo; Hvordan QuickBooks Desktop Lister Konverter til QuickBooks Online. & Rdquo; Og for flere oplysninger, besøg QuickBooks ofte stillede spørgsmål, og ldquo; Hvorfor ...

Der producerer betalingsopgørelser i MYOB-dummies

Der producerer betalingsopgørelser i MYOB-dummies

I slutningen af ​​hvert lønningsår (som slutter den 30. juni) kan bruge MYOB til at levere hver medarbejder med et betalingsoversigt. Et betalingsopsamling er et kort dokument, der opsummerer de bruttolønninger, skat og godtgørelser, som medarbejderen har modtaget i løbet af de sidste 12 måneder af ansættelsen. Opsætning af betalingsoversigter Til ...

15 Funktioner, der ikke konverteres og findes ikke i QuickBooks Online

15 Funktioner, der ikke konverteres og findes ikke i QuickBooks Online

Følgende oplysninger viser transaktioner og funktioner, som ikke konverteres fra desktop QuickBooks til QuickBooks Online (QBO) og heller ikke har nogen sammenlignelig funktion i QBO. Selv om en eller flere af disse transaktioner eller funktioner kan være afbrudte afbrydere, skal du huske at for mange af disse funktioner kan du bruge løsninger. Typen af ​​data eller funktional noter ...

Valg af editor

Sådan bruger du FREQUENCY-funktionen i Excel - dummier

Sådan bruger du FREQUENCY-funktionen i Excel - dummier

FREQUENCY-funktionen i Excel tæller værdierne i en array der falder inden for en rækkevidde eller bin. Funktionen bruger følgende syntaks: = FREQUENCY (data_array, bins_array) hvor data_array er det regnearkområde, der indeholder de værdier, du vil tælle, og bins_array er et regnearkområde, der identificerer værdierne eller bakkerne, der ...

Hvordan man bruger målsøgningsfunktionen i Excel 2013 - dummies

Hvordan man bruger målsøgningsfunktionen i Excel 2013 - dummies

, Når du skal analysere , bruger du Excel 2013s målsøgningsfunktion til at finde de indgangsværdier, der er nødvendige for at opnå det ønskede mål. Nogle gange, når du gør hvad-hvis analyse, har du et bestemt udgangspunkt i tankerne, såsom et mål salgsmængde eller vækstprocent. Hvis du vil bruge funktionen Målsøgning placeret på What-If ...

Hvordan man vælger Excel CHOOSE-funktionen i datamodeller - dummier

Hvordan man vælger Excel CHOOSE-funktionen i datamodeller - dummier

Selvom valgmuligheden måske ikke Se nyttige på overfladen, denne funktion kan dramatisk forbedre dine Excel-datamodeller. VÆLG-funktionen returnerer en værdi fra en bestemt liste over værdier baseret på et angivet positionsnummer. Hvis du f.eks. Indtaster formlerne VÆLG (3, "Rød", "Gul", "Grøn", "Blå") i en celle, returnerer Excel ...

Valg af editor

Indlæs en Workflow i SharePoint 2010 - dummies

Indlæs en Workflow i SharePoint 2010 - dummies

Konfigurere dit bibliotek til at bruge en workflow i SharePoint 2010 løser kun en del af problemet. Hvis du ikke har dit bibliotek konfigureret til at kick-off automatisk, skal en person manuelt starte workflowen. Start manuelt en arbejdsgang ved at følge disse trin: Gennemse det element, du vil godkende, klik på rullelisten og vælg Workflows. ...

Bibliotek / Liste Generelle indstillinger Område i SharePoint 2010 - dummies

Bibliotek / Liste Generelle indstillinger Område i SharePoint 2010 - dummies

Bibliotekets generelle indstillinger / listen er blevet udvidet i SharePoint 2010 til at omfatte flere nye indstillinger, herunder validering, kolonne standardværdi (for biblioteker), vurdering, metadata navigation, visningsvisning og formular (for lister). Her er et overblik for at se, hvad du kan gøre med hver af disse muligheder. Generelle indstillinger Konfigurationsindstillinger Indstillingsnavn ...

Importer et regneark som en liste i SharePoint 2010 - dummies

Importer et regneark som en liste i SharePoint 2010 - dummies

Har allerede data i et regneark, som du Vil du være en SharePoint 2010 liste? Du er halvvejs derhen! Før du starter, skal du sørge for at gøre følgende: Rens listen. Sørg for, at din liste ligner et bord uden tomme kolonner eller rækker. Sørg for, at din liste har overskrifter. Alle kolonner skal have en ...