www.wikidata.uk-ua.nina.az
Abstraktnij tip danih ATD ce matematichna model dlya tipiv danih de tip danih viznachayetsya povedinkoyu semantikoyu z tochki zoru koristuvacha danih a same v terminah mozhlivih znachen mozhlivih operacij nad danimi cogo tipu i povedinki cih operacij Vsya vnutrishnya struktura takogo tipu zahovana vid rozrobnika programnogo zabezpechennya v comu i polyagaye sut abstrakciyi Abstraktnij tip danih viznachaye nabir funkcij nezalezhnih vid konkretnoyi realizaciyi tipu dlya operuvannya jogo znachennyami Konkretni realizaciyi ATD nazivayutsya strukturami danih V programuvanni abstraktni tipi danih zazvichaj podayutsya u viglyadi interfejsiv yaki prihovuyut vidpovidni realizaciyi tipiv Programisti pracyuyut z abstraktnimi tipami danih viklyuchno cherez yih interfejsi oskilki realizaciya mozhe v majbutnomu zminitisya Takij pidhid vidpovidaye principu inkapsulyaciyi v ob yektno oriyentovanomu programuvanni Silnoyu storonoyu ciyeyi metodiki ye same prihovuvannya realizaciyi Raz zovni opublikovanij tilki interfejs to poki struktura danih pidtrimuye cej interfejs vsi programi sho pracyuyut iz zadanoyu strukturoyu abstraktnim tipom danih budut prodovzhuvati pracyuvati Rozrobniki struktur danih namagayutsya ne zminyuyuchi zovnishnogo interfejsu i semantiki funkcij postupovo dopracovuvati realizaciyi pokrashuyuchi algoritmi po shvidkosti nadijnosti i vikoristovuvanoyi pam yati Riznicya mizh abstraktnimi tipami danih i strukturami danih yaki realizuyut abstraktni tipi mozhna poyasniti na nastupnomu prikladi Abstraktnij tip danih spisok mozhe buti realizovanij za dopomogoyu masivu abo linijnogo spisku z vikoristannyam riznih metodiv dinamichnogo vidilennya pam yati Odnak kozhna realizaciya viznachaye odin i toj zhe nabir funkcij yakij povinen pracyuvati odnakovo po rezultatu a ne za shvidkistyu dlya vsih realizacij Abstraktni tipi danih dozvolyayut dosyagti modulnosti programnih produktiv i mati kilka alternativnih vzayemozaminnih realizacij okremogo modulya Zmist 1 Prikladi 2 Vstup 3 Viznachennya abstraktnogo tipu danih 3 1 Viznachennya imperativnogo stilyu 3 1 1 Abstraktna zminna 3 1 2 Stvorennya ekzemplyara 3 1 3 Priklad abstraktnij stek imperativnij stil 3 1 4 Stil odnogo ekzemplyaru 3 2 Viznachennya funkcionalnogo stilyu 3 2 1 Priklad abstraktnij stek funkcionalnij stil 3 3 Chi slid vklyuchati skladnist 4 Perevagi abstraktnih tipiv danih 4 1 Inkapsulyaciya 4 2 Lokalizaciya zmin 4 3 Gnuchkist 5 Tipovi operaciyi 6 Prikladi 6 1 Abstraktnij grafichnij tip danih 7 Realizaciya 7 1 Priklad realizaciya abstraktnogo steka 7 1 1 Imperativnij stil interfejsu 7 1 2 Funkcionalnij stil interfejsu 7 2 Biblioteki ATD 7 3 Vbudovani abstraktni tipi danih 8 Div takozh 9 Primitki 10 Znoski 11 LiteraturaPrikladi RedaguvatiNapriklad cili chisla ce abstraktnij tip danih yakij viznachayetsya yak znachennya 2 1 0 1 2 i povoditsya vidpovidno do zvichnoyi matematiki z uvagoyu pro cilochiselne dilennya za dopomogoyu operacij dodavannya vidnimannya mnozhennya i dilennya a takozh operaciyi bilshe nizh menshe nizh i t d nezalezhno vid togo yak cili chisla predstavleni za dopomogoyu komp yutera a Ochevidno sho povedinka vklyuchaye v sebe rizni aksiomi asociativnist i komutativnist skladannya i t d i umovi za operaciyami ne mozhe diliti na nul Zazvichaj cili chisla predstavleni v strukturi danih u viglyadi dvijkovih chisel najchastishe yak dopovnyalnij kod ale mozhe buti dvijkovo desyatkovij kod abo obernenij kod ale koristuvach abstraguyetsya vid konkretnogo viboru uyavlennya i mozhe prosto vikoristovuvati ci dani u viglyadi cilih chisel ATD skladayetsya ne tilki z operacij ale i znachen pochatkovih danih i obmezhen na operaciyi Interfejs yak pravilo stosuyetsya lishe operacij i mozhlivo deyakih z obmezhen na operaciyi zokrema poperedni umovi i postumovi ale ne inshi obmezhennya taki yak vidnosini mizh operaciyami Napriklad abstraktnij stek yakij maye LIFO strukturu mozhe buti viznachenij za dopomogoyu troh operacij PUSH kotra vstavlyaye element danih v stek POP yaka vidalyaye element danih z nogo i PEEK abo TOP yaka otrimuye dostup do elementu danih v vershini steka bez vidalennya Abstraktna cherga yaka maye FIFO strukturu takozh bude mati tri operaciyi ENQUEUE yaka vstavlyaye element danih v chergu DEQUEUE yaka vidalyaye pershij element danih z nogo i FRONT sho otrimuye dostup i sluzhit pershim elementom danih v cherzi Tam ne bulo b niyakoyi mozhlivosti diferenciyuvati ci dva tipi danih yaksho matematichne obmezhennya ne vvoditsya todi ce dlya steka vkazuye sho kozhna POP zavzhdi povertaye najostannishij vtisnutij element yakij she ne viskochiv Pri analizi efektivnosti algoritmiv yaki vikoristovuyut steki mozhna takozh vkazati sho vsi operaciyi ne prijmayut toj zhe samij chas nezalezhno vid togo skilki elementiv danih buli vitisneni v stek i sho stek vikoristovuye postijnu kilkist shov dlya kozhnogo elementa Vstup RedaguvatiAbstraktni tipi danih ce chisto teoretichni ob yekti yaki vikoristovuyutsya mizh inshim dlya sproshennya opisu abstraktnih algoritmiv takozh dlya klasifikaciyi ta ocinki strukturi danih i formalnogo opisu sistem tipiv mov programuvannya Prote ATD mozhut buti realizovani za dopomogoyu pevnih tipiv danih abo struktur danih u bagatoh vidnoshennyah i v bagatoh movah programuvannya abo opisani v formalnij movi specifikaciyi ATD chasto realizuyutsya u viglyadi moduliv interfejs modulya ogoloshuye proceduri yaki vidpovidayut operaciyam ATD inodi z komentaryami yaki opisuyut obmezhennya Cya strategiya prihovuvannya informaciyi dozvolyaye realizaciyi modulya buti zminenoyu bez porushennya kliyentskih program Termin Abstraktnij Tip Danih takozh mozhna rozglyadati yak uzagalnenij pidhid ryadu algebrichnih struktur takih yak reshitki grupi i kilcya 1 Ponyattya abstraktnih tipiv danih pov yazane z ponyattyam abstrakciyi danih ce vazhlivo v ob yektno oriyentovanomu programuvannya ta metodologiyi proektuvannya za kontraktom na rozrobku programnogo zabezpechennya 2 Viznachennya abstraktnogo tipu danih RedaguvatiAbstraktnij tip danih viznachayetsya yak matematichna model ob yektiv danih yaki stanovlyat tip danih a takozh funkciyi yaki pracyuyut na cih ob yektah Tam nemaye standartnih konvencij dlya viznachennya yih Shirokij podil mozhe buti provedenij mizh imperativnimi i funkcionalnim stiliv viznachennya Viznachennya imperativnogo stilyu Redaguvati U filosofiyi imperativnih mov programuvannya abstraktna struktura danih zadumana yak sutnist yaka ye zminnim ce oznachaye sho vin mozhe perebuvati v riznih stanah v riznij chas Deyaki operaciyi mozhut zminiti stan ATD takim chinom poryadok v yakomu ocinyuyutsya operaciyi maye vazhlive znachennya i ta zh sama operaciya na odnih i tih zhe sub yektah mozhut mati rizni efekti yaksho vikonuyutsya v riznij chas tak samo yak instrukciyi komp yutera abo komandi i proceduri imperativnoyi movi Shob pidkresliti cyu tochku zoru prijnyato kazati sho operaciyi vikonuyutsya abo zastosovuyutsya ne stilki skilki ocinyuyutsya Imperativnij stil chasto vikoristovuyetsya pri opisi abstraktnih algoritmiv Divitsya Mistectvo programuvannya Donalda Knuta dlya otrimannya bilsh dokladnoyi informaciyi Abstraktna zminna Redaguvati Viznachennya imperativnogo stilyu ATD chasto zalezhat vid ponyattya abstraktnoyi zminnoyi yaku mozhna rozglyadati yak najprostishij netrivialnij ATD Abstraktna zminna V ye zminnij ob yekt yakij dopuskaye dvi operaciyi store V h de h ye znachennya neviznachenogo harakteru fetch V sho daye znachennya z tim obmezhennyam sho fetch V zavzhdi povertaye znachennya h kotre vikoristovuyutsya v samij ostannij operaciyi store V h na tij zhe samij zminnoyi V Yak i v bagatoh movah programuvannya operaciya store V x chasto pishetsya V x abo deyaki analogichni poznachennya i fetch V mayetsya na uvazi kozhen raz koli zminna V vikoristovuyetsya v konteksti de potribno znachennya Tak napriklad V V 1 zazvichaj rozumiyetsya yak skorochennya dlya store V fetch V 1 U comu viznachenni neyavno peredbachayetsya sho zberezhennya znachennya v zminnu U ne robit niyakogo vplivu na stan okremoyi zminnoyi V Dlya togo shob zrobiti ce pripushennya yavnim mozhna bulo b dodati sho obmezhennya yaksho U i V ye rizni zminni to poslidovnist store U x store V y ekvivalentna poslidovnosti store V y store U x U bilsh zagalnomu plani pri viznachenni ATD chasto pripuskayut sho bud yaka operaciya yaka zminyuye stan odnogo ekzemplyara ATD ne robit niyakogo vplivu na stan bud yakogo inshogo ekzemplyaru v tomu chisli inshih ekzemplyariv odnogo i togo zh ATD hiba tilki aksiomi ATD ne oznachayut sho dva ekzemplyari pov yazani psevdonimami v comu sensi Napriklad pri rozshirenni viznachennya abstraktnoyi zminnoyi shob vklyuchiti abstraktni strukturi operaciya yaka vibiraye pole z strukturoyu zminnoyi R povinen dati zminnu V yaka ye psevdonimom do tiyeyi chastini R Oznachennya abstraktnoyi zminnoyi V mozhe takozh obmezhiti zapisani znachennya x chleniv pevnoyi mnozhini X nazivayetsya diapazon abo tip V Yak i v movah programuvannya taki obmezhennya mozhut sprostiti opis i analiz algoritmiv a takozh polipshiti yih chitanist Zvernit uvagu sho ce viznachennya nichogo ne govorit pro rezultat ocinki fetch V koli V ye ne inicializovana tobto pered vikonannyam bud yakoyi operaciyi zberezhennya na V Algoritm yakij robit ce yak pravilo vvazhayetsya nedijsnim oskilki jogo efekt ne viznachenij Prote ye deyaki vazhlivi algoritmi efektivnist yakih znachnoyu miroyu zalezhit vid pripushennya sho taka vibirka ye zakonnoyu i povertaye deyake dovilne znachennya v diapazoni zminnoyi Stvorennya ekzemplyara Redaguvati Deyakim algoritmam neobhidno stvoryuvati novi ekzemplyari deyakogo ATD napriklad novi zminni abo novi steki Dlya opisu takih algoritmiv vin yak pravilo vklyuchaye v ATD viznachennya operaciyi Create yakij daye ekzemplyar ATD yak pravilo z aksiom ekvivalentnih rezultat operaciyi Create vidriznyayetsya vid bud yakogo ekzemplyaru yaki vikoristovuyetsya algoritmom Cya aksioma mozhe buti posilena shob viklyuchiti takozh chastkove nakladennya spektriv z inshimi ekzemplyarami Z inshogo boku cya aksioma dosi dozvolyaye realizaciyi operaciyi Create otrimati ranishe stvorenij ekzemplyar yakij stav nedostupnim dlya programi Priklad abstraktnij stek imperativnij stil Redaguvati Yak inshij priklad viznachennya abstraktnogo steka imperativnim stilem mozhe vkazati sho stan steka S mozhe buti zminenij tilki za dopomogoyu operacij push S x de h deyake znachennya neviznachenogo harakteru pop S sho nadaye znachennya yak rezultat z tim obmezhennyam sho Dlya bud yakogo znachennya h i bud yakoyi abstraktnoyi zminnoyi V poslidovnist operacij push S x V pop S ekvivalentna operaciyi V x Tak yak privlasnennya V x za viznachennyam ne mozhe zminiti stan S cya umova oznachaye sho V pop S vidnovlyuye S v stan vin mav do operaciyi push S x Z ciyeyi umovi i z vlastivostej abstraktnih zminnih to ce oznachaye napriklad sho poslidovnist push S x push S y U pop S push S z V pop S W pop S de h u ta z ye bud yaki znachennya a U V W poparno rizni zminni ekvivalentno U y V z W x Pri comu neyavno peredbachayetsya sho operaciyi na ekzemplyari steka ne zminyuyut stan bud yakogo inshogo ekzemplyaru ATD v tomu chisli inshih stekiv a same Dlya bud yakih znachen x y a takozh bud yakih riznih stekiv S i T poslidovnist push S x push T y ekvivalentna poslidovnosti push T y push S x Abstraktne viznachennya steka zazvichaj vklyuchaye v sebe takozh bulevu funkciyu empty S i operaciyu create yaka povertaye ekzemplyar steka z aksiom ekvivalentnih create S dlya bud yakogo steka S novostvorenij stek vidriznyayetsya vid usih poperednih stekiv empty create novostvorenij stek porozhnij not empty push S x zashtovhuyuchi shos v stek robit jogo nepustim Stil odnogo ekzemplyaru Redaguvati Inodi ATD viznachayetsya tak yakbi tilki odin jogo ekzemplyar isnuvav pid chas vikonannya algoritmu i vsi operaciyi buli zastosovani do cogo ekzemplyaru yakij yavno ne zapisanij Napriklad abstraktnij stek yakij vkazano vishe mozhe buti viznachenij z operaciyami push x ta pop yaki pracyuyut na yedinomu isnuyuchomu steku Viznachennya ATD v comu stili mozhna legko perepisati shob viznati sho kilka ekzemplyariv ATD spivisnuyut shlyahom dodavannya yavnogo parametra ekzemplyaru napriklad S v poperednomu prikladi dlya kozhnoyi operaciyi yaka vikoristovuye abo zminyuye neyavne ekzemplyar Z inshogo boku deyaki ATD ne mozhut buti viznacheni za znachennyam ne pripuskayuchi dekilkoh ekzemplyariv Ce toj vipadok koli odna operaciya prijmaye dva riznih ekzemplyara ADT yak parametri Dlya prikladu rozglyanemo dopovnyuyuchi viznachennya abstraktnogo steka z operaciyeyu compare S T yaka pereviryaye chi steki S i T mistyat odni j ti zh elementi v tomu zh poryadku Viznachennya funkcionalnogo stilyu Redaguvati Inshij sposib viznachennya ATD blizhche do duhu funkcionalnogo programuvannya ce rozglyadati kozhen stan strukturi yak okremu sutnist Z ciyeyi tochki zoru bud yaka operaciya yaka zminyuye ATD modelyuyetsya yak matematichna funkciya yaka prijmaye starij stan yak argument i povertaye novij stan yak chastinu rezultatu Na vidminu vid imperativnih operacij ci funkciyi ne mayut pobichnih efektiv Takim chinom poryadok v yakomu voni ocinyuyutsya nesuttyevij i ta zh operaciya zastosovuyetsya do tih zhe argumentiv v tomu chisli i tih zhe vhidnih staniv zavzhdi bude povertati ti zh rezultati i vihidni stani U funkcionalnomu podanni zokrema ne isnuye niyakogo sposobu abo neobhidnosti shob viznachiti abstraktne zminnu z semantikoyu imperativnih zminnih a same z operaciyami fetch i store Zamist togo shob zberigati znachennya v zminnih vin peredaye yih yak argumenti funkciyi Priklad abstraktnij stek funkcionalnij stil Redaguvati Napriklad povne viznachennya abstraktnogo steka u funkcionalnomu stili mozhe vikoristovuvati tri operaciyi push prijmaye stan steka i dovilne znachennya povertaye stan steka top prijmaye stan steka povertaye znachennya pop prijmaye stan steka povertaye stan steka U viznachenni funkcionalnogo stilyu nemaye neobhidnosti v operaciyi stvorennya Spravdi ne isnuye ponyattya ekzemplyar steku Stek staniv mozhna rozglyadati yak potencijni stani yedinoyi strukturi steka a dva stanu steka yaki mistyat odni i ti zh znachennya v tomu zh poryadku vvazhayutsya odnakovimi stanami Cya tochka zoru faktichno vidobrazhaye povedinku deyakih konkretnih realizacij takih yak zv yazani spiski z hesh minusami Zamist operaciyi create viznachennya abstraktnogo steka u funkcionalnomu stili mozhe pripustiti isnuvannya osoblivogo stanu steka porozhnogo steka yakij poznachayetsya specialnim simvolom yak L abo abo viznachiti operaciyu bottom yaka ne prijmaye argumentiv i povertaye cej osoblivij stan steka Zauvazhimo sho aksiomi mayut na uvazi sho push L x L U viznachenni steka u funkcionalnomu stili nemaye potrebi u predikati empty zamist nogo mozhna pereviriti chi ye stek porozhnij shlyahom testuvannya chi dorivnyuye stek L Zvernit uvagu sho ci aksiomi ne viznachayut diyu top s abo pop s yaksho s ne ye stanom steka povertayetsya operaciyeyu push Tak yak operaciya push zalishaye stek ne porozhnim todi ci dvi operaciyi ne viznacheni i otzhe nespromozhni pri s L Z inshogo boku aksiomi i vidsutnist pobichnih efektiv slid sho push s x push t y todi j lishe todi koli x y ta s t Yak i v deyakih inshih galuzyah matematiki prijnyato vvazhati takozh sho stek staniv tilki ti chiye isnuvannya mozhe buti dovedeno z aksiom v kinceve chislo krokiv V prikladi abstraktnogo steku zaznachenij vishe ce pravilo oznachaye sho kozhen stek ce kinceva poslidovnist znachen yaka staye porozhnim stekom L pislya kincevogo chisla viklikiv operaciyi pop Sami po sobi aksiomi ne viklyuchayut isnuvannya neskinchennih stekiv na kotrih operaciyu pop mozhna viklikati neskinchenu kilkist raz shorazu otrimuyuchi inshij stan abo krugovi steki yaki povertayutsya v toj zhe stan pislya kincevogo chisla viklikiv operaciyi pop Zokrema voni ne viklyuchayut stani S taki sho pop s s abo push s x s dlya deyakogo h Odnak tak yak nihto ne mozhe otrimati takij stek staniv iz zadanimi operaciyami voni vvazhayutsya ne isnuyuchimi Chi slid vklyuchati skladnist Redaguvati Krim povedinki z tochki zoru aksiom mozhna takozh vklyuchiti v viznachenni operaciyi ATD yih algoritmichnoyi skladnosti Oleksandr Stepanov dizajner standartnoyi biblioteki shabloniv C vklyucheni garantiyi skladnosti v specifikaciyi STL argumentuyuchi Prichina vvedennya ponyattya abstraktnih tipiv danih bulo dozvoliti vzayemozaminnist programnih moduliv Vi ne mozhete mati zminni moduli yaksho ci moduli ne podilyayut podibnu povedinku skladnosti Yaksho zaminiti odin modul inshim modulem z tiyeyu zhe funkcionalnoyu povedinkoyu ale z riznimi kompromisami skladnosti koristuvach cogo kodu bude nepriyemno zdivovanij Ya mig bi skazati jomu sho nebud sho meni podobayetsya abstrakciyi danih i vin do cih pir ne hotiv bi vikoristovuvati kod Skladnist tverdzhennya mayut buti chastinoyu interfejsu Oleksandr Stepanov 3 Perevagi abstraktnih tipiv danih RedaguvatiInkapsulyaciya Redaguvati Abstrakciya zobov yazuyetsya sho bud yaka realizaciya ATD maye pevni vlastivosti i zdibnosti znati yih ce vse sho potribno shob vikoristovuvati ob yekt ATD Koristuvach ne potrebuye bud yakih tehnichnih znan pro te yak zdijsnyuyetsya robota nad ATD shob yih vikoristovuvati Lokalizaciya zmin Redaguvati Kod yakij vikoristovuye ob yekt ATD ne potribno bude redaguvati yaksho realizaciya ATD zminilasya Oskilki bud yaki zmini v realizaciyi yak i ranishe povinni vidpovidati interfejsu a tak yak kod z vikoristannyam ob yektu ATD mozhe vidnositisya tilki do vlastivostej i zdibnostej zaznachenih v interfejsi mozhut buti zrobleni zmini v realizaciyi pri comu ne vimagayuchi bud yakih zmin v kodi de vikoristovuyetsya ATD Gnuchkist Redaguvati Rizni varianti realizaciyi ATD mayut vsi ti zh vlastivosti i zdibnosti kotri ekvivalentni i mozhut buti vikoristani yak vzayemozaminni v kodi yakij vikoristovuye ATD Ce daye veliku gnuchkist pri vikoristanni ob yektiv ATD v riznih situaciyah Napriklad rizni realizaciyi ATD mozhut buti bilsh efektivnim v riznih situaciyah mozhna vikoristovuvati kozhen z nih v situaciyi koli vin ye krashim zbilshuyuchi takim chinom zagalnu efektivnist Tipovi operaciyi RedaguvatiDeyaki operaciyi yaki chasto vkazani dlya ATD mozhlivo pid inshimi nazvami ye compare s t sho pereviryaye chi ye ekvivalentni v deyakomu sensi dva stani ekzemplyariv hash s yaka obchislyuye deyaki standartni gesh funkciyi zi stanu ekzemplyariv print s abo show s yaka viroblyaye zruchnij dlya chitannya predstavlennya stanu ekzemplyaru U viznachenni ATD v imperativnomu stili takozh mozhlivo znajti create sho daye novij ekzemplyar ATD initialize s sho gotuye novij stvorenij ekzemplyar s dlya podalshih operacij abo skidaye jogo v yakijs pochatkovij stan copy s t sho stavit ekzemplyar s u stan ekvivalentnij stanu ekzemplyara t clone t yakij vikonuye s create copy s t i povertaye s free s abo destroy s sho zvilnyaye pam yat ta inshi resursi kotri vikoristovuyutsya ekzemplyarom s Operaciya free zazvichaj ne aktualna abo nemaye sensu oskilki ATD ce teoretichni ob yekti yaki ne vikoristovuyut pam yat Prote ce mozhe buti neobhidno koli neobhidno proanalizuvati shovishe sho vikoristovuyetsya algoritmom yakij vikoristovuye ATD U comu vipadku potribno dodatkovi aksiomi yaki viznachayut skilki pam yati kozhen ekzemplyar ATD vikoristovuye v zalezhnosti vid jogo stanu i skilki pam yati povertayetsya v pul pri vikoristanni operaciyi free Prikladi RedaguvatiDeyaki zagalni ATD yaki doveli svoyu korisnist v najriznomanitnishih dodatkah Kontejner Spisok Mnozhina Multimnozhina tip danih Map asociativnij masiv slovnik Multimap en Ob yektnij graf Stek Cherga Cherga z prioritetom Dvobichna cherga Dvostoronnya cherga z prioritetom Kozhen z cih ATD mozhe buti viznachena riznimi sposobami i variantami ne obov yazkovo ekvivalentnimi Napriklad abstraktnij stek mozhe abo ne mozhe mati operaciyu pidrahunku yaka govorit skilki elementiv buli dobavleni i she ne vidaleni Cej vibir robit vidminnist ne tilki dlya svoyih kliyentiv ale i dlya realizaciyi Abstraktnij grafichnij tip danih Redaguvati Rozshirennya ATD dlya komp yuternoyi grafiki bulo zaproponovano v 1979 roci 4 abstraktnij tip grafichnih danih AGDT Vono bulo vvedeno Nadiyeyu Magnenat Telmann i Danielem Telmann AGDT zabezpechuye perevagi ATD zi zruchnostyami dlya pobudovi grafichnih ob yektiv v strukturovanomu viglyadi Realizaciya RedaguvatiRealizaciya ATD oznachaye zabezpechennya odniyeyi proceduri abo funkciyi dlya kozhnoyi abstraktnoyi operaciyi Ekzemplyari ADT predstavleni bud yakoyu konkretnoyu strukturoyu danih yaka manipulyuye cimi procedurami vidpovidno do specifikaciyi ATD Yak pravilo isnuye bagato sposobiv realizuvati toj zhe ATD z vikoristannyam dekilkoh riznih konkretnih struktur danih Tak napriklad abstraktnij stek mozhe buti realizovanij za dopomogoyu zv yazanogo spisku abo masivom Dlya togo shob zapobigti kliyentiv vid zalezhnosti vid realizaciyi ATD chasto upakovanij v viglyadi neprozorogo tipu danih v odnomu abo dekilkoh modulyah chij interfejs mistit tilki pidpis kilkist i tipi parametriv i rezultativ vid operacij Realizaciya modulya a same tila procedur i konkretna struktura danih yaka vikoristovuyetsya todi mozhut buti prihovani vid bilshosti kliyentiv modulya Ce daye mozhlivist zminiti realizaciyu ne zachipayuchi kliyentiv Yaksho realizaciya piddayetsya vplivu vidomo zamist cogo yak prozorij tip danih Pri realizaciyi ATD kozhen ekzemplyar v terminah imperativnogo stilyu abo kozhne stan v terminah funkcionalnogo stilyu yak pravilo predstavlenij deskriptorom yakogos vidu 5 Suchasni ob yektno oriyentovani movi taki yak C i Java pidtrimuyut formu abstraktnih tipiv danih Koli klas vikoristovuyetsya yak tip ce abstraktnij tip yakij vidnositsya do prihovanogo uyavlennya U cij modeli ATD zazvichaj realizuyetsya yak klas i kozhen ekzemplyar ATD yak pravilo ob yekt cogo klasu Interfejs modulya zazvichaj ogoloshuye konstruktori yak zvichajni proceduri i bilshist inshih operacij ATD yak metodi cogo klasu Prote takij pidhid ne legko inkapsulyuvati dekilka reprezentativnih varianti znajdenih v ATD Vona takozh mozhe pidirvati rozshiryuvanosti ob yektno oriyentovanih program U chisto ob yektno oriyentovanoyi programi yaka vikoristovuye interfejsi yak tipi tipi vidnosyatsya do povedinci ne uyavlennyu Priklad realizaciya abstraktnogo steka Redaguvati Yak priklad os realizaciya abstraktnogo steka v movi programuvannya C Imperativnij stil interfejsu Redaguvati Interfejs v imperativnomu stili mozhe buti typedef struct stack Rep stack Rep tip uyavlennya ekzemplyaru steka neprozorij zapis typedef stack Rep stack T tip deskriptor do ekzemplyaru steka neprozorij vkazivnik typedef void stack Item tip znachennya zberezhene v ekzemplyari steka dovilnij adres stack T stack create void stvoryuye novij porozhnij ekzemplyar steka void stack push stack T s stack Item x dodaye element na vershinu steka stack Item stack pop stack T s vidalyaye verhnij element zi steka i povertaye jogo bool stack empty stack T s pereviryaye porozhnij chi stek Cej interfejs mozhe buti vikoristanij v takij sposib include lt stack h gt pidklyuchaye interfejs steka stack T s stack create stvoryuye novij porozhnij ekzemplyar steka int x 17 stack push s amp x dodaye adresu x na vershinu steka void y stack pop s vidalyaye adresu h zi steka i povertaye jogo if stack empty s robit shos yaksho stek porozhnij Cej interfejs mozhe buti realizovanij riznimi sposobami Realizaciya mozhe buti yak zavgodno neefektivna tak yak formalnogo viznachennya ATD vishe ne viznachaye skilki prostoru steka mozhe vikoristovuvatisya i yak dovgo kozhna operaciya povinna zajnyati Vin takozh ne utochnyuye chi prodovzhuye stek stanu s isnuvati pislya vikliku x pop s Na praktici formalne viznachennya povinno buti zaznacheno sho prostir proporcijno kilkosti elementiv zashtovhanih i she ne vidalenih i sho kozhna z operacij vishe povinna zakinchitisya za postijnu kilkist chasu nezalezhno vid ciyeyi kilkosti Dlya vikonannya cih dodatkovih specifikacij realizaciya mozhe vikoristovuvati zv yazanij spisok abo masiv z dinamichnoyu zminoyu rozmiriv razom z dvoma cilimi chislami kilkist elementiv i rozmir masivu Funkcionalnij stil interfejsu Redaguvati Funkcionalnij stil viznachennya ATD ye bilsh pridatnimi dlya funkcionalnih mov programuvannya i navpaki Prote mozhna zabezpechiti interfejs funkcionalnim stilem navit v imperativnij movi programuvannya yak C Napriklad typedef struct stack Rep stack Rep tip uyavlennya stanu steka neprozorij zapis typedef stack Rep stack T tip deskriptor do stanu steka neprozorij vkazivnik typedef void stack Item tip znachennya stanu steka dovilnij adres stack T stack empty void povertaye porozhnye stan steka stack T stack push stack T s stack Item x dodaye element na vershinu stanu steka i povertaye otrimanij stan steka stack T stack pop stack T s vidalyaye verhnij element zi stanu steka i povertaye otrimanij stan steka stack Item stack top stack T s povertaye verhnij element stanu steka Biblioteki ATD Redaguvati Bagato suchasnih mov programuvannya taki yak C i Java postavlyayutsya zi standartnimi bibliotekami yaki realizuyut kilka zagalnih ATD takih yak ti yaki pererahovani vishe Vbudovani abstraktni tipi danih Redaguvati Specifikaciya deyakih mov programuvannya navmisno rozplivchasta pro podannya deyakih vbudovanih tipiv danih viznachayuchi tilki ti operaciyi yaki mozhut buti zrobleni na nih Takim chinom ci tipi mozhna rozglyadati yak vbudovani ATD Prikladami ye masivi v bagatoh scenarnih movah takih yak Awk Lua i Perl yaki mozhna rozglyadati yak realizaciyu abstraktnogo spisku Div takozh RedaguvatiKoncepciya uzagalnene programuvannya en Formalni metodi Funkcionalna specifikaciya en Uzagalnenij algebrichnij tip danih F algebra Princip pidstanovki Liskov Teoriya tipiv Walls and Mirrors en Spisok Stek Cherga struktura danih Asociativnij masiv Cherga z prioritetomPrimitki Redaguvati Porivnyano z predstavlennyam cilih v abstraktnij algebri Znoski Redaguvati Rudolf Lidl 2004 Abstract Algebra Springer ISBN 81 8128 149 7 Chapter 7 section 40 What Is Object Oriented Programming Hiring Upwork amer 5 travnya 2015 Arhiv originalu za 28 zhovtnya 2016 Procitovano 28 zhovtnya 2016 Stevens Al March 1995 Al Stevens Interviews Alex Stepanov Dr Dobb s Journal Arhiv originalu za 1 lyutogo 2012 Procitovano 31 sichnya 2015 D Thalmann N Magnenat Thalmann 1979 Design and Implementation of Abstract Graphical Data Types IEEE Proc 3rd International Computer Software and Applications Conference COMPSAC 79 IEEE Chicago USA pp 519 524 Robert Sedgewick 1998 Algorithms in C Addison Wesley ISBN 0 201 31452 5 definition 4 4 Literatura RedaguvatiMitchell John C Plotkin Gordon July 1988 Abstract Types Have Existential Type ACM Transactions on Programming Languages and Systems 10 3 doi 10 1145 44501 45065 Arhiv originalu za 17 travnya 2017 Procitovano 11 grudnya 2016 Liskov Barbara Zilles Stephen 1974 Programming with abstract data types Proceedings of the ACM SIGPLAN symposium on Very high level languages s 50 59 doi 10 1145 800233 807045 Dale Nell Walker Henry M 1996 Abstract Data Types Specifications Implementations and Applications Jones amp Bartlett Learning ISBN 978 0 66940000 7 Cya stattya potrebuye dodatkovih posilan na dzherela dlya polipshennya yiyi perevirnosti Bud laska dopomozhit udoskonaliti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Zvernitsya na storinku obgovorennya za poyasnennyami ta dopomozhit vipraviti nedoliki Material bez dzherel mozhe buti piddano sumnivu ta vilucheno berezen 2016 Otrimano z https uk wikipedia org w index php title Abstraktnij tip danih amp oldid 38151946