Rehefa hitantsika ary izay ireo zava-dehibe tsara ho fantatra amin’ny fototra iorenan’ny antsoina hoe: Fanorenana informatika miantehitra amin’ny modely Objet , dia andao ary hampiantsika fanazavana kely ireo fampiasana nataontsika hatreto amin’ity resaka Objet amin’ny tontolo Java ity.
Marihiko ihany moa na izany aza fa raha atao dika tsotra dia ireo fototra ireo no voapetaka anarana ankehitriny hoe POJO (Plain Old na Ordinary Java Object). Ny antony aloha raha ny fandinihako manokana dia satria tena efa betsaka ireo lalana maro misandrahaka mitarika ity teknolojia objet amin’ny Java ity, ka mba tsy hialana amin’ilay fototra lehibe niaingany tany amboalohany dia voafaritra hoa azy io POJO io (tsy spec izy io, satria tsy i Sun no nametraka azy, fa ireo mpitrandraka Java eran-tany no toa niray feo hoe POJO izany ilay niandohana, dia izay fotsiny !).
Koa dia haintsika izany ireo fototra telo lehibe ifotoran’ny fitaovam-panorenana miantehitra amin’ny fiatrehan’asa manatomotra Objet :
Koa raha jerentsika ary ireto sombina fampiasana efa nataontsika ireto, dia inona no azo ambara ?
public class ZavatraAzoKajiana { private Object sanda; // toetran'ilay objet ........... public Object kajyAdisanina(double sandaHafa) // fomba fanao raha reel no atao adisanina { Double d = (Double)getSanda(); return new Double(d.doubleValue()+sandaHafa) ; } public Object kajyAdisanina(String sandaHafa) // fomba fanao raha chaine no atao adisanina { String s = (String)getSanda(); return s.concat(sandaHafa); } ................... }
Tsara marihina fa amin’ny tontolo Java dia misy ireo antsoina hoe : karazana tranainy (type primitif) toy ny int, float, double, byte, short, char, long sns , izireo anefa dia manana koa ireo kilasy fonosana azon’izireo itoerana antsoina hoe kilasy wrapper : Integer, Float, Double, sns .Ireto farany ireto dia manana ny toetra fototra ananan’ny kilasy-na Objet rehetra ihany. Ny String moa dia tsy azo atao hoe karazana tranainy (type primitif) , satria izy dia efa voafaritra manana ny toetra-na kilasy-na Objet avy hatrany ao anaty API-ny Sun. *
Dia izao ary no hitantsika ao anaty fampiasana :
public Object kajyAdisanina(double sandaHafa) { Double d = (Double)getSanda(); return new Double(d.doubleValue()+sandaHafa) ; }
Fanazavana:
Fantatra fa ilay hetsika getSanda() dia mamerina Object ; isika anefa mila kajy amina isa reel (double), io anefa dia karazana tranainy, ka noho izany dia tsy maintsy isika izany mampiasa ilay kilasy fonosana mety misy azy io: Double . Dia izay no mahatonga ilay hoe: Double d = (Double) . . Araka ny voalaza anefa dia satria ny kilasy Object no fara-tampony amin’ny kilasy Java, izany hoe ao ambaniny ny Double , noho izany dia miasa izany eto ny POLYMORPHISME karazana midina ( downcasting ). Io anefa dia misy asa anatiny ao manamarina ilay fifanandrifiana mety (ohatra mantsy ka karazana soratra ny ao anaty sanda kirakirainao dia tsy manome vokatra mety ilay downcasting eto ao amin’io hetsika io ! mila mitandrina amin’io !)
Etsy andaniny ilay hetsika Object kajyAdisanina(double sandHafa) dia mandray parametre isa reel (double), karazana tranainy ( tsy maintsy fonosina anaty kilasy Double koa izany i lery !); mazana mantsy mora kokoa ny mampiditra ireo parametre ho karazana tranainy fa manakaiky ny filana ivelany (client) ny toa izany. Eto izany dia hatao ny adisanina isa reel roa: sandaHafa sy ilay isa reel voafono anaty kilasy Double antsoina hoe d (mitovitovy fa tsy sahala, k’ity !) Dia ahoana izany ? . Tsotra : raha jerena ny hetsika misy ao anaty API-ny Sun mikasika ny kilasy Double , dia misy ao iray antsoina hoe : public double doubleValue() izy io dia mamerina double iray voafono amin’ilay Objet noforonina tamin’ilay kilasy Double ! ⇒ dia azo atao tsara izany ny kajy : d.doubleValue()+sandaHafa.
Fa mbola tsy vita ny amin’io satria fantatsika koa fa io hetsika kajyAdisanina(..) io dia mamerina Object , isika anefa mahazo ao anitin’ilay hetsika, vokatra tiana havoaka, fa saingy karazana double ! Dia tsy maintsy miantso ny POLYMORPHISME koa isika eto hanampy: return new Double(d.doubleValue()+sandHafa), raha dinihantsika akaiky io dia ilay karazana miakatra indray no toa miasa. Ny new Double(..) aloha dia fiantsoana constructeur-ny kilasy Double , ka mandray parametre karazana double ; Ilay Objet voaorina eto izany dia karazana Double izay ao ambanin’ny kilasy Object , dia azo averina tsara eto izany io Double io, ary voafono ao ny valin’ilay adisanina ! CQFD ! dia mety izany ilay fika eto.
Ny amin’ilay hetsika faharoa
public Object kajyAdisanina(String sandaHafa) { String s = (String)getSanda(); return s.concat(sandaHafa); }
Dia mitovy amin’iry voalohany ihany ny fomba fiasa, saingy tadidio fotsiny fa ilay kajy eto dia soratra no atohy fotsiny e ! Jereo koa ao anaty API-ny Sun fa misy hetsika iray ao atsoina hoe : public String concat(String soratraHafa) .
Dia izay no antony nilazako tany aloha hoe : asiantsika hetsika iray toString() ao amin’ity kilasy AndranHafa ity, izay manitsaka avy hatrany ilay voafaritra ao anaty API-ny Sun ( ao anaty kilasy Object !).
import resakaObjet.ZavatraAzoKajiana; public class AndranaHafa { ........... Object zavatra; ........... public String toString() { return (String) zavatra; } ........... }
Dia ahoana indray izany k’ity ?
Fantaro ary fa ao anaty kilasy Object dia misy hetsika antsoina hoe: public String toString() ; izy io mazana dia mamoaka amin’ny alalan’ny soratra ny toerana misy ilay Objet voaforona any anaty tahiry mandalon’ny milinao ! (memoire vive).
Koa eto ary dia tsy izay no ilaintsika fa ho tondroina mazava hoe : ilay zavatra voatahiry ao anaty toetra zavatra no tiantsika avoaka amin’ny endrika soratra raha vao miantso io hetsika toString() io isika ao amin’io kilasy AndranaHafa io
Fanazavana:
Fantatsika koa ary fa ny kilasy AndranaHafa dia ao ambanin’ny kilasy Object koa (mazava ny amin’io !)
Zavatra roa no mety hiseho raha tiantsika ny hampiasa ny hetsika toString():
public String toString()
{
return (String) zavatra;
}
ao anaty kilasy AndranaHafa , dia ho hitanao fa izay ao anatin’ilay toetra zavatra amin’ity Objet noforonina tamin’ilay kilasintsika no havoakany eo.
Eto izany no ahitantsika ilay antsoina hoe: LIAISON DYNAMIQUE miasa amin’ireo Objet mifandray amin’ny alalan’ny fandovana (heritage). Satria rehefa miantso hetsika iray ianao dia izao no miseho:
Izay no azo anazavana io zava-miseho io amin’ity ohatra farany ity. Izany hoe mandeha foana izay ny fiantsoana ny hetsika toString() io amin’ny Objet rehetra izay misy ! Ka dia ianao no mametra hoe : ilainao ao anaty kilasinao ve io sa tsy ilaina ?
(Mbola hitohy !)