КампутарыПраграмнае забеспячэнне

Абстрактны клас і метад: апісанне, характарыстыкі і асаблівасці. Чым адрозніваецца абстрактны клас ад інтэрфейсу

Кожны, хто мае хоць мінімальныя веды ў праграмаванні, задавалася пытаннем аб тым, навошта існуюць абстрактныя базавыя класы. Якое іх прызначэнне? Як стварыць абстрактны клас? Якія перавагі яны даюць на практыцы? Навошта яны неабходныя ў праграмаванні і якія асаблівасці іх рэалізацыі неабходна ўлічваць?

абстрактныя класы

Так у праграмаванні называюць адзінку праграмнага кода, на аснове якой не могуць стварацца аб'екты. Варта адзначыць, што спадчыннікі дадзенага класа могуць быць не абстрактнымі. Таму стварэнне аб'ектаў на іх аснове з'яўляецца цалкам магчымым. Калі разглядаць прыклад з Java, то пабудуем такую мадэль: мы можам апісаць канструктары ў класе А. Але вось скарыстацца імі мы не зможам. Выхадам з гэтай сітуацыі з'яўляецца аб'яву нейкі зменнай як спасылкі. Прычым неабходна дакладна прапісаць, каб яна паказвала на аб'ект класа А. А вось як гэта можна зрабіць? У гэтым нам дапаможа прывядзенне. Пры гэтым неабходна ўлічваць, што клас-бацька заўсёды лічыцца больш універсальным, чым нашчадак. У многіх мовах праграмавання прывядзенне выкарыстоўваецца аўтаматычна. Але калі няма ўпэўненасці ў наяўнасці такога механізму, значыць, неабходна відавочна паказаць спасылку на аб'ект.

абстрактныя метады

Што яны сабой уяўляюць? Абстрактнымі называюць тыя метады, якія не маюць рэалізацыі ў разгляданым класе. Так, пасля круглых дужак (у якіх пералічваюцца выкарыстоўваюцца ў іх аргументы) ставяць не адкрываюць фігурныя (пасля чаго размяшчаецца блок апісання метаду), а толькі кропку з коскі. Такім чынам, у дадзеным выпадку адсутнічае інфармацыя аб тым, што ён робіць. Тут можна задаць пытанне: "А навошта метад без рэалізацыі?" Бо ён не падлягае выкарыстанню! Вядома, у тым класе, дзе ён быў апісаны, такое не з'яўляецца магчымым. А вось калі разглядаць гэтую сітуацыю з пункту гледжання нашчадка, то яго можна будзе выклікаць. І функцыянаваць ён будзе па канкрэтным апісанні, наяўнаму ў дадзеным класе.

Асаблівасці абстрактных метадаў

Існуюць абмежаванні ў іх выкарыстанні. Разгледзім гэта на прыкладзе мовы праграмавання Java. Тут ёсць такое патрабаванне: калі ў класе ёсць хоць бы адзін такі метад, то ён абавязкова павінен быць абстрактным. А ў якіх выпадках дарэчы выкарыстоўваць такія канструкцыі? Давайце разбяромся з гэтым на прыкладзе класаў хатніх жывёл. Для пачатку варта ўсвядоміць, што няма такога гуку, які б выдавалі яны ўсё. Таму ў самым агульным класе ня задаецца рэалізацыя метаду гучання. Але для яго ствараецца цела, якое адасоблена з дапамогай блокаў. А ўжо ў наступным, калі будзе стварацца клас сабакі, ката ці хамячка, будзе прапісвацца асобны метад для яго, у рамках якога будуць раскрывацца ўсе асаблівасці.

інтэрфейс

