Tiivistelmäluokka vs. betoniluokka
Suurin osa suosituista moderneista olio-ohjelmointikieleistä, kuten Java ja C #, ovat luokkapohjaisia. He saavuttavat oliokeskeiset käsitteet kuten kapseloinnin, perinnöllisyyden ja polymorfismin luokkien avulla. Luokat ovat abstrakti esitys todellisen maailman esineistä. Luokat voivat olla joko konkreettisia tai abstrakteja menetelmän toimintojen toteutustasosta riippuen. Betoniluokka toteuttaa kaikki menetelmänsä täysin. Abstraktia luokkaa voidaan pitää rajoitettuna versiona normaalista (konkreettisesta) luokasta, jossa se voi sisältää osittain toteutettuja menetelmiä. Tyypillisesti betoniluokille viitataan (vain) luokkina.
Mikä on betoniluokka??
Oletusluokka on konkreettinen luokka. Luokan avainsanaa käytetään luokkien määrittelemiseen (esim. Java). Ja yleensä niitä kutsutaan yksinkertaisesti luokiksi (ilman adjektiivia konkreettisia). Konkreettiset luokat kuvaavat todellisen maailman esineiden käsitteellistä esitystä. Luokilla on ominaisuuksia, joita kutsutaan attributeiksi. Attribuutit toteutetaan globaaleina ja esiintymämuuttujina. Luokkien menetelmät edustavat tai määrittelevät näiden luokkien käyttäytymistä. Luokkien menetelmiä ja ominaisuuksia kutsutaan luokan jäseniksi. Kapselointi saadaan tyypillisesti tekemällä attribuutit yksityisiksi, samalla kun luodaan julkisia menetelmiä, joita voidaan käyttää näiden ominaisuuksien käyttämiseen. Kohde on luokan esiintymä. Perintö antaa käyttäjälle mahdollisuuden laajentaa luokkia (joita kutsutaan alaluokiksi) muista luokista (joita kutsutaan superluokiksi). Polymorfismi antaa ohjelmoijalle mahdollisuuden korvata luokan esine sen superluokan kohteen sijasta. Tyypillisesti ongelmanmäärittelystä löytyvät substantiivit muuttuvat suoraan luokkiksi ohjelmassa. Ja samoin verbeistä tulee menetelmiä. Julkiset, yksityiset ja suojatut ovat tyypillisiä luokkien käyttömuokkaimia.
Mikä on tiivistelmäluokka??
Abstraktit luokat ilmoitetaan käyttämällä abstraktia avainsanaa (esim. Java,). Tyypillisesti abstrakteja luokkia, jotka tunnetaan myös nimellä abstraktit perusluokat (ABC), ei voida toteuttaa (kyseisen luokan esiintymää ei voida luoda). Joten, abstraktilla luokilla on merkitystä vain, jos ohjelmointikieli tukee perintöä (kyky luoda alaluokkia luokan laajentamisesta). Abstraktit luokat edustavat yleensä abstraktia käsitettä tai kokonaisuutta, jolla on osittainen toteutus tai jota ei ole toteutettu. Siksi abstraktit luokat toimivat vanhemmaluokkina, joista lastenluokat johdetaan, jotta lapsiluokalla on vanhemman luokan puutteelliset ominaisuudet, ja toiminnallisuus voidaan lisätä niiden suorittamiseen.
Abstraktit luokat voivat sisältää abstrakteja menetelmiä. Alaluokat, jotka laajentavat abstraktia luokkaa, voivat toteuttaa nämä (perinnölliset) abstraktit menetelmät. Jos lapsiluokka toteuttaa kaikki tällaiset abstraktit menetelmät, siitä tulee konkreettinen luokka. Mutta jos ei, lapsiluokasta tulee myös abstrakti luokka. Kaikki tämä tarkoittaa sitä, että kun ohjelmoija nimittää luokan abstraktiksi, hän sanoo, että luokka on epätäydellinen ja siinä on elementtejä, jotka on täytettävä perittävällä alaluokalla. Tämä on hieno tapa luoda sopimus kahden ohjelmoijan välillä, mikä yksinkertaistaa ohjelmistokehityksen tehtäviä. Ohjelmoijan, joka kirjoittaa koodin periäkseen, on noudatettava menetelmämääritelmiä tarkasti (mutta tietenkin sillä voi olla oma toteutus).
Mikä on ero abstraktin luokan ja betoniluokan välillä?
Abstraktiluokilla on yleensä osittainen toteutus tai sitä ei ole lainkaan. Toisaalta, betoniluokkien toiminta on aina täysin toteutettu. Toisin kuin konkreettiset luokat, abstrakteja luokkia ei voida toteuttaa. Siksi abstrakteja luokkia on laajennettava, jotta niistä tulisi hyödyllisiä. Abstraktit luokat voivat sisältää abstrakteja menetelmiä, mutta konkreettiset luokat eivät voi. Kun abstraktia luokkaa laajennetaan, kaikki menetelmät (sekä abstraktit että konkreettiset) periytyvät. Peritty luokka voi toteuttaa minkä tahansa tai kaikki menetelmät. Jos kaikkia abstrakteja menetelmiä ei toteuteta, siitä luokasta tulee myös abstrakti luokka.