data abstraction c
najlepšie bezplatné odstránenie vírusov a malwaru
Všetko, čo potrebujete vedieť o abstrakcii v C ++.
V tejto sérii tutoriálov v C ++ sa naučíme všetky hlavné koncepty objektovo orientovaného programovania v C ++, ktoré sú známe ako štyri piliere OOP.
- Abstrakcia
- Zapuzdrenie
- Dedenie
- Polymorfizmus
V tomto tutoriáli preskúmame všetko o abstrakcii údajov v C ++.
=> Kliknutím sem zobrazíte sériu školení Absolute C ++.
Čo sa dozviete:
Čo je to abstrakcia?
Abstrakcia je technika objektovo orientovaného programovania, pomocou ktorej pred používateľom skryjeme podrobnosti implementácie a vystavíme iba požadované rozhranie.
Môžeme si vziať skutočný príklad klimatizácie (AC). Máme diaľkové ovládanie na ovládanie rôznych funkcií striedavého prúdu, ako je spustenie, zastavenie, zvýšenie / zníženie teploty, regulácia vlhkosti atď. Tieto funkcie môžeme ovládať iba pomocou hodín, ale vnútri existuje zložitá logika, ktorá je na vykonávanie týchto funkcií.
Ako koncový používateľ sme však vystavili iba vzdialené rozhranie a nie implementačné podrobnosti všetkých týchto funkcií.
Abstrakcia je jedným zo štyroch pilierov objektovo orientovaného programovania a takmer všetky riešenia OOP sú založené na princípoch abstrakcie, t. J. Oddelení detailov rozhrania a implementácie v programe.
Na vyššie uvedenom diagrame sme zobrazili objekt a jeho obsah ako obrazové znázornenie. Vidíme, že najvnútornejšou vrstvou tohto objektu je jeho základná funkcionalita, po ktorej nasledujú podrobnosti o implementácii.
V OOP nie sú tieto dve vrstvy (aj keď vo väčšine prípadov ide iba o jednu vrstvu) vystavené vonkajšiemu svetu. Vonkajšia vrstva, rozhranie, je vrstva, ktorá je poskytovaná koncovému používateľovi na účely prístupu k funkčnosti objektu.
Výsledkom je, že akékoľvek zmeny vykonané v najvnútornejších vrstvách objektu nie sú pre koncového používateľa zrejmé, pokiaľ rozhranie, ktorému je užívateľ vystavený, zostáva rovnaké.
Implementácia abstrakcie v C ++
C ++ podporuje abstrakciu vo veľkej hĺbke. V C ++ možno aj knižničné funkcie, ktoré používame, považovať za príklad abstrakcie.
Implementáciu abstrakcie v C ++ môžeme reprezentovať nasledovne:
Ako je znázornené na vyššie uvedenom obrázku, môžeme v C ++ implementovať abstrakciu dvoma spôsobmi:
# 1) Používanie tried a špecifikátorov prístupu
Triedu implementovanú v C ++ so špecifikátormi prístupu verejné, súkromné a chránené možno považovať za implementáciu abstrakcie.
Ako už vieme, použitie špecifikátorov prístupu nám umožňuje kontrolovať prístup poskytovaný členom triedy. Niektorých členov môžeme nastaviť ako súkromných, aby boli mimo triedy neprístupní. Niektorých členov môžeme mať chránených, aby boli prístupní iba odvodeným triedam. Na záver môžeme niektorých členov zverejniť, aby boli prístupní aj mimo triedy.
Pomocou tohto poňatia môžeme implementovať abstrakciu takým spôsobom, že podrobnosti implementácie sú skryté pred vonkajším svetom pomocou špecifikátora súkromného prístupu, zatiaľ čo rozhranie môže byť vystavené vonkajšiemu svetu pomocou verejného špecifikátora.
Z tohto dôvodu môžeme implementovať abstrakciu v C ++, pomocou triedy na zoskupenie údajov a funkcií do jednej jednotky a pomocou špecifikátorov prístupu na riadenie prístupu k týmto údajom a funkciám.
Ukážme to v nasledujúcom príklade.
#include #include using namespace std; class sample { int num1,num2; void readNum(){ cout<>num1; cout<>num2; } public: void displaySum() { readNum(); cout<<'
Sum of the two numbers = '< Výkon:
aký je najlepší blokovač vyskakovacích okien pre chróm
Zadajte číslo 1:10
Zadajte číslo 2:20
Súčet dvoch čísel = 30
Vo vyššie uvedenom programe máme ukážkovú triedu, ktorá má dve celočíselné premenné, num1 a num2. Má tiež dve funkcie readNum a displaySum. Dátové členy ‘num1 a num2, ako aj funkcia readNum, sú pre triedu súkromné.
Funkcia displaySum je pre triedu verejná. V hlavnej funkcii vytvoríme objekt vzorky triedy a zavoláme displaySum, ktorý načíta dve čísla a vytlačí ich súčet.
Toto je implementácia abstrakcie. Verejnosti vystavujeme iba jednu funkciu, zatiaľ čo ostatných dátových členov a funkcie udržiavame v utajení. Aj keď je to iba príklad na demonštráciu abstrakcie, pri implementácii problémov v reálnom živote môžeme mať v C ++ mnoho úrovní abstrakcie.
# 2) Používanie implementácie hlavičkových súborov
Na import a použitie preddefinovaných funkcií používame hlavičkové súbory v programe C ++. Za týmto účelom používame na zahrnutie hlavičkových súborov do nášho programu direktívu #include.
Napríklad, vo vyššie uvedenom programe sme použili funkcie cin a cout. Pokiaľ ide o tieto funkcie, vieme iba, ako ich používať a aké sú ich parametre.
Nevieme, čo sa deje na pozadí, keď sa tieto funkcie volajú, ani ako sa implementujú v hlavičkovom súbore iostream. Toto je ďalší spôsob abstrakcie, ktorý poskytuje C ++.
náhodné číslo medzi 0 a 1 c ++
Nepoznáme podrobnosti implementácie všetkých funkcií, ktoré importujeme zo súborov hlavičiek.
Tu je ďalší príklad na demonštráciu abstrakcie.
#include #include using namespace std; class employee{ int empId; string name; double salary,basic,allowances; double calculateSalary(int empId){ salary = basic+allowances; return salary; } public: employee(int empId, string name,double basic,double allowances): empId(empId),name(name),basic(basic),allowances(allowances){ calculateSalary(empId); } void display(){ cout<<'EmpId = '< Výkon:
EmpId = 1 meno = ved
Plat zamestnanca = 18245,4

