Abstract Class vs Interface
Darasa la Muhtasari na Kiolesura ni miundo miwili inayolenga kitu inayopatikana katika lugha nyingi za upangaji zinazolenga vitu kama vile Java. Darasa la mukhtasari linaweza kuzingatiwa kama toleo dhahania la darasa la kawaida (halisi), wakati kiolesura kinaweza kuzingatiwa kama njia ya kutekeleza mkataba. Darasa la muhtasari ni darasa ambalo haliwezi kuanzishwa lakini linaweza kupanuliwa. Interface ni aina ambayo inapaswa kutekelezwa na madarasa mengine. Katika Java, madarasa ya Muhtasari hutangazwa kwa kutumia neno kuu la Muhtasari, huku neno kuu la kiolesura linatumika kufafanua kiolesura.
Darasa la Muhtasari ni nini?
Kwa kawaida, madarasa ya Muhtasari, pia yanajulikana kama Madarasa ya Msingi ya Kikemikali (ABC), hayawezi kuanzishwa (mfano wa darasa hilo hauwezi kuundwa). Kwa hivyo, madarasa ya Kikemikali yana maana tu kuwa nayo ikiwa lugha ya programu inasaidia urithi (uwezo wa kuunda aina ndogo kutoka kwa kupanua darasa). Madarasa ya mukhtasari kwa kawaida huwakilisha dhana dhahania au huluki yenye utekelezaji wa sehemu au bila. Kwa hivyo, madarasa ya Muhtasari hufanya kama madarasa ya wazazi ambayo madarasa ya watoto yanatokana ili darasa la mtoto lishiriki vipengele visivyokamilika vya darasa la mzazi na utendaji unaweza kuongezwa ili kuyakamilisha.
Madarasa ya muhtasari yanaweza kuwa na mbinu za Muhtasari. Madarasa madogo yanayopanua darasa la dhahania yanaweza kutekeleza njia hizi (zilizorithiwa) Muhtasari. Ikiwa darasa la watoto litatumia njia zote kama hizi za Muhtasari, ni darasa halisi. Lakini ikiwa haifanyi hivyo, darasa la watoto pia linakuwa darasa la Muhtasari. Maana yake yote ni kwamba, wakati mpangaji programu anateua darasa kama Muhtasari, anasema kwamba darasa halitakuwa kamili na litakuwa na vitu ambavyo vinahitaji kukamilishwa na mada ndogo zinazorithi. Hii ni njia nzuri ya kuunda mkataba kati ya watengeneza programu wawili, ambayo hurahisisha kazi katika ukuzaji wa programu. Mpangaji programu, ambaye huandika msimbo ili kurithi, anahitaji kufuata ufafanuzi wa mbinu haswa (lakini bila shaka anaweza kuwa na utekelezaji wake mwenyewe).
Kiolesura ni nini?
Kiolesura ni aina dhahania ambayo hutumiwa kubainisha mkataba ambao unapaswa kutekelezwa na madarasa, ambayo yanatekeleza kiolesura hicho. Neno kuu la kiolesura hutumika kufafanua kiolesura na Utekelezaji neno kuu hutumika kutekeleza kiolesura cha darasa (katika lugha ya programu ya Java). Kawaida, kiolesura kitakuwa na saini za mbinu tu na matamko ya mara kwa mara. Kiolesura chochote kinachotekelezea kiolesura fulani kinapaswa kutekeleza mbinu zote zilizofafanuliwa kwenye kiolesura, au kinapaswa kutangazwa kama darasa dhahania. Katika Java, aina ya kumbukumbu ya kitu inaweza kufafanuliwa kama aina ya kiolesura. Lakini kitu hicho lazima kiwe batili au kinapaswa kushikilia kitu cha darasa, ambacho hutekelezea kiolesura hicho. Kwa kutumia neno kuu la Utekelezaji katika Java, unaweza kutekeleza miingiliano mingi kwa darasa moja.
Kuna tofauti gani kati ya Muhtasari wa Darasa na Kiolesura?
Madarasa ya mukhtasari kwa kawaida huwakilisha dhana dhahania au huluki yenye utekelezaji wa sehemu au usio na sehemu. Kwa upande mwingine, kiolesura ni aina ya dhahania ambayo hutumiwa kutaja mkataba ambao unapaswa kutekelezwa na madarasa. Madarasa ya muhtasari yanapaswa kurithiwa (au kupanuliwa), huku violesura vinapaswa kutekelezwa. Madarasa ya mukhtasari yanaweza kuwa na mbinu dhahania, ilhali kiolesura kinapaswa kuwa na mbinu dhahania pekee. Madarasa ya muhtasari yanaweza kuwa na viwezo vyovyote, lakini Violesura vinaweza tu kufafanua viunga. Darasa haliwezi kurithi kutoka kwa zaidi ya darasa moja la dhahania lakini linaweza kutekeleza miingiliano mingi. Kiolesura hakiwezi kutekeleza kiolesura kingine. Hata hivyo kiolesura kinaweza kupanua darasa.