Diferència entre revisions de la pàgina «M3 - Programació estructurada / Continguts UF2: Classes i biblioteques»

De wikiserver
Dreceres ràpides: navegació, cerca
(Estructura d’un programa modular en Java)
(Estructura d’un programa modular en Java)
Línia 41: Línia 41:
 
[[Imatge:m3uf2_classes_i_biblioteques_1.png |600px|center| Classes i biblioteques]]
 
[[Imatge:m3uf2_classes_i_biblioteques_1.png |600px|center| Classes i biblioteques]]
  
Normalment, l’escriptura de mètodes en fitxers separats no és arbitrària, sinó que se sol fer
+
:*L’escriptura de mètodes en fitxers separats se sol fer d’acord a algun criteri d’ordre, com agrupar mètodes per funcionalitats semblants (una classe amb els mètodes relacionats amb operar amb arrays, una altra amb els que llegeixen dades des del teclat, etc.).  
d’acord a algun criteri d’ordre, com agrupar mètodes per funcionalitats semblants (una classe
+
 
amb els mètodes relacionats amb operar amb arrays, una altra amb els que llegeixen dades des
+
:*Per fer un programa modular cal decidir amb criteri com distribuir els diferents mètodes en diferents classes (i en quantes) i saber com invocar mètodes declarats a altres classes.
del teclat, etc.). Per tant, el quid de la qüestió per fer un programa modular és ser capaç de
+
 
decidir amb criteri com distribuir els diferents mètodes en diferents classes (i en quantes) i
+
:*'''Main class:''' és l’única que disposa d’un mètode principal declarat en el seu codi.
saber com invocar mètodes declarats a altres classes.
+
 
D’entre totes les classes que composen un programa modular en Java, hi ha d’haver una
+
:*Per executar un programa modular en Java, només cal executar aquesta classe principal. A partir d’aquí, l’execució de les diferents instruccions segueix el flux de control habitual, partint del mètode principal d’aquesta classe, tal com s’ha mostrat a la figura.  
d’especial, a la qual se sol referir com a classe principal (Main class). Aquesta és l’única,
+
 
d’entre totes, que disposa d’un mètode principal declarat en el seu codi (la resta no el tenen).
+
:*Les classes addicionals normalment tenen dos orígens. Poden ser classes creades per vosaltres mateixos, o bé creades per altres desenvolupadors. En qualsevol dels dos casos, totes estan declarades i codificades en fitxers
A la figura, Principal.java seria la classe principal.
 
Per executar un programa modular en Java, només cal executar aquesta classe principal. A
 
partir d’aquí, l’execució de les diferents instruccions segueix el flux de control habitual,
 
partint del mètode principal d’aquesta classe, tal com s’ha mostrat a la figura. Les classes
 
addicionals dins un programa modular, que no són la principal, normalment tenen dos
 
orígens. Poden ser classes creades per vosaltres mateixos, o bé creades per altres
 
desenvolupadors. En qualsevol dels dos casos, totes estan declarades i codificades en fitxers
 
 
.java per separat.
 
.java per separat.
  
 
====Definició de classes addicionals====
 
====Definició de classes addicionals====
  
Per dividir un programa en classes diferents, només cal crear tants fitxers com classes es vol,
+
:*Per dividir un programa en classes diferents, només cal crear tants fitxers com classes es vol, cadascun amb el seu nom i definició pròpia.
cadascun amb el seu nom i definició pròpia, tal com heu fet fins ara. D’entre totes elles alguna
+
 
haurà de ser la classe principal (en aquest cas, que contingui com a mínim els mètodes main i
+
:*La classe principal ha de contenir com a mínim els mètodes main i inici.  
inici). La resta contindrà els mètodes que es vulgui distribuir. Fora de la manca d’un mètode
+
 
principal a les classes addicionals, totes les classes són exactament iguals a nivell de sintaxi.
+
:*La resta de classes contindrà els mètodes que es vulgui distribuir.  
Tot el que heu après es pot aplicar per a qualsevol d’elles (definició i ús de constants,
+
 
variables globals, àmbit de variables, etc.).
+
:*Excepte pel mètode principal a les classes addicionals, totes les classes són exactament iguals a nivell de sintaxi.
  
 
====Ús de classes addicionals====
 
