Classi e array
2 Classi e metodi statici Una classe è un costrutto linguistico che permette di modellare un'entità di un sistema, definendone le caratteristiche (variabili interne) e le azioni (metodi). Un metodo statico permette di eseguire operazioni su un'insieme di variabili (parametri di ingresso), producendo un risultato (parametro di uscita). static int somma(int x, int y){ return x+y; } Un metodo statico può anche non produrre un risultato (metodo void): static void stampasomma(int x, int y){ System.out.println(x+y); }
3 Array Un vettore (array) è un insieme ordinato, di dimensione fissa, di oggetti dello stesso tipo. Esempio: array capace di contenere al più 10 numeri interi int[] arrayinteri = new int[10]; La dimensione dell array è definita all atto della inizializzazione (con la new) e memorizzata nell attributo length. Ad esempio l array arrayinteri appena creato può contenere non più di 10 elementi! Non si può estendere dinamicamente un array (bisogna ricrearlo). Per fare questo esistono delle classi apposite che vedremo più avanti nel corso.
4 Array L'array è definibile e utilizzabile come variabile: <tipo>[] <nome> = new <tipo>[<dimensione>] Per accedere agli elementi: <nome>[<indice>] Esempio, inserire un intero di valore 3 in posizione 0: arraydiinteri[0]=3; Un array è sempre creato vuoto: ogni posizione, se l'array contiene oggetti o stringhe, contiene il valore "null", altrimenti contiene il valore 0 (o il valore false nel caso di un array di boolean).
5 Esempio: Tris Si scriva un programma Java che realizzi, tramite opportune classi e metodi statici, il gioco del tris. Si realizzi lo schema del tris come matrice 3x3. I due giocatori sono rappresentati dai simboli "O" e "X". Il programma deve chiedere alternativamente al giocatore "O" e al giocatore "X" di inserire la posizione in cui porre il simbolo (riga e colonna della matrice), finchè uno dei due giocatori non vinca oppure la partita non finisca in parità. Ad ogni turno, il programma deve mostrare a video lo stato del gioco.
6 Esercizio: prenotazioni Si scriva un programma Java che realizzi un sistema di prenotazione per un laboratorio di informatica, aperto dal lunedì al venerdì dalle 9 alle 18. Le informazioni relative alle prenotazioni sono contenute in una tabella prenotazioni, costituita da una matrice 5x9, contentente per i 5 giorni di apertura settimanale del laboratorio le prenotazioni relative ai 9 slot corrispondenti alle 9 ore giornaliere. Si definiscano i seguenti metodi statici, all interno dei quali non è consentita l immissione di valori da standard input (escluso il programma principale o se diversamente specificato)(n.b.: svolgere tutti i punti nel modo più efficiente e, quando possibile, riutilizzare metodi già definiti): 1. Metodo controlladisponibilità, che data un giorno settimanale, l'indice di uno slot e il numero di ore necessarie verifica se nel giorno richiesto ci sono, a partire dallo slot richiesto, sufficienti ore libere per la lezione indicata. 2. Metodo richiediprenotazione, che data una lezione, il numero di ore richieste un giorno e uno slot relativo all'orario minimo di inizio, verifica se nel giorno richiesto e dallo slot richiesto in poi il laboratorio ha orari disponibili, e in caso positivo aggiorna la tabella con la nuova prenotazione. 3. Metodo stampaprenotazioni, che dato un giorno settimanale, mostri a video l'elenco delle prenotazioni di quel giorno (per gli slot liberi, si mostri la scritta "<libero>") Il programma principale deve, infine, realizzare un menu che chieda ciclicamente all'utente di scegliere fra le seguenti opzioni: a) Prenotare una lezione, inserendo il nome della lezione, il numero di ore richieste, il giorno richiesto e lo slot minimo di inizio richiesto; b) Stampare l'orario del laboratorio, inserendo il giorno da mostrare; c) Uscire
7 Esercizio: prenotazioni