Acasă Finanțe personale Factoring și moștenire în C ++ - manechine

Factoring și moștenire în C ++ - manechine

Video: Building Dynamic Web Apps with Laravel by Eric Ouyang 2024

Video: Building Dynamic Web Apps with Laravel by Eric Ouyang 2024
Anonim

Conceptul de moștenire și deci factoring în C ++ permite unei clase să moștenească proprietățile unei clase de bază. Moștenirea are o serie de scopuri; beneficiul principal al moștenirii este capacitatea de a evidenția relația dintre clase. Aceasta este așa-numita relație IS_A - un cuptor cu microunde Oven IS_A și așa ceva.

Factoringul este un lucru minunat dacă faceți corelațiile corecte. De exemplu, relația cuptor cu microunde față de cuptorul convențional pare naturală. Afirmați că cuptorul cu microunde este un tip special de prăjitor de pâine și că vă îndreptați spre probleme. Adevărat, ambele fac lucruri fierbinți, ambele folosesc energie electrică și ambele găsesc în bucătărie, dar asemănarea se termină acolo - un cuptor cu microunde nu poate face toast și un prăjitor de pâine nu poate face nachos.

Identificarea claselor inerente unei probleme și trasarea relațiilor corecte între aceste clase este un proces cunoscut sub numele de factoring. (Cuvântul este legat de aritmetica pe care ați fost obligată să o faceți în clasa de învățământ: factoring-ul celor mai puțin numitori, de exemplu, 12 este egal cu 2 ori 2 ori 3.)

Iată cum puteți utiliza moștenire pentru a vă simplifica programele folosind un exemplu de cont bancar. Să presupunem că vi sa cerut să scrieți un program bancar simplu care a implementat conceptul de cont de economii și un cont de verificare.

Programatorii orientați spre obiect au venit cu un mod concis pentru a descrie punctele importante ale unei clase într-un desen. Clasele Checking și Savings sunt afișate în această figură. (Aceasta este doar una din mai multe modalități de exprimare grafică a aceluiași lucru.)

Verificarea și Economii. ">

Clase independente Verificarea și Economii.

Pentru a citi această figură și celelalte figuri, rețineți următoarele:

  • Cutia mare este clasa, cu numele clasei din partea de sus.

  • Numele în cutii sunt funcții ale membrilor.

  • Numele care nu sunt în cutii sunt membri de date.

  • Numele care se extind parțial din cutii sunt membri accesibili publicului; adică acești membri pot fi accesați prin funcții care nu fac parte din clasă sau din oricare dintre descendenții acesteia. Membrii care se află complet în cutie nu sunt accesibili din afara clasei.

  • O săgeată groasă reprezintă relația IS_A.

  • O săgeată subțire reprezintă relația HAS_A.

O mașină IS_A Vehicul , dar o mașină HAS_A Motor .

În prima figură puteți vedea că clasele Checking și Savings au multe în comun. De exemplu, ambele clase au funcția de retragere () și depozit ().Deoarece cele două clase nu sunt identice, acestea trebuie să rămână ca clase separate. (Într-o aplicație bancară reală, cele două clase ar fi mult mai diferite decât în ​​acest exemplu). Totuși, ar trebui să existe o modalitate de a evita această repetare.

Ai putea avea una din aceste clase să moștenească de la cealaltă. Economii are mai mulți membri decât Verificați, astfel încât să puteți lăsa Economii să moștenească de la Verificați. Acest aranjament este prezentat în următoarea figură.

Clasa Economii moștenește toți membrii. Clasa este completă cu adăugarea membrului de date noWithdrawals și prin suprimarea retragerii funcției () . Trebuie să ignorați retragerea () deoarece regulile de retragere a banilor dintr-un cont de economii sunt diferite de cele pentru retragerea banilor dintr-un cont de verificare.

Economii implementate ca o subclasă de Verificare. ">

Economii implementate ca o subclasă de Verificare.

Deși permițând Economii să moștenească de la Verificarea este salvarea muncii, nu este complet satisfăcătoare. Principala problemă este că, asemenea greutății enumerate pe permisul de conducere al meu, aceasta reprezintă greșit adevărul. Această relație de moștenire implică faptul că un cont de economii este un tip special de cont de verificare, care nu este.

