# Mètode (programació)

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

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 mateix 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 per a 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.
Viccionari