data abstraction c
Све што треба да знате о апстракцији на језику Ц ++.
У овој Ц ++ серији водича научићемо све главне концепте објектно оријентисаног програмирања на Ц ++-у који су познати као четири стуба ООП-а.
- Одвајање
- Капсулација
- Наслеђивање
- Полиморфизам
У овом упутству ћемо истражити све о апстракцији података у језику Ц ++.
како могу да репродукујем мкв датотеке
=> Кликните овде за апсолутну Ц ++ серију тренинга.
Шта ћете научити:
Шта је апстракција?
Апстракција је техника објектно оријентисаног програмирања помоћу које скривамо детаље имплементације од корисника и излажемо само потребан интерфејс.
Можемо узети стварни пример клима уређаја (АЦ). Имамо даљински управљач за управљање разним АЦ функцијама попут покретања, заустављања, повећања / смањења температуре, контроле влажности итд. Овим функцијама можемо управљати само притиском на тастер, али интерно постоји сложена логика која је имплементиран за обављање ових функција.
Међутим, као крајњем кориснику, оно чему смо били изложени је само удаљени интерфејс, а не и детаљи о имплементацији свих ових функција.
Апстракција је један од четири стуба објектно оријентисаног програмирања и готово сва ООП решења заснивају се на принципима апстракције, односно раздвајању детаља интерфејса и имплементације у програму.
У горњем дијаграму приказали смо предмет и његов садржај као сликовни приказ. Видимо да је најунутарњији слој овог објекта његова основна функционалност праћена детаљима имплементације.
У ООП-у ова два слоја (иако је у већини случајева ово само један слој) нису изложени спољном свету. Најудаљенији слој, интерфејс, је слој који је предвиђен за крајњег корисника како би приступио функционалности објекта.
Као резултат тога, све промене извршене на најдубљим слојевима објекта нису видљиве крајњем кориснику све док интерфејс којем је корисник изложен остаје исти.
Примена апстракције у Ц ++
Ц ++ подржава апстракцију на великој дубини. У Ц ++-у се чак и функције библиотеке које користимо могу сматрати примером апстракције.
Имплементацију апстракције у Ц ++ можемо представити на следећи начин:
Као што је приказано на горњој слици, апстракцију у Ц ++ можемо применити на два начина:
# 1) Коришћење класа и спецификација приступа
Класа имплементирана у Ц ++ са приступним спецификаторима јавни, приватни и заштићени може се сматрати имплементацијом апстракције.
Као што већ знамо, употреба спецификатора приступа омогућава нам контролу приступа који се даје члановима класе. Неке чланове можемо учинити приватнима како би били неприступачни изван разреда. Неке чланове можемо заштитити тако да буду доступни само изведеним класама. И на крају, неке чланове можемо учинити јавним како би ти чланови били доступни изван разреда.
Користећи овај појам, апстракцију можемо имплементирати на такав начин да су детаљи имплементације скривени од спољног света коришћењем приватног спецификатора приступа, док интерфејс може бити изложен спољном свету помоћу јавног спецификатора.
Стога апстракцију можемо применити у Ц ++-у, користећи класу за спајање података и функција у једну целину, а помоћу спецификација приступа за контролу приступа тим подацима и функцијама.
Применимо следећи Пример да то покажемо.
#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 = '< Излаз:
Унесите број1: 10
Унесите број2: 20
питања и одговори за подршку службе за помоћ
Збир два броја = 30
У горњем програму имамо класу узорака која има две целобројне променљиве, нум1 и нум2. Такође има две функције реадНум и дисплаиСум. Нум1 и нум2 чланова података, као и функција реадНум, приватни су за класу.
Функција дисплаиСум је јавна за класу. У главној функцији креирамо објекат класе сампле и позивамо дисплаиСум који чита два броја као и исписује њихов збир.
Ово је примена апстракције. Јавности излажемо само једну функцију, док остале чланове података и функције држимо у тајности. Иако је ово само пример за демонстрирање апстракције, док имплементирамо проблеме из стварног живота, у Ц ++ можемо имати много нивоа апстракције.
# 2) Коришћење имплементације заглавних датотека
Датотеке заглавља у програму Ц ++ користимо за увоз и употребу предефинисаних функција. За то користимо директиву #инцлуде да бисмо укључили датотеке заглавља у наш програм.
На пример, у горе наведеном програму користили смо функције цин и цоут. Што се тиче ових функција, ми знамо само како их користити и који су параметри које узимају.
Не знамо шта се дешава у позадини када се позивају ове функције нити како се оне примењују у заглавној датотеци иостреам. Ово је још један начин апстракције који пружа Ц ++.
Не знамо детаље имплементације свих функција које увозимо из заглавних датотека.
Ево још једног примера за демонстрацију апстракције.
#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 = '< Излаз:
ЕмпИд = 1 Име = Вед
Плата запослених = 18245,4
бесплатни софтвер часовника за рачунаре

