Abstract Class vs Concrete Class
Karamihan sa mga sikat na modernong object oriented programming language tulad ng Java at C ay nakabatay sa klase. Nakakamit nila ang mga object oriented na konsepto tulad ng encapsulation, inheritance at polymorphism sa pamamagitan ng paggamit ng mga klase. Ang mga klase ay isang abstract na representasyon ng mga bagay sa totoong mundo. Ang mga klase ay maaaring maging konkreto o abstract depende sa antas ng pagpapatupad ng kanilang mga pag-andar ng pamamaraan. Ang isang kongkretong klase ay ganap na nagpapatupad ng lahat ng mga pamamaraan nito. Ang isang abstract na klase ay maaaring ituring bilang isang limitadong bersyon ng isang regular (kongkreto) na klase, kung saan maaari itong maglaman ng bahagyang ipinatupad na mga pamamaraan. Karaniwan, ang mga kongkretong klase ay tinutukoy bilang (lamang) mga klase.
Ano ang Concrete Class?
Ang default na klase ay isang kongkretong klase. Ang keyword ng klase ay ginagamit upang tukuyin ang mga klase (hal. sa Java). At kadalasan ang mga ito ay tinutukoy lamang bilang mga klase (nang walang konkretong pang-uri). Ang mga kongkretong klase ay naglalarawan ng konseptong representasyon ng mga bagay sa totoong mundo. Ang mga klase ay may mga katangian na tinatawag na mga katangian. Ang mga katangian ay ipinapatupad bilang mga global at instance na variable. Ang mga pamamaraan sa mga klase ay kumakatawan o tumutukoy sa pag-uugali ng mga klase na ito. Ang mga pamamaraan at katangian ng mga klase ay tinatawag na mga miyembro ng klase. Karaniwan, nakakamit ang encapsulation sa pamamagitan ng paggawa ng mga katangian na pribado, habang gumagawa ng mga pampublikong pamamaraan na maaaring magamit upang ma-access ang mga katangiang iyon. Ang isang bagay ay ang instance ng isang klase. Ang inheritance ay nagbibigay-daan sa user na mag-extend ng mga klase (tinatawag na mga sub class) mula sa ibang mga klase (tinatawag na super class). Pinapayagan ng polymorphism ang programmer na palitan ang isang object ng isang klase sa halip na isang object ng super class nito. Karaniwan, ang mga pangngalan na matatagpuan sa kahulugan ng problema ay direktang nagiging mga klase sa programa. At gayundin, ang mga pandiwa ay nagiging mga pamamaraan. Pampubliko, pribado at protektado ang mga karaniwang access modifier na ginagamit para sa mga klase.
Ano ang Abstract Class?
Ang mga abstract na klase ay idineklara gamit ang Abstract na keyword (hal. sa Java,). Karaniwan, ang mga Abstract na klase, na kilala rin bilang Abstract Base Classes (ABC), ay hindi maaaring i-instantiate (isang instance ng klase na iyon ay hindi maaaring gawin). Kaya, ang mga Abstract na klase ay makabuluhan lamang kung sinusuportahan ng programming language ang mana (kakayahang lumikha ng mga subclass mula sa pagpapalawak ng isang klase). Ang mga abstract na klase ay karaniwang kumakatawan sa isang abstract na konsepto o entity na may bahagyang o walang pagpapatupad. Samakatuwid, ang mga Abstract na klase ay gumaganap bilang mga parent class kung saan hinango ang mga child class para maibahagi ng child class ang mga hindi kumpletong feature ng parent class at maidaragdag ang functionality para makumpleto ang mga ito.
Ang mga abstract na klase ay maaaring maglaman ng mga Abstract na pamamaraan. Ang mga subclass na nagpapalawak ng abstract na klase ay maaaring magpatupad ng mga (minana) na pamamaraang Abstract na ito. Kung ang klase ng bata ay nagpapatupad ng lahat ng naturang Abstract na pamamaraan, ito ay magiging isang kongkretong klase. Ngunit kung hindi, ang klase ng bata ay magiging isang Abstract na klase. Ang ibig sabihin ng lahat ng ito ay, kapag ang programmer ay nag-nominate ng isang klase bilang isang Abstract, sinasabi niya na ang klase ay hindi kumpleto at magkakaroon ito ng mga elemento na kailangang kumpletuhin ng mga namamanang subclass. Ito ay isang magandang paraan upang lumikha ng isang kontrata sa pagitan ng dalawang programmer, na pinapasimple ang mga gawain sa pagbuo ng software. Ang programmer, na nagsusulat ng code upang mamana, ay kailangang sundin nang eksakto ang mga kahulugan ng pamamaraan (ngunit siyempre ay maaaring magkaroon ng sarili niyang pagpapatupad).
Ano ang pagkakaiba ng Abstract Class at Concrete Class?
Ang mga abstract na klase ay karaniwang may bahagyang o walang pagpapatupad. Sa kabilang banda, ang mga kongkretong klase ay laging may ganap na pagpapatupad ng pag-uugali nito. Hindi tulad ng mga kongkretong klase, ang mga abstract na klase ay hindi maaaring i-instantiate. Samakatuwid ang mga abstract na klase ay kailangang palawigin upang maging kapaki-pakinabang ang mga ito. Ang mga abstract na klase ay maaaring maglaman ng mga abstract na pamamaraan, ngunit ang mga kongkretong klase ay hindi maaaring maglaman. Kapag pinalawig ang isang abstract na klase, ang lahat ng mga pamamaraan (parehong abstract at kongkreto) ay minana. Ang minanang klase ay maaaring magpatupad ng anuman o lahat ng mga pamamaraan. Kung ang lahat ng abstract na pamamaraan ay hindi ipinatupad, ang klase na iyon ay magiging abstract na klase din.