====Ús de classes addicionals====
  
Un cop declarats en una classe a part, els mètodes poden ser eliminats de la classe original , ja
+
:*En un programa modular, des d’una classe s’invoquen mètodes declarats a una classe diferent. Però cada mètode només està escrit un únic cop entre totes les classes del programa.
que en cas contrari tindríeu codi repetit.
+
 
Precisament, en un programa modular, el que succeeix és que des d’una classe s’invoquen
+
:*Per invocar mètodes escrits en fitxers diferents, primer cal un pas previ d’inicialització, a partir del qual es permet la invocació dels mètodes externs. En dur a terme aquest procés, s’assigna un identificador a partir del qual és possible invocar els mètodes d’aquella classe, usant-lo com a prefix a la invocació.  
mètodes declarats a una classe diferent. Però cada mètode només està escrit un únic cop entre
+
 
totes les classes del programa.
+
:*La sintaxi per fer-ho és la següent:
La invocació de mètodes que no estan escrits en el mateix fitxer és diferent del cas que heu
+
<source lang="java">
vist fins ara, on totes estan escrites dins el fitxer d’una mateixa classe. Ja no es pot dur a terme
 
simplement escrivint el nom del mètode (junt amb els seus paràmetres, si escau). Primer cal
 
un pas previ d’inicialització, a partir del qual es permet la invocació dels mètodes externs. En
 
dur a terme aquest procés, s’assigna un identificador a partir del qual és possible invocar els
 
mètodes d’aquella classe, usant-lo com a prefix a la invocació. Sense aquest pas previ, és
 
impossible invocar mètodes escrits a altres classes.
 
La sintaxi per fer-ho és la següent:
 
 
NomClasse identificador = new NomClasse();
 
NomClasse identificador = new NomClasse();
 
identificador.nomMètode(paràmetres);
 
identificador.nomMètode(paràmetres);
El comportament de la invocació del mètode és idèntica a quan es fa sobre un mètode escrit a
+
</source>
la mateixa classe (ús de paràmetres, avaluació d’acord al seu valor de retorn). Només canvia
+
 
la sintaxi, ja que es requereix aquest prefix producte de la inicialització. Cal dir que, donades
+
:*L'inicialització només es fa una vegada.
diverses invocacions a mètodes d’una mateixa classe externa, només és necessari fer la
+
 
inicialització una única vegada. L’àmbit i la validesa de l’identificador és el mateix que una
+
:*L’àmbit i la validesa de l’identificador és el mateix que una variable.
variable.
 
  
 
===Biblioteques de classes: paquets===
 
===Biblioteques de classes: paquets===

Revisió del 21:01, 11 març 2018

Programes amb múltiples classes

  • La manera més directa de fer un programa modular és establir una correspondència un a un entre mòduls i fitxers on està escrit el codi font d’un programa.
  • Cada mòdul es representa amb un fitxer de codi font diferent.
  • En el cas de Java, un programa modular està compost de l’agregació de múltiples classes.

Què és una classe?

Tres consideracions des d'una perspectiva pràctica:

  • Un programa en Java. Els fitxers dels programes, pròpiament, són classes (al cap i a la fi, s’inicien amb la declaració public class...). En aplicar disseny descendent, el seu codi queda distribuït en un mètode principal (main), que indica la seva primera instrucció i el punt d’inici del seu flux de control, junt amb diferents mètodes addicionals que poden ser invocats directament.
  • Un repositori de mètodes. També s'usa el terme classe per referir-se a biblioteques de mètodes, que actuen com extensions en les instruccions disponibles per defecte en el llenguatge. Abans de poder fer-ho, però, cal inicialitzar-les correctament.
-L’exemple més clar és la classe Scanner, que ofereix un repertori de mètodes per controlar la lectura de dades des del teclat (nextLine(), nextInt(),hasNextFloat(), etc.).
  • Un tipus compost. Aquest mateix terme s'usa com a sinònim de tipus compost.
