Dia ahoana indray zany ny amin’ity kojy-na fandovana ity amin’ny Java ?
Tsara marihina ary aloha fa ireo toetra tokony hananan’ny fitaovana famoronana praograma informatika iray, raha toa mandala ny fotokevitra Objet izy dia ireto no tsy maintsy mipetraka mazava tsara :
Andao anie hojerentsika ireto rafitra classe ho foronintsika ireto e, ka mikasika ny resaka karazana fichier izay fampiasantsika matetika ihany no hatao ohatra akaiky :
Voalohany classe antsoina hoe TahirySoratraASCII :
public class TahirySoratraASCII { private String toerana; // Toerana misy ilay fichier private String anarana; // Anaran'ilay fichier private Object toetraManokanaASCII; // ity dia mbola tena tsy fantatra mazava aloha, ka dia io fotsiny !!! public TahirySoratraASCII(String toerana, String anarana, Object obj) // Constructeur an'ity classe ity { ............... } public hetsikaManokana(...) // Ireo hetsika manokana amin'ity classe ity { ............... } public hetsikaIraisana(...) // Ireo hetsika mitovy amin'ny any @ classe hafa ivelany { ............... } }
Faharoa: classe antsoina hoe TahiryByteCode:
public class TahiryByteCode { private String toerana; // Toerana misy ilay fichier private String anarana; // Anaran'ilay fichier private Object toetraManokanaByteCode; // Mbola tena tsy fantatra mazava aloha, ka dia io ihany !!! public TahiryByteCode(String toerana, String anarana, Object obj) // Constructeur an'ity classe ity { ............. } public hetsikaManokana(...) // Ireo hetsika manokana amin'ity classe ity { ............. } public hetsikaIraisana(...) // Ireo hetsika mitovy amin'ny any @ classe hafa ivelany { ............. } }
Fanamarihana kely : tsara fantatra aloha, sao hadino fa ; - ny classe public iray dia tsy maintsy tehirizina anaty fichier mitovy anarana amin’ilay classe ihany ; - ny hetsika constructeur na classe dia tsy maintsy mitovy anarana koa amin’ilay classe, fa ny isany no tsy voafetra, ary miavaka amin’ny isan’ny parametre ampidirina aminy ihany.
Hita ary fa lasa misy toetra na hetsika miverimberina ny fanoratana azy any anatin’ireo classe roa ireo (raha mihoatra ny roa moa dia vao maika zany voatery manao copier-coller maro !!).
Ny fandovana na heritage zany dia vaha-olana hialana amin’io toe-zavatra io, ary ny tetika dia ny hoe avondrona anaty classe iray ireo toetra na hetsika iraisana, ka ny sisa soratana any amin’ireo classe taloha, dia izay mampiavaka azy ihany amin’ny hafa. Azo atao hoe factorisation d’attributs et de methodes amin’ireo classe rehetra miara-miasa izany ilay izy e.
Lasa toa izao izany ny rafitra mety hanovana an’ity ohatra ity :
Antsoina hoe classe de base ny classe Tahiry eto amin’ity ohatra ity :
public class Tahiry { private String toerana; // Toerana misy ilay fichier private String anarana; // Anaran'ilay fichier public Tahiry(String toerana, String anarana) // Constructeur an'ity classe de base ity { ............... } public hetsikaIraisana(...) // Ireo hestika iraisana { ............... } }
Ilay classe TahirySoratraASCII:
public class TahirySoratraASCII extends Tahiry { private Object toetraManokanaASCII; // Mbola tena tsy fantatra mazava aloha, ka dia io ihany !!! public TahirySoratraASCII(String toerana, String anarana, Object obj) // Constructeur an'ity classe zanany ity na derivee { super(toerana, anarana); // Tsy maintsy atao ity raha tiana ho voatondro tsara ny mikasika ilay fichier. /* Ny anton'ilay super(...) eto dia milaza fa alefa any amin'ilay constructeur-ny classe de base ireo * argument ireo */ ............ } public hetsikaManokana(...) // Ireo hetsika manokana amin'ity classe ity { ............ } }
Ilay classe TahiryByteCode:
public class TahiryByteCode extends Tahiry { private Object toetraManokanaByteCode; // Mbola tena tsy fantatra mazava aloha, ka dia io ihany !!! public TahiryByteCode(String toerana, String anarana, Object obj) // Constructeur an'ity classe zanany ity na derivee { super(toerana, anarana); // Tsy maintsy atao ity raha tiana ho voatondro tsara ny mikasika ilay fichier. /* Ny anton'ilay super(...) eto dia milaza fa alefa any amin'ilay constructeur-ny classe de base ireo * argument ireo */ ............ } public hetsikaManokana(...) // Ireo hetsika manokana amin'ity classe ity { ............ } }
Raha voamarikao dia nosoratana hoe:
public class ClasseDerivee extends ClasseDeBase
ny fampifandraisana ilay classe roa taloha tamin’ilay classe iray vaovao izay namondronana ireo toetra na hetsika iraisan’izireo .Dia toa izany ary ny amin’io fandovana io raha atao tsotsotra ny fanazavana.
Na izany aza dia tiako ihany koa anefa ny manamarika, fa misy ireo toetra vokatr’io toetra fototra fandovana io ao anatin’ny fomba mifototra amin’ny Objet:
3. Ny antsoina hoe : Abstraction ; ity indray dia fahafahana sahady mametraka ny rafitra ankapobeny ny classe na ireo hetsika ao anatiny na dia mbola tsy hay mazava tsara aza ny ataon’ilay classe na ny hataon’ilay hetsika ao amin’ilay classe.
Araka ny hevitro dia io toetra mankatoa ny abstraction sy ny heritage io amin’ny tontolo Objet, dia anisan’ny hery lehibe ho azy, sy manamora koa ny fanorenan-javatra informatika, miandalan-tohatra midina, ka ny polymorphisme no mamela anao hitety ny andalana Objet mifandray na miakatra na midina amin’izany.
Raha ampiharina amin’ilay ohatra tetsy ambony mantsy izy io dia azo atao ohatra ny mieritreritra hoe: Ahoana ny hetsika tokony hatao rehefa manokatra ireo fichier isika (mety ho ASCII, na ByteCode) ?
Vaha-olana: Asiantsika hetsika antsoina hoe: manokatraTahiry(String toerana, String anarana) ao amin’ilay classe de base. Eto anefa dia mbola tsy haintsika mazava tsara ny fomba fanaovana io fanokafana io, satria miankina io amin’ny hoe ASCII ve ilay fichier sa ByteCode !
public class Tahiry { ............... public Object manokatraTahiry(String toerana, String anarana) // tsy misy inona atao zany eto an ! { } ............... }
Rehefa ampiharina ilay abstraction dia azo atao toa izao io hetsika io:
abstract public class Tahiry { ............... abstract public Object manokatraTahiry(String toerana, String anarana); ............... }
Izany hoe lasa abstract avy hatrany koa ilay classe Tahiry (azo heverina ho lojika io an !)
Dia izay ary aloha ny amin’ity resaka faha-5 ity, fa dia amin’ny manaraka indray
(Mbola hitohy )