Skirtumas tarp abstrakčios klasės ir sąsajos

Anotacija klasė ir sąsaja

Anotacinė klasė (arba tipas) yra nominacinio tipo sistemos tipas, kurį deklaruoja programa. Nors pavadinimas taip suponuoja, abstrakčioji klasė gali apimti abstrakčius metodus ar savybes. Skirstymo klasė nurodo skirtingas kalbos konstrukcijas, kurios gali būti naudojamos įgyvendinant abstrakčius tipus. Abstrakčioms klasėms gali būti būdinga dizaino problema, kuri geriausiai atitinka objektų programavimą, ir jų nebaigtos prigimties.

Sąsaja yra abstraktus tipas, kurį klasės turi įgyvendinti, kad būtų apibrėžta sąsaja (bendrai tariant). Sąsajose gali būti tik metodo parašai ir pastovios deklaracijos (tiek statinės, tiek galutinės), niekada nebūna metodo apibrėžimų. Sąsajos modeliuoja kelis paveldėjimus ir yra naudojamos koduoti panašumus, dalijamus įvairių tipų klasėmis.

Abstrakčius tipus galima sukurti, reikšti arba imituoti keliais skirtingais būdais. Programuotojas gali reikšti abstrakčius tipus, aiškiai naudodamas raktinį žodį abstraktus, įtraukdamas vieną ar kelis metodus į klasės apibrėžimą, paveldėdamas iš kito abstraktaus tipo, neperleisdamas trūkstamų savybių, būtinų klasės apibrėžimui užpildyti, arba siųsdamas tam tikrą metodą į objektą orientuotam programavimo kalba, vadinama šia, kuri tiesiogiai neįgyvendina metodo.

Sąsajos gali būti apibrėžtos naudojant abstrakčius metodus. Klasės taip pat gali būti įgyvendinamos sąsajose. Jei klasė įgyvendina sąsają ir neįgyvendina visų jos metodų, reikia naudoti signifikatoriaus santrauką, kitaip tas signifikatorius nėra būtinas (nes visos sąsajos iš esmės yra abstrakčios). Klasės taip pat gali įgyvendinti kelias sąsajas.

Nors sąsajos yra naudojamos bendroms sąsajoms nurodyti, abstraktūs tipai gali būti naudojami apibrėžti ir vykdyti protokolą (tai yra operacijų rinkinys, kurį turi palaikyti visi objektai, įgyvendinantys norimą protokolą). Abstraktūs tipai nepasitaiko kalbose be potipių. Kadangi tokie potipiai yra priversti įgyvendinti visas reikalingas funkcijas, užtikrinant programos vykdymo teisingumą. Abstrakčius tipus galima sukurti keliais būdais: pilnos abstrakčiosios bazinės klasės yra klasės, kurios arba aiškiai deklaruojamos kaip abstrakčios, arba apima abstrakčius (neįgyvendintus) metodus; Į bendrąsias „Lisp“ objektų sistemas įeina mišiniai, kurių pagrindą sudaro skonių sistema; Java, žinoma; ir bruožai, kurie yra pratęsimas Smalltalk.

Santrauka:
1. Abstrakčios klasės (arba tipai) deklaruoja programas; sąsajos yra abstraktūs tipai, kuriuos visos klasės turi įdiegti, kad nurodytų savo sąsają.
2. Abstraktūs tipai gali būti žymimi naudojant raktinį žodį; sąsajos iš esmės yra abstrakčios, todėl jų nereikia žymėti naudojant raktinį žodį (nebent konkreti klasė įgyvendina sąsają, bet neįgyvendina visų jos metodų).