Resum

Existeixen tot un seguit de conceptes avançats del Java que intenten anar més enllà de la simple creació de classes i la implementació dels seus mètodes: la generació d’interfícies gràfiques d’usuari i el tractament de grans quantitats de dades mitjançant fluxos. Actualment, qualsevol aplicació d’una mínima complexitat fa ús de tots aquests conceptes per proporcionar una gamma àmplia de funcionalitats a l’usuari i de fluxos per intercanviar dades, ja sigui escrivint o llegint fitxers, com per comunicar-se amb altres aplicacions.

En el primer cas, el Java proporciona una biblioteca principal per generar interfícies gràfiques d’usuari (GUI), l’anomenada Java Swing. Aquesta biblioteca conté una jerarquia de classes de mida considerable en què tots els elements gràfics es divideixen en dos grups segons la funció: controls i contenidors. Els controls corresponen als elements que accepten interaccions per part de l’usuari, com botons, opcions de menú o formularis de text, mentre que els contenidors són els elements sobre els quals s’ubiquen, com la finestra principal. Hi ha una classe específica per a cada element gràfic.

Una de les particularitats de la biblioteca gràfica del Java és que, per ubicar els controls dins un contenidor, no és possible indicar-ne directament la posició absoluta. Cal usar un layout, una política d’ubicació automàtica dels diferents controls. Això permet mantenir les proporcions de la interfície independentment de la resolució de pantalla o que la finestra principal es redimensioni.

Quan es genera una interfície gràfica, un dels aspectes més importants és garantir que aquestes siguin independents de com es representa l’estat de l’aplicació. Per a això, s’usa el patró de disseny Model-Vista-Controlador (MVC), mitjançant el qual les classes d’una aplicació es divideixen en tres grups segons les funcions. Dins el Model s’agrupen les resultants del procés de disseny, representades amb el diagrama estàtic UML. Dins la Vista s’engloben tots els elements gràfics, tant controls com contenidors. El Controlador conté totes les classes que tradueixen les interaccions de l’usuari amb crides a mètodes de classes del Model.

En una interfície gràfica, els controls generen esdeveniments davant les interaccions de l’usuari. Cada tipus d’interacció genera un tipus d’esdeveniment diferent: del teclat, del ratolí, etc. Per capturar aquests esdeveniments cal registrar un tipus especial de classes, les anomenades Listeners, en els controls. Hi ha un tipus de Listener per a cada tipus d’esdeveniment, i si un control no té un Listener registrat per a un esdeveniment concret, aquest s’ignora encara que l’usuari faci l’acció que el provoca. En capturar l’esdeveniment, s’encarrega d’executar un codi determinat. Els Listeners són les classes que conformen el Controlador al patró MVC.

Hi ha elements gràfics amb certes particularitats respecte als presentats anteriorment. Un exemple són les classes basades en model, que són el conjunt de contenidors amb què el programador no pot interactuar directament per modificar-ne l’aparença en pantalla. Dins d’aquests elements amb certes particularitats també s’hi poden afegir com presentar elements amb funcionalitats complexes, com els taulers d’opcions o els selectors de fitxers o colors, o els applets.

Pel segon cas, per processar dades, el Java es basa en el mecanisme de fluxos, blocs de dades que es transmeten seqüencialment des d’un origen de dades (data source) a una destinació de dades (data sink). Tant l’origen com la destinació poden ser qualsevol component que processi o emmagatzemi dades: un fitxer, un buffer de memòria, una aplicació, etc. El Java divideix els fluxos en dos tipus, segons la unitat bàsica de dades: els orientats a dades, que operen amb el tipus primitiu byte, i els orientats a caràcter, que operen amb el tipus char.

Dins el seu mecanisme de fluxos, el Java proporciona la capacitat d’aplicar classes modificadores sobre un flux, de manera que en lloc d’operar a baix nivell, a nivell de byte o char, és possible operar a més alt nivell: qualsevol altre tipus primitiu, cadenes de text, o fins i tot objectes. El mecanisme que permet operar directament amb objectes sobre fluxos s’anomena seriació.

Anar a la pàgina següent:
Mapa conceptual