У праграмаванні створана шмат інструментаў, мэта якіх - дапамагчы чалавеку зрабіць прадукт добрага якасці. І ў рамках разгляданай тэмы неабходна надаць увагу і гэтаму аспекту, каб кожны ведаў адрозненне абстрактнага класа ад інтэрфейсу. Так, асаблівасцю апошняга з'яўляецца тое, што ў яго не можа быць уласцівасцяў, і ў метадаў не вызначаны цела. Даследуючы, чым адрозніваецца абстрактны клас ад інтэрфейсу, варта спыніцца яшчэ на адной асаблівасці. Так, першы успадкоўваецца, тады як другі - рэалізуецца. Чалавеку неспрактыкаванаму можа здацца гэта неістотным. Але справа ў тым, што спадчыну можа толькі адзін клас, а рэалізоўвацца - колькі заўгодна. Вось чым адрозніваецца інтэрфейс ад абстрактнага класа. Java мае яшчэ тыя асаблівасці, што ў ім могуць быць апісаны выключна абстрактныя публічныя метады і статычныя канстанты. Але пры гэтым інтэрфейсы таксама могуць перадаваць у спадчыну. Пры гэтым неабходна паказваць, што выкарыстоўваюцца аператары публічныя з дапамогай public.

Множны ўспадкоўванне інтэрфейсаў

Такая функцыя не з'яўляецца даступнай для класаў у многіх мовах праграмавання (напрыклад, у разгляданым намі Java). Гэта звязана з узнікненнем шэрагу праблем. У якасці такіх паказваюць на неадназначнасці, якія ўзнікаюць пры атрыманні ў спадчыну. Гэта і паслужыла прычынай увядзення множнага спадчыну інтэрфейсаў. Гэта часткова вырашае наяўныя праблемы, але не ўсе. Так, дзякуючы прынцыпам інкапсуляцыі і палімарфізму, інтэрфейсы могуць быць паспяхова рэалізаваны ў розных класах па розных методыках (хоць яны і будуць валодаць адным і тым жа імем). Але не варта забываць і аб існуючых праблемах. Так, пры працы з некалькімі інтэрфейсамі прыйдзецца заўсёды паказваць, каго ж мы маем на ўвазе. Таксама праблемы будуць і пры спробе працаваць з двума аднайменнымі метадамі - у такім выпадку імі немагчыма будзе скарыстацца. Таму на такія выпадкі неабходна паклапаціцца аб наяўнасці агульнай рэалізацыі.

абстрактныя дадзеныя

Гэта паняцце ключавое ў праграмаванні. У дадзеным выпадку пад абстракцыяй разумеюць незалежнае разгляд і падзел інтэрфейсу і яго рэалізацыі. Давайце разгледзім прыклад. У нас ёсць тэлевізар, які з'яўляецца аб'ектам або модулем. Ён валодае інтэрфейсам. У якасці такога выступаюць сродкі кіравання ім, а таксама прайгравання гуку і выявы. Чым больш дасканалы інтэрфейс прымяняецца, тым зручней тэлевізар у працэсе выкарыстання. Мы можам перамыкаць праграмы, націскаючы на нейкія кнопкі. Пры гэтым няма патрэбы думаць пра фізічныя працэсы ў тэлевізары. Пра іх клапоцяцца спецыялісты, якія збіраюць прылада. Нас як карыстальнікаў цікавяць толькі ўласцівасці. Вяртаючыся да праграмавання, можна сказаць, што імі па такой аналогіі з'яўляюцца інтэрфейс і рэалізацыя. Таксама, калі чалавек упэўнены ў сваіх ведах, то ён можа «зняць» крышку ў нашага гіпатэтычнага тэлевізара і ўдасканаліць яго. Хоць гэта можа прыводзіць да лакальных поспехам, у большасці выпадкаў канчатковы вынік негатыўны. Таму ў праграмаванні падтрымліваецца забарона доступу і утойванне ўнутраных кампанентаў для абстрактных дадзеных. Прынцып гэтага механізму прадугледжвае наяўнасць спосабаў прадухілення наўмыснага ці выпадковага змены ўнутраных кампанентаў. І калі кажуць пра абстрактныя тыпы дадзеных, то маюць на ўвазе іх сукупнасць з мноствам аперацый, якія могуць быць выкананы над імі.

аб'екты

