Writing /home/infogasy/domains/wiki.infogasy.net/public_html/data/cache/9/943a49d2cdb302a456e92ff6ce66d742.xhtml failed

Andao hiresaka Objet indray V

Ny fandovana na Heritage ao amin'ny tontolo Java

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 :

  • Ny antsona hoe : Encapsulation ; raha hazavaina tsotra dia ireo izay efa nandramantsika raha nanorina ilay ohatra praograma efa vitantsika hatreto ; izany hoe : faritana tsara ilay toetra anatiny tokony ananan’ilay Objet, ary dia aorina manodidina azy, ao anatin’ilay classe-na Objet ireo hetsika na methode izay misy ireo code ampiharana ireo algorithme maro efa nahazatra hatrizay raha hanoratra praograma informatika ianao.
  • Ny antsoina hoe : Heritage na ilay fandovana izany. Io indray ny tena fotokeviny dia izao : matetika isika rehefa manorina classe-na Objet maro dia tsapa fa misy toetra na hetsika mitovy karazana sy famaritana iraisan’ny classe sasany. Raha ny fiasan’ireo classe ireo aloha dia tsy olana io, fa kosa rehefa be loatra izay fisehoan-javatra izay amin’ireo vondrona classe manorina ny praograma aorinao, dia lasa be tsy ahoana ireo code soratanao miverimberina, nefa hita fa misy fomba mety handravonana azireny, ka soratana indray maka fotsiny dia ampy ho an’ny classe rehetra manana ilay toetra io fomba io.

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:

  • Ny antsoina hoe Polymorphisme; izay araka ny anarany, dia hoe ny Objet-ny classe iray rehefa tena miasa dia mety afaka maka endrika Objet-na classe hafa koa rehefa misy ireo andalam-pifandraisana mifampiampita maro be amin’ireo classe, napetraky ny heritage narafitrao na efa nirafitra any anaty API ampiasainao any, dia misy ny fakana endrika miakatra na upcasting, ary mety misy koa ny midina na downcasting. Tsy misy olana na ambiguite ny amin’io amin’ny Java, satria tsy ekena ny heritage multiple, ka dia mazava tsara izany ny tiana ho soritana rehefa miasa ny polymorphisme.
  • Ny antsoina hoe; Liaison dynamique (Dynamic binding), iazy miasa kosa amin’ny fampiasana ireo hetsika maro any anaty classe mifandray amin’ny alalan’io heritage io

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 )


Lahatsoratra Java

 

andaohiresakaobjetfahav.txt · Novaina farany:: 2008/09/11 12:43