Ikviens, kam ir vismaz minimālas zināšanas par programmēšanu, domāja par to, kāpēc ir abstraktas bāzes klases. Kāds ir viņu mērķis? Kā izveidot abstraktu klasi? Kādas priekšrocības viņi dod praksē? Kāpēc tie ir nepieciešami programmēšanas procesā un kādas iezīmes ir jāņem vērā?
Abstraktās nodarbības
Tātad programmēšanas laikā tiek saukta programmas koda vienība, uz kuras pamata nevar izveidot objektus. Jāatzīmē, ka šīs klases mantinieki var nebūt abstrakti. Tāpēc objektu radīšana uz to pamata ir diezgan iespējams. Ja mēs uzskatām par piemēru no Java, tad mēs izveidojām šādu modeli: mēs varam aprakstīt konstruktorus klasē A. Bet mēs nevaram tos izmantot. Izejā no šīs situācijas ir norādīt mainīgo kā atsauci. Un ir skaidri jānorāda, ka tas norāda uz A klases priekšmetu. Bet kā to var izdarīt? Partija mums palīdzēs. Jāatzīmē, ka vecāku klase vienmēr tiek uzskatīta par universālu nekā bērns. Daudzās programmēšanas valodās cast izmanto automātiski. Bet, ja nav pārliecības par šāda mehānisma pieejamību, tad jums ir skaidri jānorāda atsauce uz objektu.
Abstract metodes
Kas tie ir? Abstraktās metodes ir tādas, kuras nav aplūkojamās klases īstenošanā. Tātad, pēc iekavās (kurās ir uzskaitīti to izmantotie argumenti), ielieciet neatvērtu cirtaini (pēc tam tiek ievietots metodes apraksta bloks), bet tikai ar semikolu. Tādējādi šajā gadījumā nav informācijas par to, ko viņš dara. Šeit jūs varat uzdot jautājumu: "Kāpēc metode nav īstenota?" Galu galā to nevar izmantot! Protams, tas nav iespējams klasē, kur tas tika aprakstīts. Bet, ja mēs uzskatu šo situāciju no pēcnācēja viedokļa, tad to var saukt. Un tas darbosies saskaņā ar konkrēto aprakstu, kas pieejams šajā klasē.
Abstraktas metodes iezīmes
To lietošanā ir ierobežojumi. Apsveriet to Java programmēšanas valodas piemērā . Pastāv šāda prasība: ja klasē ir vismaz viena šāda metode, tad tam obligāti jābūt abstraktai. Un kādos gadījumos ir lietderīgi izmantot šādas konstrukcijas? Apskatīsim to mājdzīvnieku nodarbību gadījumā. Vispirms jāsaprot, ka nav skaņas, ko viņi visi publicē. Tāpēc vispārīgākajā klasē skaņas metodes ieviešana nav norādīta. Bet viņam tiek radīts ķermenis, kas ir atdalīts ar blokiem. Un jau nākotnē, kad tiks izveidota suņu, kaķu vai kāmju klases, tiks noteikta atsevišķa metode, kurā tiks atklātas visas funkcijas.
Saskarne
Programmēšanā ir izveidoti daudzi rīki, kuru mērķis ir palīdzēt cilvēkam izveidot labas kvalitātes produktu. Un aplūkojamās tēmas ietvaros uzmanība jāpievērš šim aspektam, lai ikviens zinātu atšķirību starp abstraktu klasi un saskarni. Tātad, pēdējā īpatnība ir tāda, ka tai nav īpašību, un metodēm nav ķermeņu. Izpētot atšķirību starp abstraktu klasi un saskarni, jāņem vērā vēl viena funkcija. Tātad, pirmais ir iedzimts, bet otrais tiek realizēts. Nepieredzējušam cilvēkam tas var likties nenozīmīgs. Bet fakts ir tāds, ka mantojot var tikai vienu klasi, un jūs varat īstenot tik daudz, cik vēlaties. Tādējādi saskarne atšķiras no abstrakta klases. Java ir citas funkcijas, ar kurām tā var aprakstīt tikai abstraktās publiskās metodes un statiskās konstantes. Bet saskarnes var arī tikt mantotas. Šajā gadījumā ir jānorāda, ka izmantotie operatori ir publiski pieejami, izmantojot publiski pieejamus.
Vairāki saskarnes mantojumi
Šī funkcija nav pieejama klasēm daudzās programmēšanas valodās (piemēram, Java, ko mēs apsveram). Tas ir saistīts ar vairākām problēmām. Tādā veidā norādiet neskaidrību, kas rodas mantošanas laikā. Tas bija iemesls vairāku mantojuma saskarnju ieviešanai. Tas daļēji atrisina esošās problēmas, bet ne visas. Tādējādi, pateicoties iekapsulēšanas un polimorfismu principiem, saskarnes var veiksmīgi ieviest dažādās klasēs ar dažādām metodēm (lai gan tām būs vienāds nosaukums). Bet neaizmirstiet par esošajām problēmām. Tātad, strādājot ar vairākām saskarnēm, jums vienmēr būs jānorāda, ko mēs domājam. Arī pastāv problēmas, mēģinot strādāt ar divām viena nosaukuma metodēm, tādā gadījumā tos nevar izmantot. Tādēļ šādos gadījumos ir nepieciešams rūpēties par kopīgas ieviešanas pieejamību.
Anotācijas dati
Šī koncepcija ir galvenais programmu veidošanā. Šajā gadījumā abstrakcija tiek uzskatīta par neatkarīgu apsvērumu un saskarnes un tā ieviešanas atdalīšanu. Apskatīsim piemēru. Mums ir televizors, kas ir objekts vai modulis. Tam ir interfeiss. Kā tāds, tam ir kontrole, kā arī skaņas un attēla atskaņošana. Jo ērtāk tiek izmantots saskarne, jo ērtāk televizors tiek izmantots. Mēs varam pārslēgt programmas, noklikšķinot uz jebkurām pogām. Šajā gadījumā nav jādomā par fiziskajiem procesiem televizorā. Viņus rūpējas speciālisti, kuri savāc ierīci. Mēs esam ieinteresēti tikai īpašumos kā lietotāji. Atgriežoties pie programmēšanas, mēs varam teikt, ka ar šo analoģiju tie ir interfeiss un ieviešana. Tāpat, ja cilvēks ir pārliecināts par savām zināšanām, viņš var "pacelt" vāciņu no mūsu hipotētiskā TV un uzlabot to. Lai gan tas var novest pie vietējiem panākumiem, vairumā gadījumu gala rezultāts ir negatīvs. Tādēļ programmēšana aizliedz piekļuvi un slēpj iekšējos komponentus abstraktiem datiem. Šī mehānisma princips paredz veidus, kā novērst tīšas vai nejaušas izmaiņas iekšējās sastāvdaļās. Un kad viņi runā par abstraktiem datu tipiem, tie nozīmē to kopumu ar daudzām operācijām, kas uz tām var tikt veiktas.
Objekti
Mēs jau esam izpētījuši abstraktu klasi un saskarni kopumā un vispār. Tagad sīkāka informācija par mūsu zināšanām. Pirmkārt, mēs pievērsīsim uzmanību objektiem. Ar tiem vispārīgā gadījumā tiek saprasts daļa no apkārtējās realitātes, kas pastāv telpā un laikā. Bet ir grūti formāli definēt objektus plānošanas ietvaros (no filozofiskā un teorētiskā viedokļa). Tāpēc tas tiek darīts, ņemot vērā tā īpašības. Kā piemēru var minēt: objektu var unikāli identificēt (tam ir unikāls nosaukums), tas ir noteiktā stāvoklī un izmanto noteiktu uzvedības modeli.
Mantojums
Tā kā programmēšanas pamatā ir hierarhiska objektu savstarpējo attiecību koka veidošana, tiek izvirzīts jautājums, ka vecāku kodu bibliotēkas īpašības būtu jāpārnes uz pamatveidiem. Mantojums tiek saprasts kā saikne, kad atkārtojas kaut kas cits uzvedība un struktūra. Parastā dzīvē to var atrast visur. Tas tika nodots arī plānošanai attiecībā uz abstraktiem elementiem. Salīdzinājumam mēs varam minēt faktu, ka šāds organisms nav putns. Šis ir abstrakts vārds. Kā īpašu paraugu jūs ievedat seagulu, slēpotāju vai zvirbuli. Mantojuma dēļ mēs varam izmantot klases bibliotēkas, kā arī izstrādāt tos konkrētai programmai. Šāds rīks ļauj mums izveidot jaunus objektus, vienlaicīgi pievienojot vai mainot jau izveidotā objekta īpašības. Mantinieks iegūst visas viņa priekšteča metodes un laukus un, ja nepieciešams, iegūst savus atribūtus. Sakarā ar to, ka pastāv abstrakti elementi un mantojuma princips, objektorientētās programmēšanas ietvaros ir daudz iespēju pārveidot. Turklāt tas ļauj elastīgi pievērsties uzdevumu risināšanai. Kad jūs mantojat, dati un funkcijas tiek nodotas jaunajā klasē.
Polimorfisms
Tas ir nepieciešams, lai atrisinātu dažādu veidu uzdevumus, pielietojot tās pašas funkcijas. Šajā gadījumā ir paredzēta iespēja veikt dažādas darbības, kuru saturs būs atkarīgs no objekta veida, ar kuru tiek veikts darbs. Polimorfisms tiek saprasts kā tādu elementu īpašība, kam ir viens kopīgs vecāks, un dažādas metodes realizē līdzīgas problēmas semantiskā nozīmē. Mēs izdarām analoģiju ar dzīvniekiem. Ir šāda rīcība - palaist. Mēs visi saprotam, kā tas notiek. Bet ar dažādiem dzīvniekiem (lauvu, ziloņu, šimpanzēm, krokodiliem, bruņurupučiem) šī darbība tiks veikta atšķirīgi. Šajā gadījumā izstrādātājs ir atbildīgs par viņu kustību, kas, ja nepieciešams, var radīt konkrētu apakšprogrammu konkrētā gadījumā, izstrādājot algoritmu un veiksmīgi to īstenojot. To dara, izmantojot vairākas metodes. Šajā gadījumā katrā atsevišķā klasē programmētājs norāda, kura objekta raksturīgās īpašības ir. Ja kaut kas mainās pēcnācējiem, jūs varat sasniegt noteiktus, šajā gadījumā nepieciešamos pasākumus. Šādu ietekmi sauc par objekta polimorfismu. Parasti abstraktā klase ir ļoti noderīgs programmēšanas rīks.