Klasea

logo OPP min

Ojektua eta klase kontzeptuak sarreran asaldu den bezela, klase bat, objektuak sortzeko eskeletoa dela. Atal honetan eskeleto honen barnean dauden elementuez arituko gara.

Klase bateko atalak

Ikusi dugunez, Objektuetara Bideratutako Programazioa. Sarrera, sarreran, klase bat aldagai eta funtzio batzuek osatzen dute. OBP terminoetan soilik hitz eginez, aldagaiei atributuak deitzen zaie eta funtzioei metodoak. Era berean, atributuek eta metodoek osatutako binomioari klase bateko atala esaten zaio. Beraz, atributu bat eta metodo bat klaseko atalak dira.

Atributuak

Atributuak, eremu ere deituak, objektu baten egoera kodetzen duten aldagaiak dira.

Adibidez, Pertsona klasea badugu izena eta adina atributuekin -karaktere-kate motakoa eta zenbaki osokoa, hurrenez hurren-, Pertsona motan definitzen den objektu bakoitzak bi atributu hauek izango ditu.

Atributu-motak:
Atributu bat oinarrizkoa izan daiteke (osoa, karakterea, etab.) edo klase jakin batena. Adibidez, pertsona motakoa.
Atributu-mota beste edozein aldagai bezala definitzen da

Pertsona objektu bakoitzaren egoera bi ezaugarri horiei esleitzen zaizkien balioen araberakoa izango da, hurrengo irudian ikusten den bezala.

Pertsona klasea eta berfe objektuak

Irudian ikusten denez, Pertsona objektu bakoitzak egoera desberdinak ditu, hau da, atributu bakoitzerako balio desberdinak.

Objektu baten egoera:
Objektu baten egoera definitzen duten atributuek une jakin batean hartzen dituzten balioek definitzen dute.

Bi edo hiru objektuk egoera bera partekatzen duten arren -hau da, balio berak dituzte ezaugarri guztientzat-, bi edo hiru objektu horiek desberdinak dira. Pentsatu besterik ez dago munduan bi edo hiru pertsona egon daitezkeela 31 urteko Jon deiturikoak, eta, jakina, pertsona (edo objektu) desberdinak direla.

Metodoak

Metodoek objektu baten portaera ezartzen dute, edo, beste era batean esanda, objektu batek egin ditzakeen funtzionalitateak.

Metodoak funtzio gisa erabiltzen dira. Horregatik, metodo batek, izenaz gain, jasotzen dituen sarrera-argudioak edo parametroak eta ezartzen duen portaera exekutatzean ateratzen den itzulera-balioa ditu ezaugarri. Elementu horien deskribapenari metodoaren sinadura edo metodoaren signatura deitzen zaio. Pseudokodean hau litzateke:

metodoIzena(param1:mota,...,paramN:mota):ItzuleraMota

Pertsona klasearen kasuan, metodoak honako hauek izan daitezke:

ibili(abiadura:int):void
berba(testua:karaktere taula[30]):void

Ildo beretik jarraituz gainkarga kontzeptua aipatu behar da. Hau da, Gainkarga gertatzen da bi metodo edo gehiagok izen bera baina zenbaki eta/edo parametro mota desberdinak dituztenean.

Beste era batera esanda, metodoaren sinadura argumentuen zatian bereizten da. Adibidez:

berba(testua:karaktere taula[30]):void
berba(testua:karaktere taula[30], abiadura:int):void

Konpilatzaileak erabakitzen du zein metodo erabili deiaren argumentuak sinadurakoekin konparatuz.

Eraikitzailea eta suntsitzailea

Klaseek bi metodo berezi mota dituzte: eraikitzailea eta suntsitzailea. Ez dira klase bateko kidetzat hartzen. Ez dira klaseko kideak, ez eraikitzailea ez suntsitzailea ez direlako heredatzen.

Objektuetara bideratutako programazio-lengoaia gehienek metodo eraikitzailea inplementatzen dute, eta batzuek bat esplizituki kodetzera behartzen dute. Ez da gauza bera gertatzen suntsitzailearekin, haren kodeketa bazter baitaiteke lengoai askotan, adibidez, Javan edo C#en.

Eraikitzailea

Eraikitzaileari automatikoki deitzen zaio objektu bat sortzen denean objektua memorian kokatzeko eta klasean deklaratutako atributuak hasieratzeko. lengoai gehienetan, eraikitzaileak ezaugarri hauek ditu:

  1. Normalean, eraikitzailearen izena klasearena bera da.
  2. Eraikitzaileak ez du itzulera-motarik, void ere ez.
  3. Parametroak jaso ditzake, une horretan sortzen ari den objektuarentzat klasearen atributuak hasieratzeko.
  4. Oro har, publikoa izaten da, baina lengoai batzuek pribatua izateko aukera ematen dute.

Parametrorik gabeko eraikitzaileari eraikitzaile lehenetsi edo lehenetsi deritzo; parametroak dituztenei, berriz, argumentudun eraikitzaile. Ezin dira deklaratu kopuru eta argumentu mota bereko eraikitzaileak.

Klaserako eraikitzailerik definitzen ez bada, konpiladoreak berak lehenetsitako eraikitzaile bat sortuko du, objektua memorian kokatzeaz gain ezer berezirik egingo ez duena. Eraikitzaile bat definitzen den unean, konpiladoreak ez du automatikoki gehituko eraikitzaile lehenetsia.

Suntsitzailea

Suntsitzailea memoriako objektu jakin bat behin betiko ezabatzeko metodoa da. Kontuan hartu behar da:

  1. Lengoai guztiek ez dute metodo suntsitzailerik behar, Java eta C#, esaterako.
  2. Oro har, klase batek suntsitzaile bakarra du.
  3. Lengoai batzuetan ez du itzulera-motarik, void ere ez. Beste batzuetan, oro har, void du itzulera-mota gisa.
  4. Ez du parametrorik jasotzen.
  5. Oro har, publikoa izaten da.

Klase adibide bat

class Pertsona{
String izena;
int adina;

//Eraikitzaile lehenetsia
Pertsona(){
izen = "Jone";
edad = 0;
}
//Parametro bat duen eraikitzailea
Pertsona(String izenBerria){
izena = izenBerria;
}
//Eraikitzailea, 2 parametrorekin
Persona(String izenBerria, int adinaBerria){
izena = izenaBerria;
adina = adinaBerria;
}
//izena atributuaren getter metodoa
String getIzena(){
return izena;
}
//izena atributuaren setter metodoa
void setIzena(String izenBerria){
izena = izenBerria;
}
//adina atributuaren getter metodoa
int getAdina(){
return adina;
}
//adina atributuaren setter metodoa
void setAdina(int adinaBerria){
adina = adinaBerria;
}
void berba(String testua){
//metodoaren codea
}
void ibili(int abiadura){
//metodoaren codea
}
}

Setterrak eta getterrak:
Klaseetan, atributuen balioak esleitzeko eta kontsultatzeko metodoak sortzen dira. Balioa esleitzen duen metodoari setter deitzen zaio (horregatik du izena set + atributuaren izena), eta kontsultariari getter (horregatik du izena get + atributuaren izena). Aurreko adibidean, izena atributuaren setter metodoa setIzena da, eta atributu beraren getter metodoa getIzena da.

Utzi erantzun bat

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Aldatu )

Google photo

You are commenting using your Google account. Log Out /  Aldatu )

Twitter picture

You are commenting using your Twitter account. Log Out /  Aldatu )

Facebook photo

You are commenting using your Facebook account. Log Out /  Aldatu )

Connecting to %s