Lab. 1 Introduzione al corso e ripasso Java Registrazione e login User: RETI Psw: 2014 ? Accedi a: CSD 172.16.19.24/registrati Info utili ● Martedì 13:45 - 17:00 (Aula 309 - Settore Didattico) ● Giovedì 13:45 - 17:00 (Aula 309 - Settore Didattico) ● mail: [email protected] ● ricevimento: appuntamento ● sito: http://reti.di.unimi.it Modalità esame laboratorio Progetto in Java ● Svolto singolarmente. ● Tempo a disposizione: 30 gg. ● Consegna precedente alla data dell’appello (7-15). ● Esito positivo valido per 10 anni (da febbraio 2015). Riferimenti bibliografici ● Dario Maggiorini, “Introduzione alla programmazione client-server”, Pearson, 2009 ● Elliote Rusty Harold, “Java Networking Programming”, O’Reilly, 2004 ● Jan Graba, “Introduction to Network Programming with Java”, Springer, 2013 Link utili ● Documentazione Java 6 o 7 ○ http://docs.oracle.com/javase/6/docs/api/ ● Tutorial Java ○ http://docs.oracle.com/javase/tutorial/ ● Slide del corso ○ http://reti.di.unimi.it ○ Le slide servono SOLAMENTE come indice degli argomenti trattati Prerequisiti ● Conoscenza sintassi Java. ● Capacità di consultazione della documentazione Java (minima conoscenza inglese tecnico). Strumenti di sviluppo ● In laboratorio: ○ Eclipse Indigo ○ Windows XP ● Consigliato (non obbligatorio): ○ Eclipse ○ putty (win), telnet (unix) Warm-up: Eclipse ● IDE (integrated development environment) ● Supporto diversi linguaggi: Python, C, C++, PHP, Ruby, Javascript, … ● Incentrato su plug-in (UML, Maven, Git, SVN) ● Code completion, refactoring, suggerimento dei parametri secondo l’interfaccia dei metodi Installazione Ultima release: Luna Versioni: ● Classic ● Java Developers (C) ● Java EE Developers http://www.eclipse.org/downloads/ Installazione 1. JRE o JDK già installate 2. Unzip della cartella contenente Eclipse 3. Settaggio del workspace Platform e Workbench Help Workbench JFace SWT Platform Runtime Team ● Workbench: ambiente di sviluppo desktop ● Integrazione di diversi tool per la creazione e la gestione delle risorse legate ad un progetto software ● Contiene una o più prospettive ● Prospettiva contiene views ed editors Esempio Esercizi guidati 1. Si crei un progetto in Eclipse denominato ‘MessageMi’ 2. Aggiungere al progetto i package org.reti. element, org.reti.factory e org.reti.social 3. Si scarichi il jar all’indirizzo http://reti.di.unimi. it/json-simple-1.1.1.jar e si aggiunga la libreria scaricata al progetto Classe Messaggio La classe Messaggio modella un messaggio inviato da un utente mittente a uno o più utenti destinatari. Un messaggio è caratterizzato da un testo, da una data di creazione e da una data di scadenza. Il messaggio, quindi, può essere eliminato dall’insieme dei messaggi ricevuti, una volta scaduto. Ogni messaggio è caratterizzato da un identificatore univoco nel sistema. Si implementi la classe Messaggio, definendo i campi, i costruttori, i metodi di get e set, il metodo toString() e il metodo equals() Classe Utente L’utente del progetto che stiamo creando può inviare e ricevere messaggi. Ogni utente, quindi avrà a disposizione una mail box per i messaggi ricevuti e inviati rispettivamente. Un utente è caratterizzato da un identificatore univoco, un nome e un cognome. Si implementi la classe Utente, definendo i campi, il costruttore vuoto, i metodi di get e set, il metodo toString() e il metodo equals(). Aggiungere il metodo invia(int idMsg) e ricevi(int idMsg). Classe Mailbox Una mailbox è un insieme di identificatori di messaggi. Deve permette di aggiungere, rimuovere e cercare messaggi. Si implementi la classe Mailbox definendo i campi, i costruttori e i metodi aggiungi(int idMsg), rimuovi(int idMsg) e toString(). Classe MailRepository La classe MailRepository contiene tutti i messaggi che vengono scambiati tra gli utenti del sistema. Si implementi la classe MailRepository definendo i campi, i costruttori, i metodi aggiungi(Messaggio msg) e rimuoviScaduti(). L’ultimo metodo rimuove i messaggi scaduti al momento della chiamata del metodo stesso. Code GDrive https://drive.google.com/folderview? id=0B7BmdzD3ys1OVhEQ2tlZEx4cjg&usp=sharing