Kapsulazioa (III):Ezkutaketa

logo OPP min

Kapsulazio gaiarekin jarraituz, kapsulazioak objektuak dituen datuen osotasuna bermatzen du, ezkutatze-mekanismoaren bidez. Informazioa ezkutatzea oso mekanismo erabilgarria da eta kapsulazioaren ondorio zuzena.

Orduan, Klasea erabiliko duen programatzaileak zehatz-mehatz beharrezkoak diren atributuak eta metodoak ezagutu eta zuzenean atzitu behar ditu, besterik ez. Horrela, klaseko atalei ez zaie uzten sartzen, beste edozein bide erabilita ere.

Pertsona klasearen adibidea jarraituz, ezkutatzearen kontzeptuaren azalpena hau izango zen:

Demagun Pertsona klaseko berba(testua: String) metodoa inplementatu nahi dugula. Kodetzeko metodo konplexu bat dela susma dezakegu, eta, ziurrenik, inplementazioa funtzio (hau da, metodo) sinpleagoetan banatu beharko da. Deskonposatuta duten metodo berri horiek berba(String:testua) metodoa ez ditu zertan ezagutu behar Pertsona klasea erabiliko duen programatzaileak, hau da, ezkutatu egin genezake eta ez litzateke ezer aldatuko berarentzat. Objektuetara bideratutako programazioaren terminologia erabiliz, esango dugu berba(String:testua) metodoa publikoa izango dela; gainerako metodoak, berriz, pribatuak izango dira.

Ezkutatze-mailak

Kontutan hartu behar ditugu hurrengo hiru ideia nagusiak:

  • Klase bateko atributu edo metodo bat ikuspenaz/ezkutatzeaz ari garenean, gainerako klaseei dagokienez ulertu behar dugu.
  • Beraz, argi geratu behar den beste ideia nagusia da klase batek beti eskura ditzakeela bertan definitutako atributu eta metodo guztiak.
  • Azken ideia nagusi bezala, esan daiteke bi klaseen arteko interakzioa bi klase horietako objektuen arteko interakzioaren bidez egiten dela. Elkarrekintza hori mezuen bidez egiten da.

Aurreko hiru ideia nagusiak argi izanda, esan dezakegu kapsulazioak klase bateko atalen sarbide-mailak definitzen dituela. Atributu eta/edo metodoetarako sarbidea hainbat neurritan murritz dezakegu. Oro har, OBP lengoaiek hiru sarbide-maila definitzen dituzte:

  1. Publikoa (public): atributua eta/edo metodoa publikoa bada A klasean, beste edozein klase sar daiteke bertara bere kodean A motako objektu bat erabiliz.
  2. Pribatua (private): atributu eta/edo metodo bat klase batean pribatua denean, ezin da beste klaserik sartu. Beraz, definitzen duen klasearen barrutik bakarrik sar daiteke.
  3. Babestua (protected): atributu eta/edo metodo bat klase batean babesten denean, klase horretako beste edozein alaba (edo azpiklase) sar daiteke bertara eta erabil dezake. Sartzeko modua aitaren (edo superklasearen) eta alabaren klaseak pakete berekoak diren ala ez kontuan hartu beharko da. Pakete berekoak badira, alaba-klasea aita-klaseko atal babestura sartu ahal izango da (adibidez, atributua edo metodoa), aita-klaseko objektu baten bidez edo herentzia bidez, bi modalitateen artean dauden desberdintasunekin. Aldiz, pakete desberdinetakoak badira, alaba-klasea klaseko atal babestuetara bakarrik iritsi ahal izango da.

Ezkutatze-maila ulertzeko klase (java) inplementatu baten adibidea erabiliko da:

public class Pertsona{
	private String izena;
	private int adina;

	public Pertsona(){
		izena = "Jone";
		adina = 0;
	}
	
	public Persona(String izenBerria){
		izena = izenBerria;
	}
	
	public Persona(String izenBerria, int adinaBerria){
		izena = izenBerria;
		adina = adinaBerria;		
	}

	public String getIzena(){
		return izena;
	}
	
	public void setIzena(String izenBerria){
		izena = izenBerria;
	}
	
	public int getAdina(){
		return adina;
	}
	
	public void setAdina(int adinaBerria){
		adina = adinaBerria;	
	}	
	
	public void berba(String testua){
		//TODO: hemen doa kodea
	}
	
	public void ibili(int abiadura){
		//TODO: hemen doa kodea
	}

}

Adibide honetan, atributuak pribatuak direla eta metodoak publikoak direla ikus dezakegu. Datuak ezkutatzeko estrategia horrek datuetarako (hau da, atributuetarako) sarbidea ahalik eta gehien murrizteko praktika egokia errespetatzen du, haien osotasuna bermatzeko. Posiblea da ere metodoak pribatuak egitea, kasu honetan, bakarrik sartu ahal izango gara metodoa izendatu den klasetik eta ezinezkoa izango zaigu beste klase batetik sartzea.

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