data abstraction c
Vše, co potřebujete vědět o abstrakci v C ++.
V této sérii tutoriálů v C ++ se naučíme všechny hlavní koncepty objektově orientovaného programování v C ++, které jsou známé jako čtyři pilíře OOP.
- Abstrakce
- Zapouzdření
- Dědictví
- Polymorfismus
V tomto kurzu prozkoumáme vše o abstrakci dat v C ++.
=> Klikněte sem a získejte Absolute C ++ Training Series.
Co se naučíte:
Co je to abstrakce?
Abstrakce je technika objektově orientovaného programování, pomocí které před uživatelem skryjeme podrobnosti implementace a vystavíme pouze požadované rozhraní.
Můžeme si vzít skutečný příklad klimatizace (AC). Máme dálkové ovládání, abychom mohli ovládat různé funkce střídavého proudu, jako je spuštění, zastavení, zvýšení / snížení teploty, regulace vlhkosti atd. Tyto funkce můžeme ovládat pouze pomocí hodin tlačítka, ale interně existuje složitá logika, která je k provádění těchto funkcí.
Jako koncový uživatel jsme však vystavili pouze vzdálené rozhraní a ne podrobnosti implementace všech těchto funkcí.
Abstrakce je jedním ze čtyř pilířů objektově orientovaného programování a téměř všechna řešení OOP jsou založena na principech abstrakce, tj. Oddělení rozhraní a podrobností implementace v programu.
Ve výše uvedeném diagramu jsme ukázali objekt a jeho obsah jako obrazovou reprezentaci. Vidíme, že nejvnitřnější vrstvou tohoto objektu je jeho základní funkce následovaná podrobnostmi implementace.
V OOP nejsou tyto dvě vrstvy (i když ve většině případů je to jen jedna vrstva) vystaveny vnějšímu světu. Nejvzdálenější vrstva, rozhraní, je vrstva, která je poskytována koncovému uživateli za účelem přístupu k funkcím objektu.
Výsledkem je, že jakékoli změny provedené v nejvnitřnějších vrstvách objektu nejsou pro koncového uživatele zřejmé, pokud rozhraní, kterému je uživatel vystaven, zůstává stejné.
Implementace abstrakce v C ++
C ++ podporuje abstrakci ve velké hloubce. V C ++ lze dokonce i funkce knihovny, které používáme, považovat za příklad abstrakce.
Implementaci abstrakce v C ++ můžeme představit takto:
Jak je znázorněno na výše uvedeném obrázku, můžeme v C ++ implementovat abstrakci dvěma způsoby:
# 1) Používání tříd a specifikátorů přístupu
Třídu implementovanou v C ++ s přístupovými specifikátory veřejné, soukromé a chráněné, lze považovat za implementaci abstrakce.
bezplatný zálohovací software pro Windows 7
Jak již víme, použití specifikátorů přístupu nám umožňuje řídit přístup poskytovaný členům třídy. Některé členy můžeme označit jako soukromé, aby byli mimo třídu nepřístupné. Některé členy můžeme mít chráněné, aby byly přístupné pouze odvozeným třídám. Nakonec můžeme některé členy zveřejnit, aby byli přístupní mimo třídu.
Pomocí této představy můžeme implementovat abstrakci takovým způsobem, že podrobnosti implementace jsou skryty před vnějším světem pomocí specifikátoru soukromého přístupu, zatímco rozhraní může být vystaveno vnějšímu světu pomocí veřejného specifikátoru.
Z tohoto důvodu můžeme implementovat abstrakci v C ++, pomocí třídy k seskupení dat a funkcí do jedné jednotky a pomocí specifikátorů přístupu k řízení přístupu k těmto datům a funkcím.
Ukážeme to na následujícím příkladu.
#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ýstup:
Zadejte číslo 1: 10
Zadejte číslo 2:20
Součet dvou čísel = 30
Ve výše uvedeném programu máme ukázkovou třídu, která má dvě celočíselné proměnné, num1 a num2. Má také dvě funkce readNum a displaySum. Datové členy 'num1 a num2, stejně jako funkce readNum, jsou pro třídu soukromé.
Funkce displaySum je pro třídu veřejná. V hlavní funkci vytvoříme objekt třídy sample a zavoláme displaySum, který přečte dvě čísla a vytiskne jejich součet.
Toto je implementace abstrakce. Veřejnosti vystavujeme pouze jednu funkci, zatímco ostatní datové členy a funkce udržujeme pod zalomením. I když je to jen příklad k prokázání abstrakce, při implementaci problémů v reálném životě můžeme mít v C ++ mnoho úrovní abstrakce.
# 2) Použití implementace souboru záhlaví
K importu a používání předdefinovaných funkcí používáme hlavičkové soubory v programu C ++. K tomu používáme direktivu #include k zahrnutí hlavičkových souborů do našeho programu.
Například, ve výše uvedeném programu jsme použili funkce cin a cout. Pokud jde o tyto funkce, víme pouze, jak je používat a jaké jsou jejich parametry.
Nevíme, co se děje na pozadí, když jsou tyto funkce volány, ani jak jsou implementovány v záhlaví souboru iostream. Toto je další způsob abstrakce poskytovaný C ++.
Neznáme podrobnosti implementace všech funkcí, které importujeme ze souborů záhlaví.
Zde je další příklad k prokázání abstrakce.
#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ýstup:
EmpId = 1 Jméno = Ved
Plat zaměstnance = 18245,4
V tomto příkladu jsme definovali zaměstnance třídy, který má soukromé podrobnosti, jako je empId, jméno, podrobnosti o platu, jako jsou základní a příspěvky. Rovněž definujeme soukromou funkci „CalcSalary“, která vypočítává plat pomocí základního a příspěvků.
Máme konstruktor, který inicializuje všechna data pro konkrétní objekt zaměstnance. Voláme také funkci „CalcSalary“ od konstruktoru pro výpočet platu aktuálního zaměstnance.
Dále máme funkci „zobrazení“, která zobrazuje empId, jméno a plat. V hlavní funkci vytvoříme objekt zaměstnance třídy a zavoláme funkci zobrazení.
Můžeme jasně vidět úroveň abstrakce, kterou jsme poskytli v tomto programu. Skryli jsme všechny podrobnosti o zaměstnancích i funkci CalculateSalary pro uživatele tím, že je nastavíme jako soukromé.
Uživateli jsme vystavili pouze jeden funkční displej, který uživateli poskytuje všechny informace o objektu zaměstnance, a zároveň skrývá podrobnosti, jako jsou soukromá data a způsob výpočtu platu zaměstnance.
Tím, že v budoucnu budeme chtít přidat další podrobnosti a změnit způsob výpočtu platu, nebudeme muset měnit funkci zobrazení. Uživatel nebude o těchto změnách vědět.
Výhody abstrakce
Níže jsou uvedeny některé výhody abstrakce.
- Programátor nemusí psát nízkoúrovňový kód.
- Abstrakce chrání interní implementaci před škodlivým použitím a chybami.
- Abstrakce může zabránit duplikaci kódu, a proto musí programátor provádět stejné úkoly znovu a znovu.
- Abstrakce podporuje opětovné použití kódu a správně klasifikuje datové členy třídy.
- Programátor může změnit vnitřní podrobnosti implementace třídy bez vědomí koncového uživatele, aniž by to ovlivnilo operace vnější vrstvy.
Závěr
Abstrakce je jedním z nejdůležitějších konceptů v OOP a je implementována ve velké hloubce v C ++. Pomocí abstrakce můžeme udržovat detaily implementace programu v utajení a pouze ty detaily, které chceme, vystavíme vnějšímu světu.
Pomocí konceptu abstrakce můžeme navrhnout abstraktní datové typy a třídy, které fungují jako kostra programovacího řešení, na jehož vrcholu je celé řešení postaveno. Jak procházíme tématy OOP, dozvíme se více o těchto typech a třídách.
V našich připravovaných tutoriálech se dozvíme o dalším pilíři OOP, tj. Zapouzdření. Budeme tam také vážit abstrakci a zapouzdření.
=> Podívejte se na celou sérii školení C ++ zde.
Doporučené čtení
- Datové typy C ++
- Zapouzdření v C ++
- Top 10 Data Science Tools in 2021 to Eliminate Programming
- Objektově orientované programování v C ++
- Úvod do datových struktur v C ++
- 70+ NEJLEPŠÍCH C ++ návodů, jak se naučit programování v C ++ ZDARMA
- Parametrizace dat JMeter pomocí uživatelem definovaných proměnných
- 10+ nejlepších nástrojů pro sběr dat se strategiemi sběru dat