Jokainen, joka on vain vähän tietoa ohjelmoinnin, ihmetellen miksi on olemassa abstrakteja perusluokkien. Mikä on niiden tarkoitus? Miten luoda abstrakti luokka? Mitä etuja ne tarjoavat käytännössä? Miksi niitä tarvitaan ohjelmoinnin ja joitakin ominaisuuksia niiden täytäntöönpanossa olisi otettava huomioon?
abstraktin luokan
Joten ohjelma nimeltään yksikön koodia, joiden perusteella objekteja ei voi luoda. On huomattava, että tämän luokan seuraajansa voi olla abstrakteja. Siksi esineiden suunnittelu perustuu niihin on täysin mahdollista. Jos ajatellaan esimerkiksi Java, luomme mallin, voimme kuvata rakentajille luokan A Mutta käyttää niitä, emme voi. Tapa ulos tästä tilanteesta on ilmoitettava kaikki vaihtuvan viitekoron. Ja sinun täytyy olla selvästi määritelty siten, että se osoittaa kohde luokan A Näin se voidaan tehdä? Tämä auttaa meitä tuomaan. On syytä pitää mielessä, että vanhemman luokan katsotaan aina olevan monipuolisempi kuin jälkeläinen. Monissa ohjelmointikielet käytetään tuomaan automaattisesti. Mutta jos ei ole luottamusta, kun läsnä on tällainen mekanismi, sinun täytyy erikseen viittaus objekti.
abstrakti menetelmät
Mitä ne ovat? Abstrakti soittaa niitä menetelmiä, joita ei ole toteutettu tässä luokassa. Siten, seuraavat suluissa (jossa luetellaan perustelut siinä käytetty) eivät anna muotoinen aukko (jolloin sijaitsee lohkon kuvaus menetelmästä), ja vain puolipisteen. Näin ollen tässä tapauksessa ei ole mitään tietoa siitä, mitä se tekee. Täällä kysymys voidaan kysyä: "Ja mitä menetelmää ei toteuteta?" Loppujen lopuksi hän ei saa käyttää! Tietenkin, luokkahuoneessa, jossa hänet kuvattiin, tämä ei ole mahdollista. Mutta jos ajatellaan tilannetta siitä näkökulmasta jälkeläinen, sitä voidaan kutsua. Ja se tulee toimimaan tietyllä kuvaus käytettävissä tässä luokassa.
Ominaisuudet abstrakti menetelmät
On rajoituksia käyttää niitä. Tarkastellaan esimerkkinä Java-ohjelmointikielellä. On olemassa vaatimus, jos luokka on ainakin yksi tällainen menetelmä, se on abstrakti. Ja joka tapauksessa on tarkoituksenmukaista käyttää tällainen rakenne? Oletetaan ymmärrä tätä esimerkillä luokan lemmikkieläimiä. Alkaa ymmärtää, että ei ole ääntä, että ne julkaistaan. Siksi yleisin luokka ei ole asetettu ääntä menetelmän toteuttamiseen. Mutta luotu elin erilleen kautta estää häntä. Ja seuraavassa, kun luodaan koiran luokassa, kissan tai hamsteri määrätä tiettyä menetelmää sen puitteissa, joka paljastetaan kaikki ominaisuudet.
liitäntä
Ohjelmoinnissa luotu monia työkaluja, joiden tarkoitus - auttaa ihmisiä tekemään hyvälaatuisia tuotteita. Ja aihe alla olisi harkittava tätä näkökohtaa, ja että jokainen tietää Toisin abstrakti luokka käyttöliittymän. Niin, viimeinen piirre on, että se ei voi olla ominaisuuksia ja menetelmiä ei ole määritelty elin. Tutkimalla eroa abstrakti luokka käyttöliittymän, pitäisi asua enemmän yhteen tiettyyn. Täten ensimmäinen periytyy, kun taas toinen - on toteutettu. Kokematon henkilö tämä saattaa tuntua merkityksetön. Mutta tosiasia on, että voi periä vain yksi osakesarja, ja tajusin - niin paljon kuin on tarpeen. Juuri eroaa käyttöliittymän ja abstrakti luokka. Java on edelleen ominaisuuksia, että se voidaan kuvata vain abstrakteja julkisen menetelmiä ja staattisia vakioita. Mutta samalla rajapintoja voi myös olla perinnöllinen. On syytä huomauttaa, että operaattorit käytetään julkisia julkisilla.
Moniperintää rajapintojen
Tämä ominaisuus ei ole käytettävissä luokkia useilla ohjelmointikieliä (esim Java harkita meille). Tämä johtuu useista ongelmista. Sellaisenaan epäselvyyksiä osoittavat, että esiintyy peräkkäin. Tämä oli syynä käyttöön usean rajapinnan perintö. Tämä osittain ratkaisee olemassa olevia ongelmia, mutta ei kaikkia. Joten, kiitos periaatteita kapselointi ja monimuotoisuutta, rajapinnat voidaan toteuttaa onnistuneesti eri luokkiin erilaisten menetelmien mukaisesti (vaikka heillä on sama nimi). Mutta älä unohda olemassa olevia ongelmia. Joten, kun työskennellään useita liitäntöjä on aina määritellä, kuka meillä on mielessä. Lisäksi ongelmia on ja kun yrität työskennellä samanniminen kahdella tavalla - tässä tapauksessa ne eivät voi hyödyntää. Siksi tällaisissa tapauksissa on tarpeen huolehtia läsnäolon kokonaismyynnistä.
abstraktien tietojen
Tämä konsepti on avain ohjelmaan. Tässä tapauksessa täytetään abstraktio riippumattoman arvioinnin ja ymmärtää erottaminen käyttöliittymän ja toteutuksen. Katsotaanpa esimerkki. Meillä on televisio, joka on tarkoitus tai moduuli. Se on rajapinta. Sellaisenaan ne ovat valvonta, sekä äänen ja kuvan. Täydellisempi liitäntää käytetään, sitä enemmän mukava television käytössä. Voimme siirtyä ohjelmasta toiseen painamalla mitä tahansa näppäintä. Tällöin ei tarvitse miettiä fysikaalisia prosesseja TV. Huolehtia heistä asiantuntijoita, jotka keräävät laite. Haluamme ihmiset ovat kiinnostuneita vain ominaisuuksia. Palatakseni ohjelmoinnin, voimme sanoa, että ne ovat samanlainen käyttöliittymä ja toteutus. Lisäksi, jos henkilö on varma hänen tietämättään, hän voi "poistaa" kattaa -niminen televisio ja parantaa sitä. Vaikka tämä voi johtaa paikalliseen menestykseen, useimmissa tapauksissa lopputulos on negatiivinen. Siksi tuettuja ohjelmointikieliä kiellon pääsyä ja piilottaa sisäosia abstraktien tietojen. Periaate Tämän mekanismin säädetään tapa estää tahallinen tai tahaton säätö sisäisiä osia. Ja kun puhutaan abstrakteja tietotyyppejä, keskimääräinen joukko joukko toimintoja, jotka voidaan suorittaa niihin.
esineet
Olemme jo nähneet abstrakti luokka ja rajapinta yleensä ja yleensä. Nyt yksityiskohtaisesti tietomme. Aloittaa kiinnittää huomiota esineitä. Niiden alapuolella, yleensä tietoisia ympäristön todellisuutta, joka on olemassa tilaa ja aikaa. Mutta täsmentämällä esineitä ohjelman sisällä on vaikeaa (filosofisiin ja teoreettisesta näkökulmasta). Siksi on ominaisuuksiensa takia. Esimerkiksi seuraavat: esine voidaan yksilöidä (jossa on yksilöllinen nimi), se on tietyssä tilassa ja käyttää tietyn mallin käyttäytyminen.
perintö
Koska ohjelma perustuu hierarkiapuu rakennuksen suhteita esineiden, esitetään kysymys siitä, että taustalla ominaisuudet tyyppisiä aikuisvalvontakoodi kirjastot siirrettiin. Alle perintö ymmärtää suhde, kun joku saattaa toistaa käyttäytymistä ja rakennetta jotain muuta. Tavallisessa elämässä, se on kaikkialla. Tällaiset lykättiin ja ohjelmointi suhteellisen abstrakteja elementtejä. Vertailun vuoksi, että ei ole olemassa sellaista elin kuin lintu. Tämä on abstrakti nimi. Erityisenä johtaa esimerkiksi teetä, Nightingale tai varpunen. Kiitos perintö voimme käyttää luokkakirjastot sekä kehittää niitä jonkin tietyn ohjelman. Tämän työkalun avulla voimme luoda uusia kohteita, lisäämällä samanaikaisesti tai ominaisuuksia muuttamalla jo luotu. Perillinen saa kaikki menetelmät ja pellot hänen esi ja hankkii omia ominaisuuksia tarvittaessa. Johtuen siitä, että on olemassa abstrakteja elementtejä ja periaatetta kulttuuriperinnön, on olemassa runsaasti mahdollisuuksia muutos sisällä olio-ohjelmointi. Lisäksi se mahdollistaa joustavan lähestymistavan ratkaisemaan ongelmia. Kun perivät uuden luokan siirretyn datan ja toimintoja.
polymorfismi
On tarpeen soveltaa samaa toimintoa ratkaista erilaisia ongelmia. Tässä tapauksessa säädetään läsnä mahdollisuus eri toiminta, jonka sisältö riippuu objektin tyypin kanssa, joka työ tehdään. Alle polymorfismi ymmärtää ominaisuudet elementtejä, joilla on yhteinen vanhempi, tehdä samanlainen semanttinen merkitys ongelman eri tavoin. Me rinnastavat eläinten kanssa. On toiminta - juosta. Me kaikki tiedämme, miten se tapahtuu. Mutta eri eläimiä (leijona, elefantti, simpanssi, krokotiili, kilpikonna) tämä toiminta toteutetaan eri tavoin. Tällöin niiden liike on vastuullinen kehittäjä, joka tarvittaessa voi aiheuttaa tiettyä tapauksessa tietty rutiini, algoritmi ja sen täytäntöönpanoa onnistuneesti. Tämä tehdään joukko menetelmiä. Samaan aikaan kunkin luokan ohjelmoija määrittelee, mikä objekti ominaisuuksia, jotka ovat ominaisia. Jonkin muuttamista jälkeläisissä, voit saavuttaa tiettyjä, haluttu toiminto tässä tapauksessa. Tällainen vaikutus on nimeltään polymorfismi esineitä. Yleensä abstrakti luokka on erittäin hyödyllinen työkalu ohjelmointiin.