У овом примеру смо дефинисали запосленог у класи који има приватне детаље као што су запослени, име, детаљи о плати као основни и додаци. Такође дефинишемо приватну функцију „израчунај плату“ која израчунава зараду користећи основне и додатке.
Имамо конструктор за иницијализацију свих података за одређени објекат запосленог. Такође, од конструктора називамо функцију 'ЦалцуСалари' за израчунавање зараде тренутног запосленог.
Даље, имамо функцију „приказ“ која приказује празно, име и плату. У главној функцији креирамо објекат службеника класе и позивамо функцију приказа.
Јасно можемо видети ниво апстракције који смо пружили у овом програму. Сакрили смо све детаље о запосленом као и функцију израчун зараде од корисника чинећи их приватним.
Кориснику смо изложили само један приказ функције који кориснику даје све информације о објекту запосленика, а истовремено скрива и детаље попут приватних података и начина на који израчунавамо плату запосленог.
Радећи ово, у будућности, ако желимо да додамо више детаља и променимо начин на који се обрачунава зарада, не морамо да мењамо функцију приказа. Корисник неће бити свестан ових промена.
Предности апстракције
У наставку су наведене неке од предности апстракције.
- Програмер не мора писати код ниског нивоа.
- Апстракција штити интерну имплементацију од злонамерне употребе и грешака.
- Апстракција може спречити дуплирање кода и зато програмер мора изнова изводити исте задатке.
- Апстракција промовише поновну употребу кода и правилно класификује чланове података класе.
- Програмер може променити унутрашње детаље имплементације класе без знања крајњег корисника, а тиме без утицаја на операције спољног слоја.
Закључак
Апстракција је један од најважнијих концепата у ООП-у и примењује се на великој дубини у Ц ++. Користећи апстракцију, детаље о примени програма можемо држати у тајности, а детаље које желимо изложити само спољном свету.
Користећи концепт апстракције, можемо дизајнирати апстрактне типове података и класе који делују као костур програмског решења на врху којег је изграђено цело решење. Како напредујемо кроз ООП теме, научићемо више о овим врстама и часовима.
У нашим предстојећим водичима сазнаћемо о другом стубу ООП-а, тј. Капсулирању. Тамо ћемо заједно одмерити и апстракцију и инкапсулацију.
=> Овде потражите целу серију обука за Ц ++.
Препоручено читање
- Типови података Ц ++
- Инкапсулација у Ц ++
- 10 најбољих алата за науку о подацима у 2021. години за уклањање програмирања
- Објектно оријентисано програмирање на језику Ц ++
- Увод у структуре података на језику Ц ++
- 70+ НАЈБОЉИХ Водича за Ц ++ за БЕСПЛАТНО учење Ц ++ програмирања
- ЈМетер параметризација података коришћењем кориснички дефинисаних променљивих
- 10+ најбољих алата за прикупљање података са стратегијама прикупљања података