Astfel de declarații false sunt confuze pentru programator, atât azi, cât și de mâine. Într-o zi, un programator care nu este familiar cu trucurile noastre de programare va trebui să citească și să înțeleagă ce face codul nostru. Înțelegerile înșelătoare sunt dificil de reconciliat și de înțeles.

În plus, astfel de declarații false pot duce la probleme pe drum. Să presupunem, de exemplu, că banca își modifică politicile în ceea ce privește verificarea conturilor. Spuneți că decide să perceapă o taxă de serviciu pentru verificarea conturilor numai dacă soldul minim scade sub valoarea dată în cursul lunii.

O schimbare ca aceasta poate fi ușor de manevrat, cu modificări minime la clasa Verificare. Va trebui să adăugați un nou membru de date la clasa Verificarea pentru a ține evidența soldului minim în timpul lunii. Să ieșim pe un membru și să-l numim minimumBalance.

Dar acum aveți o problemă. Deoarece Economii moștenește de la Verificarea, economiile primesc și acest nou membru de date. Nu are nici un folos pentru acest membru, deoarece soldul minim nu afectează conturile de economii, așa că este doar acolo. Rețineți că fiecare obiect de cont de verificare are acest membru suplimentar minimumBalanță . Un membru suplimentar de date nu poate fi o afacere mare, dar adaugă și mai multă confuzie.

Modificări de acest fel se acumulează. Astăzi este un membru de date suplimentar - mâine este o funcție de membru modificată. În cele din urmă, clasa de conturi de economii poartă o mulțime de bagaje suplimentare care se aplică numai conturilor de verificare.

Acum, banca revine și decide să modifice politica contului de economii. Aceasta necesită modificarea unei anumite funcții în Verificare. Modificările de acest gen din clasa de bază se propagă automat în jos până la subclasa, cu excepția cazului în care funcția este deja suprascrisă în subclasa Economii.

De exemplu, să presupunem că banca decide să dea toasterilor pentru fiecare depozit în contul de verificare. Fără a ști banca (sau programatorii săi), depozitele la conturile de verificare ar duce automat la donații de la toaster. Dacă nu sunteți foarte atent, modificările la Verificarea pot apărea în mod neașteptat în Economii.

Cum poți evita aceste probleme? Afirmând că Verificarea este un caz special de Economii modificări, dar nu ne rezolvă problema. Ceea ce aveți nevoie este o clasă a treia (apelați-l Cont, doar pentru a vă înfrunta) care întruchipează lucrurile care sunt comune între Verificați și Economii, .

Verificarea și Economii pe o clasă comună Cont . ">

Basing Verificarea și Economii pe o clasă comună Account .

Cum construiește un cont nou rezolva problemele? În primul rând, crearea unei noi clase Cont reprezintă o descriere mai exactă a lumii reale (oricare ar fi aceasta). Desigur, există într-adevăr ceva cunoscut ca un cont. Conturile de economii și conturile de verificare sunt cazuri speciale ale acestui concept mai fundamental.

În plus, clasa Economii este izolată de modificările aduse clasei Verificarea (și invers). Dacă banca instituie o modificare fundamentală a tuturor conturilor, puteți modifica Contul, și toate subclasele vor moșteni automat modificarea. Dar dacă banca își modifică politica numai pentru verificarea conturilor, puteți modifica doar clasa de cont Verificare fără a afecta Economii.

Acest proces de culegere a proprietăților comune din clase similare este esența factoringului de clasă .

Factoringul este legitim numai dacă relația de moștenire corespunde realității. Factoring împreună o clasă Mouse și Joystick , deoarece ambele dispozitive de indicare hardware este legitimă. Factoring împreună o clasă Mouse și Display , deoarece ambele fac apeluri de nivel scăzut de sistem de operare nu este.

Factoring și moștenire în C ++ - manechine

Alegerea editorilor

Social Media Design: Twitter Opțiuni imagine - dummy

Social Media Design: Twitter Opțiuni imagine - dummy

Jonglați constrângerile legate de spațiu și modul cel mai bun de a poziționa cele trei imagini separate pe care vi se permite să le utilizați în profilul dvs. Twitter.