- l’exemple per antonomàsia és la classe String, utilitzada per referir-se a cadenes de text dins de Java. Els tipus compostos de Java permeten manipular dades complexes mitjançant la invocació de mètodes (charAt(...), indexof(...), etc.).

Semblences

- Els tres casos són exactament el mateix en darrera instància: codi font dins un fitxer anomenat NomClasse.java, amb la declaració public class NomClasse..., i estructurat com un seguit de mètodes declarats dins seu.
- Per tant, la classe Scanner ha estat desenvolupada per algú altre, dins d’un fitxer anomenat Scanner.java i que conté diferents mètodes.

Estructura d’un programa modular en Java

  • Totes les classes es codifiquen de la mateixa manera (com fitxers que contenen un seguit de mètodes que poden ser invocats).
  • Un programa és una seqüència ordenada d’instruccions que es van executant d’inici a fi.
- Mitjançant les estructures de control (selecció i repetició), és possible crear bifurcacions o bucles a la seqüència.
- Es poden trobar invocacions a mètodes, fent possible distribuir les instruccions en blocs diferents, que poden ser executats repetides vegades en diferents moments del procés.
- Tots els mètodes estan escrits dins un mateix fitxer, que conté el codi font de tot el programa.
- main és el mètode principal, el qual indica quina és la primera instrucció.
  • L’única diferència d’un programa modular en Java és que els mètodes, en lloc d’estar escrits tots en el mateix fitxer, estan distribuïts dins de diferents fitxers (diferents classes). tal com es contrasta a la figura 1.1.
  • Exemple, el programa modular es composa de tres fitxers diferents, anomenats Principal.java, Modul1.java i Modul2.java.
Classes i biblioteques
  • L’escriptura de mètodes en fitxers separats se sol fer d’acord a algun criteri d’ordre, com agrupar mètodes per funcionalitats semblants (una classe amb els mètodes relacionats amb operar amb arrays, una altra amb els que llegeixen dades des del teclat, etc.).
  • Per fer un programa modular cal decidir amb criteri com distribuir els diferents mètodes en diferents classes (i en quantes) i saber com invocar mètodes declarats a altres classes.
  • Main class: és l’única que disposa d’un mètode principal declarat en el seu codi.
  • Per executar un programa modular en Java, només cal executar aquesta classe principal. A partir d’aquí, l’execució de les diferents instruccions segueix el flux de control habitual, partint del mètode principal d’aquesta classe, tal com s’ha mostrat a la figura.
  • Les classes addicionals normalment tenen dos orígens. Poden ser classes creades per vosaltres mateixos, o bé creades per altres desenvolupadors. En qualsevol dels dos casos, totes estan declarades i codificades en fitxers

.java per separat.

Definició de classes addicionals

  • Per dividir un programa en classes diferents, només cal crear tants fitxers com classes es vol, cadascun amb el seu nom i definició pròpia.
  • La classe principal ha de contenir com a mínim els mètodes main i inici.
  • La resta de classes contindrà els mètodes que es vulgui distribuir.
  • Excepte pel mètode principal a les classes addicionals, totes les classes són exactament iguals a nivell de sintaxi.

Ús de classes addicionals

  • En un programa modular, des d’una classe s’invoquen mètodes declarats a una classe diferent. Però cada mètode només està escrit un únic cop entre totes les classes del programa.
  • Per invocar mètodes escrits en fitxers diferents, primer cal un pas previ d’inicialització, a partir del qual es permet la invocació dels mètodes externs. En dur a terme aquest procés, s’assigna un identificador a partir del qual és possible invocar els mètodes d’aquella classe, usant-lo com a prefix a la invocació.
  • La sintaxi per fer-ho és la següent:
NomClasse identificador = new NomClasse();
identificador.nomMètode(paràmetres);
  • L'inicialització només es fa una vegada.
  • L’àmbit i la validesa de l’identificador és el mateix que una variable.

Biblioteques de classes: paquets

Definició de paquets

Ús de classes d’altres paquets

L’API del llenguatge Java

Mètodes estàtics

La classe Math

La classe Arrays

Javadoc

Sintaxi general

Paraules clau