Kapsulazioa (II): Kodea berrerabiltzea

logo OPP min

Kapsulatzeari esker, elkarri lotutako atributu eta metodo guztiak klase batean zentralizatuta daudenez, erraza da kode hori hainbat programatan berriz erabiltzea, mota horretako objektu bat instantziatuz.

Ez digu axola klasea barrutik nola dagoen inplementatuta, zer egin dezakegun eta nola erabiltzen den jakitea besterik ez zaigu interesatzen.

Adibide batekin azalduta, ArrayLista izeneko klasea badugu, bost metodo dituela jakin nahi dugu:

  1. posizio jakin batean elementu bat gehitzeko,
  2. beste bat, elementua posizio jakin batetik ezabatzeko,
  3. beste bat, kokapen jakin batean dagoen elementua kontsultatzeko,
  4. Array-an zenbat elementu dauden esaten digun bat, eta
  5. pasatzen zaion parametroaren balioaren arabera, goranzko edo beheranzko array ordenatua itzultzen duen metodoa. Nola dago ezarrita, ez zaigu interesatzen. ArrayLista klaseak ongi funtzionatzen badu, edozein programatan erabil dezakegu. Hau da, berrerabili ahal izango dugu.

Hain erraza dirudien hori, programatzaile hasiberriarentzat ez da hain sinplea, klaseen diseinuan abstrakzio-prozesu bat behar baitu, eta ez baitago horretara ohituta. Oso ondo pentsatu behar da zer atributu eta metodo izango dituen klaseak gaur egungo beharrak asetzeko, eta atea zabalik utzi etorkizuneko hobekuntzetarako. Beraz, diseinatuko den klasea une horretan konpontzen ari den arazotik haratago erabiliko dela aurreikusten bada —hau da, berrerabiltzea aurreikusten bada—, abstrakzio-gaitasun handiagoa izan behar dugu.

hobeto ulertzeko euskeraz izendatuta daude metodoak. Orokorrean inglesez izendatzen dira

Object klaseak (array atributoa Objektu bezala izendatuta dago, orduan, beste klase batetik instatziatu ahal da bertako elementu listara sartzeko), Object klasea/mota gisa deklaratutako objektuari edozein klase esleitzeko aukera ematen du. Hau da, Object klasea klase guztien aita edo superklasea da, orduan, klase berri batetik esleitu ahal da elementuak ordenatzeko edo eta kentzeko.

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