Mètode (programació)

De Viquipèdia
Dreceres ràpides: navegació, cerca

En l'orientació a l'objecte, s'entén com a mètode o operació a cada un dels tractaments o avaluacions que sap fer la classe ja sigui exclusivament amb els propis atributs o recorrent a les responsabilitats d'altres classes sobre les que tingui visibilitat. Entenent per responsabilitat d'una classe al conjunt format pels seus atributs i mètodes.

El concepte de mètode és anàleg al de subrutina en un llenguatge imperatiu, és a dir, és qualsevol funció o acció (o procediment) que rebent uns paràmetres realitza un càlcul de l'estat actual o un canvi de l'estat de l'objecte que n'hagi fet ús, ja sigui amb els valors que retorna, quan es tracta d'una funció, o pels canvis que produeix en els atributs que modifica en el cas d'una acció o procediment.

En aquest text s'entén que una funció és aquell conjunt de sentències que assigna un valor o conjunt de valors (un objecte) a un identificador, el de la funció. Mentre que una acció o procediment és aquell conjunt de sentències encapsulades sota un identificador que no retorna cap valor, és a dir, que només produeix un canvi de l'estat.

Els mètodes d'una classe o objecte han de mantenir l'invariant de la classe, si n'hi ha. Alguns dels llenguatges de programació orientats a l'objecte permeten fer un seguiment d'aquest acompliment que és especialment interessant durant el desenvolupament de la classe. De fet, aquests llenguatges solen permetre l'avaluació de precondicions, postcondicions, invariants i fitaments en temps d'execució cosa que només té sentit de fer en fase de desenvolupament de la classe i en canvi produeix una sobrecàrrega de treball innecessària quan estem en la fase d'explotació de programa (ja que s'han de fer les avaluacions i comprovacions usant el processador), raó per la qual fer-ho, o no, és una opció de compilació.


Tipus de mètodes[modifica | modifica el codi]

Mètodes d'instància i mètodes de classe. Els mètodes d'instància estan relacionats amb un objecte en particular, actuen amb aquelles responsabilitats del l'objecte només visibles pel propi objecte, és a dir, els atributs o mètodes que siguin privats o ocults. Típicament els llenguatges de programació orientats a l'objecte usen clàusules com this o self per referir-se en aquestes responsabilitats.

Els mètodes de classe, estàtics o compartits són aquells que si bé estan associats a una classe concreta són visibles i, per tant, cridables des d'altres classes.

Els mètodes abstractes o diferits. Són mètodes que només s'han enunciat, però no s'han implementat en aquella classe. S'utilitzen com a marcadors de posició per ser reemplaçats més tard pels d'una subclasse o un prototip de la que implementa el mètode abstracte. D'aquesta manera, els mètodes abstractes són una ajuda per especificar parcialment un marc.

Una classe amb un o més mètodes abstractes no pot ser instanciada directament, requereix ser instanciada per una classe derivada o subclasse que hagi implementat tots els mètodes abstractes, per això una classe amb un o més mètodes abstractes o diferits es diu que és una classe abstracta, no instanciable.

Mètodes constructors i destructors. La majoria dels llenguatges de programació orientats a l'objecte requereixen la definició de constructors, essent aquests mètodes especials necessaris per crear un objecte d'aquella classe. En Java i C han de tenir el mateix nom de la classe a la qual estan associats. La majoria dels llenguatges no requereixen mètodes destructors (que són mètodes d'instància especials pera la destrucció de les instàncies de la classe). Llenguatges com Smalltalk no requereixen constructors ni destructors.

Mètodes d'accés. Són un tipus de mètode normalment petit i simple que es limita a proveir informació sobre l'estat d'un objecte. Quan el mètode d'accés pot canviar l'estat d'un objecte se l'anomena mètode d'actualització o mètodes de mutació, i en conseqüència, els objectes que proveeixen mètodes d'aquest tipus, són anomenats objectes mutables .

Mètodes set i get. Aquests mètodes són útils per poder consultar (get) i modificar (set) atributs no visibles d'un objecte o classe. Ocultar els atributs d'una classe i obligar a usar els mètodes set i get per accedir-hi permet controlar centralitzadament a la classe la validació dels atributs, és a dir, garantir que sempre es valida el seu valor de la mateixa manera.