Laboratorio di programmazione (14 dicembre 2016)

Classe Persona

Implementate una classe di nome Persona che rappresenta una persona. Una persona è caratterizzata dai seguenti dati: un nome, un cognome, un anno di nascita e un luogo di nascita. Implementate la classe decidendo quale sia il costruttore, e decidendo di quali metodi dotarla. Dovete necessariamente sovrascrivere il metodo toString() restituendo una stringa opportuna (p.es. Sebastiano Vigna (Milano 1967)).

Realizzate quindi una classe di test, in cui dichiarate un array, e consentite a un utente di inserire i dati di un certo numero di persone, creando ogni volta un oggetto istanza di Persona e inserendolo nell'array. Alla fine, stampate le persone inserite.

Ecco un esempio di come potrebbe funzionare il programma (in grassetto le parti inserite dall'utente):

	Quante persone? 2
	Nome: George
	Cognome: Bush
	Luogo di nascita: Tordonia
	Anno di nascita: 1945
	Nome: Michael
	Cognome: Stipe
	Luogo di nascita: Athens
	Anno di nascita: 1959
	George Bush (Tordonia 1945)
	Michael Stipe (Athens 1959)
	

Attenzione: se utilizzate Scanner.nextInt() per leggere un intero su una riga (come il primo input), dovete poi dare uno Scanner.nextLine() a vuoto per passare alla riga successiva.

Si consiglia caldamente l'utilizzo della redirezione per testare rapidamente il programma senza digitare l'input: create un file di nome test.txt contenente l'input utente, e lanciate la vostra classe aggiungendo alla fine della riga <text.txt

Classe Persona (continua)

Aggiungete alla classe persona i seguenti metodi:

Sperimentate i metodi inseriti, per esempio modificando il programma precedente in modo da stampare accanto a ogni persona anche la sua età, e indicando quali sono le persone che sono non più vecchie della prima inserita, e quali sono quelle che sono nate nella sua stessa città.

	Quante persone? 2
	Nome: George
	Cognome: Bush
	Luogo di nascita: Tordonia
	Anno di nascita: 1945
	Nome: Michael
	Cognome: Stipe
	Luogo di nascita: Athens
	Anno di nascita: 1959
	George Bush (Tordonia 1945), 59 anni
	Michael Stipe (Athens 1959), 45 anni
	Persone non più vecchie di George Bush (Tordonia 1945): George Bush (Tordonia 1945), Michael Stipe (Athens 1959)
	Persone che sono nate dove è nato George Bush (Tordonia 1945): George Bush (Tordonia 1945)
	

Classe Punto

Scrivete una classe Punto le cui istanze rappresentino punti sul piano cartesiano. La classe deve avere i seguenti metodi e costruttori pubblici:
  1. Punto(double x, double y): costruisce il punto di coordinate (x,y)
  2. Punto(double x): costruisce il punto di coordinate (x,x)
  3. Punto(): costruisce il punto (0,0)
  4. double getX(): restituisce l'ascissa del punto
  5. double getY(): restituisce l'ordinata del punto
  6. void setX(double x): modifica l'ascissa del punto (rendendola uguale a x)
  7. void setY(double y): modifica l'ordinata del punto (rendendola uguale a y)
  8. void setXY(double x, double y): modifica le coordinate del punto, rendendolo uguale a (x,y)
  9. double getRho(): restituisce il modulo (=distanza dall'origine) del punto
  10. double getTheta(): restituisce la fase (in radianti) del punto (NB: consultate la documentazione del metodo atan2(double y,double x) della classe Math)
  11. String toString(): restituisce una versione "stringa" del punto
  12. boolean equals(Punto p): restituisce true se i due punti coincidono (cioè, se hanno le stesse coordinate)
  13. Punto medio(Punto p): restituisce il punto medio fra il target e p

Man mano che scrivete la classe, scrivete anche una classe di prova, contenente un metodo main, che sperimenti i metodi che di volta in volta aggiungete.

Inventate almeno altri quattro metodi da aggiungere alla classe.