|
|
(Hi ha 4 revisions intermèdies del mateix usuari que no es mostren) |
Línia 1: |
Línia 1: |
− | torna [[ M3 - Programació ]]
| |
| | | |
− | == Concepte de Classe ==
| |
− |
| |
− | === Estructura i membres ===
| |
− |
| |
− | [[DAM-M3-UF4._Caracterització_i_ús_d'objectes#Les_Classes_i_els_objectes]]
| |
− |
| |
− | La estructura d'una classe ''normal'' a Java és
| |
− |
| |
− | <pre>
| |
− | public class NomClasse {
| |
− | {constants}
| |
− |
| |
− | {atributs}
| |
− |
| |
− | {constructors}
| |
− |
| |
− | {getters / setters}
| |
− |
| |
− | {altres mètodes}
| |
− | }
| |
− | </pre>
| |
− |
| |
− | Per conveni:
| |
− | * El nom de la classe comença amb majúscules.
| |
− | * El nom dels atributs i mètodes comencen en minúscules.
| |
− | * Si consten de vàries paraules, van seguides (sense espais o altres caràcters) i cada nova paraula comença amb majúscules.
| |
− | * Primer van els atributs: constants i atributs normals.
| |
− | * Després els mètodes: constructors, getters/setters i altres.
| |
− |
| |
− | === Atributs ===
| |
− |
| |
− | Els atributs defineixen l'estat dels objectes de la classe. Tots els objectes de la classe tenen els mateixos atributs però amb valors diferents.
| |
− |
| |
− | Aquests es poden precedir de modificadors que en determinen l’accés i el tipus. Els '''modificadors d’accés''' determinen la visibilitat dels atributs:
| |
− | * Sense modificador, accessible des de les classes del mateix paquet
| |
− | * '''private''', accessible des de la pròpia classe
| |
− | * '''protected''', accessible des de la pròpia classe i subclasses
| |
− | * '''public''', totalment accessibles
| |
− |
| |
− | En general els atributs sempre són ''private'' (o ''protected''). Les constants poden ser públiques si són d'utilitat.
| |
− |
| |
− | Els '''modificadors de tipus''':
| |
− | * '''static''', atribut de classe
| |
− | * '''final''', constant, el valor no pot canviar després de ser inicialitzat.
| |
− |
| |
− | <pre>
| |
− | public class Alumne {
| |
− | public static final int MAX_ALUMNES = 30;
| |
− | private static int totalAlumnes;
| |
− | private String dni;
| |
− | private String nom;
| |
− | private int edat;
| |
− | }
| |
− | </pre>
| |
− |
| |
− | === Mètodes ===
| |
− |
| |
− | Els mètodes determinen el comportament, permeten la comunicació entre objectes.
| |
− |
| |
− | Aquests també poden anar precedits de modificadors que en determinen l’accés i el tipus.
| |
− |
| |
− | Els '''Modificadors d’accés''' determinen la visibilitat dels mètodes i són els mateixos que per als atributs: ''Sense modificador'', ''private'', ''protected'', ''public.''
| |
− |
| |
− |
| |
− | '''Els modificadors de tipus, '''
| |
− |
| |
− | * '''static''', mètode de classe
| |
− | * '''abstract''', mètode no implementat, cal reescriure’l en els descendents.
| |
− | * '''final''', el mètode no pot ser sobreescrit
| |
− | * '''syncronizable''', tractament ''multifil''.
| |
− |
| |
− | === Tipus de classes ===
| |
− |
| |
− | Per establir el '''tipus de classe''', Java utilitza els modificadors: ''public, abstract, final, synchronizable''
| |
− |
| |
− | Sense modificador: Accessibles des del mateix paquet.
| |
− |
| |
− | * '''public''': Accessibles des de altres classes
| |
− | * '''abstract''': Té mínim un mètode ''abstract ''que cal implementar.
| |
− | * '''final''': no admet subclasses.
| |
− | * '''syncronizable''': Per al tractament de ''fils'' (Threads). Tots els mètodes estan sincronitzats, no s’hi pot accedir des de diferents ''fils'' al mateix temps.
| |
− |
| |
− | === Visibilitat ===
| |
− |
| |
− | Cal anar en compte amb els paquets que poden donar visions errònies de la visibilitat.
| |
− |
| |
− | {| cellspacing="0" cellpadding="4" border="1"
| |
− | |-
| |
− | | Visibilitat (des de ...)
| |
− | | public
| |
− | | protected
| |
− | | private
| |
− | | default
| |
− | |-
| |
− | | La pròpia classe
| |
− | | Sí
| |
− | | Sí
| |
− | | Sí
| |
− | | Sí
| |
− | |-
| |
− | | Una altra classe del propi paquet
| |
− | | Sí
| |
− | | Sí
| |
− | | No
| |
− | | Sí
| |
− | |-
| |
− | | Una altra classe fora del paquet
| |
− | | Sí
| |
− | | No
| |
− | | No
| |
− | | No
| |
− | |-
| |
− | | Una subclasse del propi paquet
| |
− | | Sí
| |
− | | Sí
| |
− | | No
| |
− | | Sí
| |
− | |-
| |
− | | Una subclasse fora del propi paquet
| |
− | | Sí
| |
− | | Sí
| |
− | | No
| |
− | | No
| |
− | |}
| |