Abstraktni razred proti razredu betona
Večina priljubljenih sodobnih objektno usmerjenih programskih jezikov, kot sta Java in C #, temelji na razredih. Z uporabo razredov dosegajo objektno usmerjene koncepte, kot so kapsulacija, dedovanje in polimorfizem. Razredi so abstraktna predstavitev predmetov iz resničnega sveta. Razredi so lahko konkretni ali abstraktni, odvisno od stopnje izvajanja funkcionalnosti njihovih metod. Konkretni razred v celoti izvaja vse svoje metode. Abstraktni razred je mogoče obravnavati kot omejeno različico navadnega (konkretnega) razreda, kjer lahko vsebuje delno izvedene metode. Običajno se konkretni razredi imenujejo (samo) razredi.
Kaj je betonski razred?
Privzeti razred je konkreten razred. Ključna beseda razreda se uporablja za definiranje razredov (npr. V Javi). In ponavadi jih preprosto imenujemo razredi (brez pridevnika konkretni). Konkretni razredi prikazujejo konceptualno predstavitev predmetov iz resničnega sveta. Razredi imajo lastnosti, imenovane atributi. Atributi se izvajajo kot globalne in primerke spremenljivk. Metode v razredih predstavljajo ali opredeljujejo vedenje teh razredov. Metode in atributi razredov se imenujejo člani razreda. Običajno je kapsulacija dosežena tako, da atributi postanejo zasebni, hkrati pa ustvarijo javne metode, ki jih je mogoče uporabiti za dostop do teh lastnosti. Predmet je primerek razreda. Dedovanje uporabniku omogoča razširitev razredov (imenovanih podklasi) iz drugih razredov (imenovanih super klase). Polimorfizem omogoča programerju, da zamenja objekt razreda namesto predmeta njegovega super razreda. Običajno samostalniki, ki jih najdemo v definiciji problema, postanejo razredi v programu. In podobno glagoli postanejo metode. Javni, zasebni in zaščiteni so tipični modifikatorji dostopa, ki se uporabljajo za razrede.
Kaj je abstraktni razred?
Abstraktni razredi so deklarirani z uporabo ključne besede Abstract (npr. V Javi,). Običajno razredov Abstrakcije, znanih tudi kot Abstraktni osnovni razredi (ABC), ni mogoče instancirati (primerka tega razreda ni mogoče ustvariti). Torej, abstraktne razrede je smiselno imeti le, če programski jezik podpira dedovanje (zmožnost ustvarjanja podrazredov iz razširitve razreda). Abstraktni razredi ponavadi predstavljajo abstraktni koncept ali entiteto z delnim izvajanjem ali brez njega. Zato abstraktni razredi delujejo kot nadrejeni razredi, iz katerih izhajajo otroški razredi, tako da bo nadrejeni razred delil nepopolne lastnosti nadrejenega razreda, za dokončanje pa jih je mogoče dodati funkcionalnosti.
Izvlečki lahko vsebujejo abstraktne metode. Podklasi, ki razširjajo abstraktni razred, lahko izvajajo te (podedovane) Abstraktne metode. Če otroški razred izvaja vse take abstraktne metode, postane konkreten razred. Če pa tega ne, postane tudi razred otroka abstraktni razred. Vse to pomeni, da ko programer nominira razred za izvleček, pravi, da bo razred nepopoln in da bo imel elemente, ki jih morajo izpolniti podedovalni podklasi. To je lep način za ustvarjanje pogodbe med dvema programerjema, ki poenostavlja naloge pri razvoju programske opreme. Programer, ki napiše kodo za dedovanje, mora natančno slediti definicijam metod (seveda pa ima lahko tudi lastno izvedbo).
Kakšna je razlika med abstraktnim in betonskim razredom?
Abstraktni razredi imajo navadno delno izvedbo ali jih sploh ni. Po drugi strani pa konkretni razredi vedno v celoti izvajajo njegovo vedenje. Za razliko od konkretnih razredov abstraktnih razredov ni mogoče instancirati. Zato je treba razširiti abstraktne razrede, da bodo lahko uporabni. Abstraktni razredi lahko vsebujejo abstraktne metode, konkretni pa ne. Ko je abstraktni razred razširjen, se podedujejo vse metode (abstraktne in konkretne). Podedovani razred lahko izvaja katere koli ali vse metode. Če vse abstraktne metode niso izvedene, potem ta razred postane tudi abstrakten razred.