Ja hem vist que a Java
tots els programes són classes.
També sabem que les classes són
especificacions de com són i què poden fer els objectes
que pertanyen a aquella classe i que
els objectes són entitats individuals
o instàncies d'una classe. Els
objectes són d'una forma
determinada i poden fer algunes coses. Com són els objectes
ens ho expliquen els seus camps (fields).
Què poden fer, ens ho definiran els seus
mètodes. Ambdues coses, camps
i mètodes, són el que es
coneix com a "membres de la classe".
Imaginem la nostra biblioteca escolar i tractem de representar-la en llenguatge
d'objectes: estarà formada per llibres, revistes, vídeos,
CDs, etc. Considerem que tot aquest material el volem representar amb
una única classe, a la qual li
posarem de nom "Publicacio". Ja sabem
que l'hem de crear així:
public class Publicacio
{
} |
Com que a la biblioteca hi tenim molts formats de publicació,
creem un camp per a identificar-los:
public class Publicacio
{
String format;
} |
i, de la mateixa manera, podem anar afegint tots els camps
que ens ajudaran a descriure una publicació de la biblioteca:
public class Publicacio
{
String format;
String titol;
String editorial;
java.util.Date data;
java.util.Date dataentrada;
java.util.Date datadebaixa;
} |
Podem afegir-hi molts camps
que ens serviran per afinar tan com vulguem la descripció d'un
objecte Publicacio.
La nostra classe però, no és
encara capaç de fer res. Per tal que ens serveixi d'alguna cosa
més que de magatzem de llibres i revistes, li hem d'afegir mètodes.
Un mètode és
un grup d'instruccions al qual li posarem un nom, i que ens servirà
per a fer tasques concretes. La forma sintàctica és la següent:
<modificador tipus> <nomdelmetode>
( <paràmetres> ) {
<feina a fer>;
return <una expressió>;
} |
Aclarim ara què volen dir els termes "modificador",
"grup" i "paràmetres"
en aquest context:
- Modificador: Ens
descriu com ha de ser el mètode:
amb la clàusula "public",
el mètode
serà visible a qualsevol programa que utilitzi la nostra classe,
amb "static"
el mètode
serà únic per a tots els objectes
de la classe -exactament igual que funcionen
les constants-
i, amb "final"
impedim que el mètode
es pugui reescriure
(override)
en les classes filles de
la classe
Publicacio.
- Tipus: Quin tipus
d'informació ens retorna
el mètode:
cap valor?; un tipus?;una
classe? Si
el mètode no retorna res
el grup és "void".
En aquest cas la darrera expressió "return"
és innecessària i il·legal.
- Paràmetres:
Tots els mètodes
tenen, al final del nom, una parella de parèntesis, encara que
no continguin res. Quan el nostre mètode
necessita alguna informació externa per a poder operar, la passem
en forma de paràmetres.
Quan fem una declaració de paràmetres
posem en primer lloc el tipus del paràmetre
i després el nom del paràmetre.
A Java no
existeix la diferència de pas
de paràmetres per valor o per
referència d'altres llenguatges. Tots
els paràmetres
que passem ho són per valor:
si a dins del mètode
modifiquem el valor del paràmetre,
aquesta modificació no queda reflectida a la variable externa.
Fem ara combinacions en la declaració
de mètodes per a la nostra classe
Publicacio.
- L'administrador de la biblioteca ens demana que creem
una utilitat que ens permeti esbrinar si una certa publicació
s' ha deixat en préstec:
public boolean isEnprestec(int
codi) {
boolean hies = metodedeconsultadeprestec(codi);
return hies;
} |
El mètode és
public -visible per qualsevol programa que utilitzi la classe
Publicacio- i retorna un valor de tipus
boolean que ens indica si el llibre s'ha deixat
en préstec. Li passem el paràmetre
codi, que és l'identificador enter
d'aquest llibre a la nostra base de dades. La gràcia rauria ara
en la possibilitat de crear un mètode
privat, intern a la classe
i invisible des de l'exterior, amb la consulta a la base de dades sobre
l'estat d'aquest llibre:
private boolean
metodedeconsultadeprestec(int codi) {
<connexio a les dades>;
<consulta a la taula>;
<retorn del valor>;
} |
- L'administrador ens demana que creem una utilitat
per identificar una publicació a partir del seu número
d'inventari:
public Publicacio
findByPrimaryKey(int codi) {
Publicacio publicacio=unmetodederecercaalabasededades(codi);
return publicacio;
} |
- L'administrador ens demana un procediment per
fer un préstec d'una publicació a un lector:
public
void setEnprestec( int llibre, int lector) {
prestaunllibre(llibre,lector);
} |
En aquest cas el mètode
no torna res -void-.
Li passem dos paràmetres,
el codi del llibre que volem prestar i el codi del lector que rep la
publicació. Observem com, en aquest cas, el mètode
pot utilitzar-se directament. Els mètodes
que tenen tipus, en canvi, retornen un valor que ha de ser assignat
a alguna variable.
|