Writing /home/infogasy/domains/wiki.infogasy.net/public_html/data/cache/a/acc8396365184fcd385b90e3e07cf5ac.xhtml failed

Andao hiresaka objet indray faha VI

Jery todika sy Fandovana(tohiny):

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 :

  1. Encapsulation na ireo toetra voafono hetsika isan-karazany
  2. Heritage na ny fandovana sy ny akony manodidina azy ifotoran’ny lalana madinika maro manome fomba fiasa mahomby ity tontolo Objet ity amin’ny ankapobeny, ary indrindra manokana amin’ny Java.
  3. Abstraction izay ahafahana manana fomba fijery midadasika eo ampanombohana asa iray, nefa afaka manorina avy hatrany ianao, ireo vainga kely madinika ao anatiny, ka azo ampiasaina avy hatrany izireo mitsitokatokana avy.

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);
  }
  ...................
}
  • Ilay toetra antsoina hoe : sanda dia Object (kilasy izy io) ny karazany; izany hoe mitovy karazana amin’ny raiben’ny Objet Java rehetra ! Ireo kilasy rehetra aorinao izany dia zanany avy hatrany)
  • Ireo hetsika roa ireo dia samy mamerina Object koa. Ny voalohany mandray parametre karazana isa reel(double); ny faharoa mandray parametre soratra (String).

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) .

  • Io String io moa dia manana toetra voatokana mihitsy amin’ny Java, satria ny kilasy rehetra, indrindra ny ao anaty API mahazatra (standard) an’i Sun dia misy daholo hetsika atao hoe: public String toString() . Ny anton’io moa dia hoe: tiana havoaka soratra avokoa ny toetra anatin’io Objet io na ny momba ny fiforonany avy amin’ilay kilasy. (ity sombina fampiasana ambany ity).

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():

  • Raha tsy namorona hetsika toString() isika ao anaty kilasintsika io dia ho hitanao fa azonao antsoina ihany ny soratra praograma : System.out.println(objetAndranaHafa.toString()); saingy ny reference-n’ilay toerana misy ilay Objet any anaty memoire no havoakany eo.
  • Raha ohatra kosa isika mamorona hetsika toString() toy ny hoe:
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:

  • Tadiavina ao anatin’ilay kilasy niforonan’ilay Objet aloha izy io, ka raha tsy hita ao dia mitady indray any amin’ny kilasy ambonin’izy io, dia toa izany miakatra, miakatra ihany amin’ireo mifandray amin’ny fandovana , rehefa tsy hita vao mamoaka laza diso ny compilation.
  • Raha ohatra moa ka misy hetsika mitovy anarana hita, dia izay mifanaraka amin’ilay antso ny isan’ny parametre no voafantina.

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 !)


Lahatsoratra Java

 

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