V tomto príklade sme definovali zamestnanca triedy, ktorý má súkromné podrobnosti ako empId, meno, platové údaje ako základné a príspevky. Definujeme tiež súkromnú funkciu „CalcSalary“, ktorá počíta mzdu pomocou základných a príplatkov.
Máme konštruktor na inicializáciu všetkých údajov pre konkrétny objekt zamestnanca. Funkciu „CalcSalary“ od konštruktora nazývame aj na výpočet platu súčasného zamestnanca.
Ďalej máme funkciu „zobrazenia“, ktorá zobrazuje empId, meno a plat. V hlavnej funkcii vytvoríme objekt zamestnanca triedy a zavoláme funkciu displeja.
Jasne vidíme úroveň abstrakcie, ktorú sme poskytli v tomto programe. Používateľovi sme skryli všetky podrobnosti o zamestnancovi, ako aj funkciu CalcSalary, a to tak, že boli súkromné.
Používateľovi sme vystavili iba jeden funkčný displej, ktorý používateľovi poskytuje všetky informácie o objekte zamestnanca, a súčasne skrýva aj podrobnosti ako súkromné údaje a spôsob výpočtu platu zamestnanca.
Ak tak v budúcnosti urobíme, ak chceme pridať ďalšie podrobnosti a zmeniť spôsob výpočtu platu, nemusíme meniť funkciu zobrazenia. Používateľ nebude o týchto zmenách vedieť.
Výhody abstrakcie
Nižšie sú uvedené niektoré výhody abstrakcie.
- Programátor nemusí písať nízkoúrovňový kód.
- Abstrakcia chráni internú implementáciu pred škodlivým používaním a chybami.
- Abstrakcia môže zabrániť duplikácii kódu, a preto musí programátor vykonávať stále tie isté úlohy.
- Abstrakcia podporuje opätovné použitie kódu a správne klasifikuje dátové členy triedy.
- Programátor môže meniť interné podrobnosti implementácie triedy bez vedomia koncového používateľa, a to bez toho, aby to ovplyvnilo operácie vonkajšej vrstvy.
Záver
Abstrakcia je jedným z najdôležitejších konceptov v OOP a je implementovaná vo veľkej hĺbke v C ++. Pomocou abstrakcie môžeme udržať podrobnosti implementácie programu v utajení a vonkajšiemu svetu vystaviť iba také podrobnosti, ktoré chceme.
Použitím konceptu abstrakcie môžeme navrhnúť abstraktné dátové typy a triedy, ktoré fungujú ako kostra programovacieho riešenia, na ktorého vrchole je postavené celé riešenie. Keď prechádzame témami OOP, dozvieme sa viac o týchto typoch a triedach.
V našich pripravovaných tutoriáloch sa dozvieme o ďalšom pilieri OOP, tj. Zapuzdrenie. Spolu tam tiež zvážime abstrakciu a zapuzdrenie.
=> Celú sériu školení pre C ++ nájdete tu.
Odporúčané čítanie
- Dátové typy C ++
- Zapuzdrenie v C ++
- Top 10 Data Science Tools in 2021 to Eliminate Programming
- Objektovo orientované programovanie v C ++
- Úvod do dátových štruktúr v C ++
- 70+ NAJLEPŠÍCH návodov pre C ++ Naučte sa programovanie v C ++ ZDARMA
- Parametrizácia údajov JMeter pomocou užívateľom definovaných premenných
- 10+ najlepších nástrojov na zber údajov so stratégiami zhromažďovania údajov