Kaj je abstraktni razred?

V objektno usmerjenem programiranju abstraktni razred zagotavlja osnovni razred, ki se lahko uporablja za zagotavljanje drugih razredov z delno implementacijo in vmesnikom. Sami po sebi so nepopolni in se uporabljajo v situacijah dedovanja v številnih programskih jezikih, kot so Java, C++ in C#. Njihova uporaba kot osnovni razred pomeni, da se pogosto imenujejo abstraktni osnovni razred (ABC).

Sestavni del objektno usmerjenega programiranja, abstrakcija podatkov odstrani nepotrebne podrobnosti predmeta. V bistvu spelje predmet do njegovih glavnih identifikacijskih značilnosti. Te osnovne značilnosti zagotavljajo načrt, ki ga je mogoče uporabiti za ustvarjanje drugih predmetov z enakimi lastnostmi, ki se razlikujejo le v podrobnostih.

Ta načrt je opredeljen kot razred. Razredi se uporabljajo za enkapsulacijo kode, kar olajša programerju, ker se lahko sklicuje na določene običajne rutine, namesto da bi jih pisal znova in znova. Programerji ustvarjajo podrejene objekte iz razredov in ti objekti podedujejo funkcije in metode znotraj nadrejenega razreda.

Namen abstraktnega razreda je biti okvir, na katerem so zgrajeni drugi razredi. Objektov ni mogoče ustvariti neposredno iz abstraktnega razreda, le iz podrazredov, ki pripadajo abstraktnemu razredu. Da bi predmet podedoval iz abstraktnega razreda, je treba ustvariti podrazred. Objekti ustvarjenega podrazreda abstraktnega razreda podedujejo lastnosti tega abstraktnega razreda.

Vsak razred modelira koncept, abstraktni razredi pa težijo k modeliranju bolj abstraktnih konceptov z uporabo abstraktnih metod. Abstraktne metode so podprogrami znotraj abstraktnega razreda, ki ne vsebujejo nobene implementacije. Ti podprogrami se uporabljajo kot nadomestna mesta, ki jih prepiše podrazred ali objekt, zasnovan na podlagi razreda, ki vsebuje samo abstraktno metodo.

Obstajajo različne metode za ustvarjanje abstraktnega razreda. Na primer, v C++ se abstraktni razred ustvari z razvojem razreda z vsaj eno abstraktno metodo ali čisto virtualno funkcijo. Java uporablja ključno besedo »abstract« za označevanje abstraktnega razreda. Vendar pa niso opredeljeni v programskih jezikih, ki ne podpirajo ideje o dedovanju.
Dedovanje je proces ustvarjanja novih objektov iz razredov, kjer lahko novi objekti uporabljajo funkcije in metode, definirane v svojih nadrejenih razredih, ne da bi bilo treba znova postaviti program. Zato je abstraktni razred uporaben. Podrejeni razredi in podrejeni objekti teh podrazredov podedujejo lastnosti nadrejenega abstraktnega razreda. Abstraktni razredi se štejejo za nadrazrede in so na vrhu hierarhije strukture razredov, zato nimajo smisla v jeziku, ki ne podpira dedovanja.