Mòdul 1  

Pràctica 4: classes i objectes   
Tornar presentació tema
    Pràctica 1 Pràctica 2 Pràctica 3 Pràctica 4 Pràctica 5  
     
 

Aquesta pràctica està destinada a realitzar un primer contacte amb l'entorn . Analitzaras un exemple ja elaborat pels autors amb la finalitat d'establir la relació entre classes i objectes. Aquest és un concepte fonamental quan es treballa amb llenguatges orientats a l'objecte com és el cas del Java.

 
  Un primer exemple: la màquina de begudes  
     
  En aquesta primera pràctica utilitzarem un exemple senzill que simula el funcionament d'una màquina expenedora de begudes.  
     
Crea una carpeta ../BlueJ/projectes (una carpeta projectes que pengi de la carpeta BlueJ) on suggerim que guardis tots els projectes de programació que vagis treballant. Tot seguit, pots clicar a la icona de l'esquerra i recuperaràs un fitxer comprimit maquina.zip que, una vegada descomprimit generarà una carpeta maquina que convé que desis, amb tots els fitxers que conté a la carpeta de treball que has creat.

Posa en marxa l'entorn que has instal·lat a la pràctica anterior. Obra el projecte Maquina, que tens a la carpeta maquina que has creat, utilizant l'opció de menú Projecte |Obrir projecte. Llavors et mostrarà un projecte amb una única classe representat de la manera següent :

Maquina es una classe que modelitza una màquina expenedora de tres tipus de begudes: aigua, cervesa i llimonada. Per comprar una beguda és necessari introduir les monedes necessàries. La màquina admet tres tipus de moneda: 1 euro, 50 cèntims i 10 cèntims i pot retornar canvi amb el mateix tipus de moneda.

La classe ha estat dissenyada per tal de simular un funcionament, força elemental, d'aquesta màquina. El model inclou un conjunt de funcionalitats bàsiques per tal de poder realitzar la simulació:

  • comprar una beguda indicant el tipus i introduint les monedes adequades
  • conèixer el preu d'un producte determinat
  • conèixer l'estoc disponible d'un producte determinat
  • conèixer les monedes de que disposa la màquina per tal de donar canvi
  • reposar un producte determinat

La classe és el model que defineix les possibilitats però no és possible treballar directament amb ella. Si volem realitzar una simulació concreta serà necessari treballar amb una màquina concreta: hem de crear un objecte.

Situa el cursor a sobre del rectangle que representa la classe Maquina, prem el botó dret del ratolí i observa el conjunt d'accions que podem fer sobre aquesta classe:

 

De les accions disponibles escoll la primera, new Maquina(), que permet la creació d'un objecte de la classe Maquina. demanarà un nom per l'objecte i proposarà maquina1. Acepta el nom proposat i confirma-lo amb l'opció Acceptar:

L'objecte creat apareix en la part inferior de la pantalla de treball de en una zona anomenada banc d'objectes.

  • El procés de crear un objecte partint d'una classe es coneix com instanciar o crear una instància de la classe.
 
     
  Classes i objectes   
     
 

L'entorn ens ha permès manipular i visualitzar dos conceptes bàsics de la programació orientada a objectes:

  • les classes
  • els objectes.

És convenient reflexionar sobre aquest conceptes per tal de fonamentar-los adequadament i evitar possibles errors en el moment de programar amb Java.

  • La classe és el model, inclou les propietats, les funcionalitats del model. Aquestes característiques han estat programades en llenguatge Java. Ara no podras aprofundir molt en aquest aspecte; però has de tenir ben present que aquesta és la finlaitat d'aquest curs: ho treballarem a bastament en els altres mòduls.
  • L'objecte és la materialització del model. Una classe es pot instanciar tantes vegades com sigui necessari.

Repetint el procés anterior podem crear una segona instància de la classe Maquina:

¿Quina relació haurà entre les dues instàncies? maquina1 i maquina2 son dues instàncies diferents d'una mateixa classe. Això vol dir que tenen les mateixes funcionalitats, les mateixes característiques bàsiques. Però també que aquestes característiques poden prendre valors diferents en una i altra màquina.

Anem a analitzar l'estoc de begudes disponibles en cadascuna de les dues màquines creades. Situa el cursor a sobre de l'objecte maquina1, prem el botó dret del ratolí i observa el conjunt de mètodes disponibles per aquest objecte:

Crida el mètode printEstocDisponible i obtindras les quantitats disponibles de begudes en aquesta màquina:

Els valors s'han creat aleatòriament i son diferents en cada cas i, generalment, seran diferents en el teu cas respecte els que apareixen en la figura. Si repeteixes el procés amb el segon objecte obtindras, probablement, valors diferents:

A la "Finestra de terminal" on es visualitzem els resultats veras, encadenats, els valors de maquina1 i maquina2.

Com podas comprovar les dues màquines tenen grans similituds però son objectes diferents i prenen valors diferents.

Un aspecte important que cal reflexionar és si aquesta pregunta que hem fet als dos objectes la podem plantejar a la classe inicial.

  • Quin es l'estoc de begudes de la classe Maquina?
La pregunta no té resposta. La classe no té cap estoc, son les seves instàncies les que tenen aquesta capacitat però no la classe mateixa.

 

 
  Anem a comprar una beguda  
     
 

Les instàncies que hem creat de la classe Maquina simulen el funcionament d'una màquina expenedora de begudes. Anem a simular la compra d'una beguda amb la màquina maquina1.

El mètode printProductesDisponibles ens permet conèixer els productes disponibles a la màquina. Crida-lo:

i observa el resultat:

 

Podem comprovar si la màquina disposa d'estoc suficient de cada una de les begudes. Crida el mètode printEstocDisponible i obtindras l'estoc disponible per cadascuna de les begudes.

Interesa conèixer el preu del producte que volem comprar:

per exemple, una llimonada:

El preu d'una llimonada és:

Finalment crideu el mètode comprarProducte:

Haureu d'indicar el tipus de producte escollit (vegeu l'índex corresponent, 1, 2 o 3) i les monedes introduïdes, amb molta cura d'omplir tots els camps (si no feu servir monedes d''un tipus determinat heu de posar 0):

Feu altres proves a més de la que veieu a la imatge anterior. La màquina simularà el procés de venda i us retornarà de forma simulada, si escau, el canvi corresponent:

Ara ja tens una mica d'idea de les funcionalitats que volem que tingui l'aplicació i has après la manera com, des de l'entorn pots cridar els mètodes de la classe Maquina. En la pràctica següent començaràs a mirar altres elements de programació que intervenen aquest exemple.

 
    Tornar al principi