Social Media Design: Inspirând exemplele de afaceri pe Facebook - manechine

Social Media Design: Inspirând exemplele de afaceri pe Facebook - manechine

ÎNainte de scufundări în elementele de bază ale proiectării o pagină solidă Facebook, aruncați o privire asupra unor branduri care profită din plin de Facebook cu pagini proprii. Persoanele fizice și organizațiile de la bloggeri la proprietarii de magazine Etsy de la domiciliu la branduri internaționale folosesc Facebook pentru a se conecta cu clienții și fanii existenți, precum și cu potențialul lor ...

Social Media Optimization: Publicarea Tweets automat la profilul dvs. Facebook - dummies

Social Media Optimization: Publicarea Tweets automat la profilul dvs. Facebook - dummies

Lucrurile noi pe care să le postați pe Facebook pot fi o adevărată corvoadă. Din fericire, există un truc pe care îl puteți optimiza pe acest site media social. Dacă puteți atinge postarea încrucișată a conținutului între servicii, vă puteți salva ceva timp. Twitter vă oferă posibilitatea de a vă conecta profilul cu alte servicii. Există, ...

Alegerea editorilor

Cum se verifică performanța sistemului cu AWS - dummies

Cum se verifică performanța sistemului cu AWS - dummies

AWS (Amazon Web Services) metode pentru monitorizarea serviciilor specifice AWS. Cu toate acestea, este posibil să aveți probleme de performanță a sistemului sau probleme de aplicare non-AWS care trebuie abordate, ceea ce înseamnă că aveți instrumente care pot funcționa în afara AWS. Pachetul de grupuri de instrumente de performanță conține un număr de instrumente specifice pentru realizarea acestei sarcini ...

Cum să alegeți serviciile AWS de care aveți nevoie - dummies

Cum să alegeți serviciile AWS de care aveți nevoie - dummies

Amintiți-vă că aveți doar 12 luni de libertate proces în care să se ia decizii privind serviciile AWS (Servicii Amazon Web) pe care să le utilizați în afacerea dvs. Douăsprezece luni pot părea mult timp, dar veți descoperi că se evaporă înaintea ochilor dvs. în timp ce încercați să vă jonglați responsabilitățile zilnice, întâlnirile ...

Probleme de securitate aWS - dummy

Probleme de securitate aWS - dummy

Pentru a utiliza AWS (Amazon Web Services) cale. Administratorii și profesioniștii în domeniul securității se pot răzbuna rapid, încercând să păstreze aceste computere interconectate în siguranță, dar aceasta face parte din descrierea postului. Trebuie să urmați cele mai bune practici în securizarea sistemelor informatice, a datelor pe care le conțin, ...

Alegerea editorilor

Cum se asamblează o Circuit de organe color - dummies

Cum se asamblează o Circuit de organe color - dummies

După ce ați strâns toate materialele de care aveți nevoie construiți un organ de culoare, sunteți gata să asamblați proiectul. Vedeți ce aveți nevoie pentru a construi un circuit de organe color. Veți avea nevoie de următoarele instrumente: Sârma de lipit, de preferință cu setări de 20 și 40 W Solder Utilizați lipire mai groasă pentru firele de tensiune și subțire ...

Construirea unui Circuit Dead-Bug Style - dummies

Construirea unui Circuit Dead-Bug Style - dummies

) Sunt montate cu capul în jos pe placa de circuit imprimat (PC), majoritatea picioarelor lipindu-se în aer! Arata ca multe. . . morți bug-uri! Un alt nume pentru acest tip de construcție este "circuitele de aer", deoarece componentele sunt atașate direct la ...

Aplicarea RFID în lumea reală - dummies

Aplicarea RFID în lumea reală - dummies

Capacitatea de a urmări și de a urmări, de a urmări și de a găsi, peek sunt toate îmbunătățite prin utilizarea RFID. Unii avocați de confidențialitate vă faceți griji că aparatele vor atașa în mod magic etichetele RFID la îmbrăcăminte sau pantofi pe măsură ce vă plimbați prin magazin sau în jurul unui birou, dar acest lucru este foarte puțin probabil. Limitele ...