Abstrakčių klasė prieš betono klasę
Dauguma populiarių šiuolaikinių objektinio programavimo kalbų, tokių kaip „Java“ ir „C #“, yra paremtos klase. Naudodamiesi klasėmis jie pasiekia į objektą orientuotas sąvokas, tokias kaip kapsuliacija, paveldimumas ir polimorfizmas. Klasės yra abstraktus realaus pasaulio objektų vaizdas. Klasės gali būti konkrečios arba abstrakčios, atsižvelgiant į jų metodo funkcijų įgyvendinimo lygį. Betono klasė visiškai įgyvendina visus savo metodus. Abstrakti klasė gali būti laikoma ribota įprastos (konkrečios) klasės versija, kurioje gali būti iš dalies įgyvendintų metodų. Paprastai konkrečios klasės yra vadinamos (teisingomis) klasėmis.
Kas yra betono klasė?
Numatytoji klasė yra konkreti klasė. Klasės raktinis žodis naudojamas apibrėžti klases (pvz., „Java“). Ir paprastai jie paprasčiausiai vadinami klasėmis (be būdvardžio konkretaus). Konkrečios klasės vaizduoja konceptualų realaus pasaulio objektų vaizdavimą. Klasės turi savybes, vadinamas atributais. Atributai įgyvendinami kaip visuotiniai ir egzempliorių kintamieji. Klasių metodai parodo arba apibūdina šių klasių elgesį. Užsiėmimų metodai ir požymiai vadinami klasės nariais. Paprastai inkapsuliacija pasiekiama padarant atributus privačius, o sukuriant viešus metodus, kuriuos galima naudoti tiems atributams pasiekti. Objektas yra klasės pavyzdys. Paveldimumas leidžia vartotojui išplėsti klases (vadinamas antrinėmis klasėmis) iš kitų klasių (vadinamų superklasėmis). Polimorfizmas leidžia programuotojui pakeisti klasės objektą vietoje savo superklasės objekto. Paprastai problemos apibrėžime rasti daiktavardžiai programoje tiesiogiai tampa klasėmis. Panašiai veiksmažodžiai tampa metodais. Vieši, privatūs ir saugomi yra tipiniai prieigos modifikatoriai, naudojami klasėse.
Kas yra abstrakčių klasė?
Anotacinės klasės deklaruojamos naudojant „Abstract“ raktinį žodį (pvz., „Java“). Paprastai abstrakčiosios klasės, taip pat žinomos kaip „Abstract Base Classes“ (ABC), negali būti realizuotos (tos klasės egzemplioriaus sukurti negalima). Taigi abstrakčiosios klasės turi prasmę tik tuo atveju, jei programavimo kalba palaiko paveldėjimą (galimybė kurti poklasius pratęsiant klasę). Abstrakčios klasės paprastai reiškia abstrakčią sąvoką ar subjektą, iš dalies arba visai neįdiegtus. Todėl abstrakčios klasės veikia kaip tėvų klasės, iš kurių išvedamos vaikų klasės, kad vaikų klasė pasidalintų neišsamiomis tėvų klasės ypatybėmis, ir, norint jas papildyti, gali būti pridedamos funkcijos.
Abstrakčių klasėse gali būti abstrakčių metodų. Poklasiai, praplečiantys abstrakčią klasę, gali įgyvendinti šiuos (paveldėtus) abstrakčių metodus. Jei vaikų klasė įgyvendina visus tokius abstrakčius metodus, ji tampa konkrečia klase. Bet jei taip nėra, vaikų klasė taip pat tampa abstrakčia klase. Visa tai reiškia, kad kai programuotojas paskiria klasę kaip santrauką, ji sako, kad klasė bus neišsami ir joje bus elementų, kuriuos turi užpildyti paveldintys poklasiai. Tai puikus būdas sudaryti sutartį tarp dviejų programuotojų, o tai supaprastina programinės įrangos kūrimo užduotis. Programuotojui, rašančiam kodą paveldėti, reikia tiksliai laikytis metodo apibrėžimų (bet, žinoma, jis gali turėti savo įgyvendinimą).
Kuo skiriasi abstrakčiosios klasės ir betono klasės?
Abstraktūs užsiėmimai paprastai įgyvendinami iš dalies arba jų visai nėra. Kita vertus, konkrečios klasės visada visiškai supranta savo elgesį. Skirtingai nuo konkrečių klasių, abstrakčios klasės negali būti įgyvendinamos akimirksniu. Todėl abstrakčias klases reikia pratęsti, kad jos būtų naudingos. Abstrakčiosiose klasėse gali būti abstrakčių metodų, tačiau konkrečios klasės negali. Išplečiant abstrakčią klasę, paveldimi visi metodai (tiek abstraktieji, tiek konkretieji). Paveldima klasė gali įgyvendinti bet kurį arba visus metodus. Jei visi abstraktūs metodai nėra įgyvendinami, ta klasė taip pat tampa abstrakčia klase.