Мы ўжо разгледзелі абстрактны клас і інтэрфейс у цэлым і агульным. Цяпер давайце трохі дэталізуем нашы веды. Для пачатку нададзім ўвагу аб'ектам. Пад імі ў агульным выпадку разумеюць частку навакольнага рэальнасці, якая існуе ў прасторы і часу. Але фармальна вызначыць аб'екты ў рамках праграмавання даволі складана (з філасофска-тэарэтычнага пункта гледжання). Таму гэта робіцца дзякуючы яго уласцівасцях. У якасці прыкладу можна прывесці наступнае: аб'ект можа быць адназначна вызначаны (валодае унікальным імем), ён знаходзіцца ў пэўным стане і выкарыстоўвае пэўную мадэль паводзінаў.

ўспадкоўванне

Паколькі праграмаванне будуецца на пабудове іерархічнага дрэва сувязяў паміж аб'ектамі, то падымаецца пытанне аб тым, каб ніжэйлеглую тыпах былі перададзеныя ўласцівасці бацькоўскіх бібліятэк кода. Пад ўспадкоўванне разумеюць адносіны, калі хтосьці адзін паўтарае паводзіны і структуру нечага іншага. У звычайным жыцці гэта можна сустрэць паўсюдна. Падобнае было перанесена і ў праграмаванне адносна абстрактных элементаў. У якасці параўнання можна прывесці той факт, што няма такога арганізма, як птушка. Гэта абстрактнае назва. У якасці канкрэтнага асобніка прыводзяць чайку, салаўя або верабейку. Дзякуючы наяўнасці ў спадчыну мы можам выкарыстоўваць бібліятэкі класаў, а таксама развіваць іх для канкрэтнай праграмы. Такі інструмент дазваляе нам ствараць новыя аб'екты, адначасна дапаўняючы або змяняючы ўласцівасці ўжо створанага. Спадчыннік атрымлівае ўсе метады і палі свайго продка і пры неабходнасці абзаводзіцца сваімі ўласнымі атрыбутамі. Дзякуючы таму што ёсць абстрактныя элементы і прынцып спадчыны, існуюць шырокія магчымасці для мадыфікацыі ў рамках аб'ектна-арыентаванага праграмавання. Да таго ж гэта дазваляе гнутка падыходзіць да вырашэння пастаўленых задач. Пры атрыманні ў спадчыну ў новы клас перадаюцца дадзеныя і функцыі.

палімарфізм

Ён неабходны для таго, каб прымяняць аднолькавыя функцыі для вырашэння розных тыпаў задач. У дадзеным выпадку прадугледжваецца наяўнасць магчымасці здзяйснення розных дзеянняў, змест якіх будзе залежаць ад тыпу аб'екта, з якім вядзецца праца. Пад палімарфізмам разумеюць ўласцівасць элементаў, якія маюць аднаго агульнага з бацькоў, выконваць падобныя ў сэнсавым значэнні праблемы рознымі спосабамі. Правядзем аналогію з жывёламі. Ёсць такое дзеянне - збегчы. Усе мы разумеем, як яно адбываецца. Але рознымі жывёламі (ільвом, сланом, шымпанзэ, кракадзілам, чарапахай) гэта дзеянне будзе выконвацца па-рознаму. У дадзеным выпадку за іх перасоўванне адказвае распрацоўшчык, які пры патрэбе можа выклікаць для канкрэтнага выпадку пэўную падпраграму, распрацаваўшы алгарытм і паспяхова рэалізаваўшы яго. Гэта робіцца з дапамогай набору метадаў. Пры гэтым у кожным асобным класе праграмістам паказваецца, якому аб'екту якія ўласцівасці ўласцівыя. Змяняючы нешта ў нашчадках, можна дабіцца выканання вызначаных, патрэбных у дадзеным выпадку дзеянняў. Такі ўплыў называецца палімарфізмам аб'ектаў. У цэлым абстрактны клас з'яўляецца надзвычай карысным інструментам праграмавання.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 be.unansea.com. Theme powered by WordPress.