Abstrakti luokka ja liitäntä

Anonim

Abstrakti luokka vs. käyttöliittymä

Abstrakti luokka (tai tyyppi) on tyypiltään ilmoittama tyyppi-järjestelmässä, jonka ohjelma ilmoittaa. Vaikka nimi merkitsee tällaista, abstraktilla luokalla voi olla myös abstrakteja menetelmiä tai ominaisuuksia. Erotusluokka viittaa erilaisiin kielirakenteisiin, joita voidaan käyttää abstraktien tyyppien toteuttamiseen. Tiivistelmäkursseille voidaan luonnehtia suunnittelukysymys, joka pysyy parhaalla esineohjelmasuunnittelulla ja keskeneräisillä luonteellaan.

Rajapinta on abstrakti tyyppi, jonka luokkien on toteutettava rajapinnan määrittämiseksi (yleisesti ottaen). Liitännät voivat sisältää vain menetelmän allekirjoituksia ja vakioilmoituksia (sekä staattisia että lopullisia), ei koskaan menetelmämääritelmiä. Liitännät simuloivat useita perintöjä ja niitä käytetään eri tyyppisten luokkien yhteisten samankaltaisuuksien koodaamiseen.

Tiivistetyypit voidaan luoda, merkitä tai simuloida useilla eri tavoilla. Ohjelmoija voi merkitä abstrakteja tyyppejä käyttämällä avainsanaa abstraktia nimenomaisesti sisällyttämällä yhden tai useamman menetelmän luokan määritykseen, perimällä toisesta abstraktista tyypistä ilman ylivoimaista puuttuvia ominaisuuksia, jotka ovat välttämättömiä luokan määritelmän täyttämiseksi tai lähettämällä tietyn menetelmän objektin suuntautuneelle ohjelmointikieli, joka tunnetaan nimellä, joka ei suorita menetelmää suoraan.

Liitännät voidaan määritellä abstraktin menetelmin. Luokkia voidaan myös toteuttaa rajapinnoissa. Jos luokka toteuttaa rajapinnan ja ei toteuta kaikkia sen menetelmiä, on käytettävä merkitsijätiivistelmää, muuten merkinantoa ei tarvita (koska kaikki rajapinnat ovat luontaisesti abstrakteja). Luokat voivat myös toteuttaa useita käyttöliittymiä.

Vaikka rajapintoja käytetään yleisten rajapintojen määrittämiseen, abstrakteja tyyppejä voidaan käyttää määritellä ja valvoa protokollaa (joka on joukko toimintoja, joiden kaikkien objektien, jotka toteuttavat halutun protokollan, täytyy tukea). Tiivistetyypit eivät näy kielillä, joissa ei ole subtypingiä. Koska tällaiset alatyypit pakotetaan toteuttamaan kaikki tarvittavat toiminnot, varmistaen ohjelman suorituksen oikeellisuuden. On olemassa useita tapoja, joilla voidaan luoda abstrakteja tyyppejä: täysi abstrakti perusluokat ovat luokkia, jotka joko nimenomaisesti julistetaan abstraktiksi tai sisältävät abstrakteja (toteuttamattomia) menetelmiä; Yhteiset Lisp-objektijärjestelmät sisältävät Fusion-järjestelmään perustuvia sekoituksia; Java, tietenkin; ja piirteet, jotka toimivat laajennuksena Smalltalkille.

Yhteenveto: 1. Tiivistelmäluokat (tai tyypit) julistavat ohjelmia; rajapinnat ovat abstrakteja tyyppejä, joita kaikkien luokkien on toteutettava määrittäessään niiden käyttöliittymän. 2. Tiivistetyypit voidaan merkitä käyttämällä avainsanaa nimenomaisesti; rajapinnat ovat luonnostaan ​​abstraktteja, joten niitä ei tarvitse merkitä avainsanan avulla (ellei tietty luokka implementoi käyttöliittymää, mutta ei käytä kaikkia sen menetelmiä).