Problemi per la lezione del 05/12
- [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. Paolo Boldi (Cremona 1968)).
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: James
Cognome: Dean
Luogo di nascita: Marion
Anno di nascita: 1931
Nome: Michael
Cognome: Stipe
Luogo di nascita: Athens
Anno di nascita: 1959
James Dean (Marion 1931)
Michael Stipe (Athens 1959) - [Classe Persona (continua)] Aggiungete alla classe persona i seguenti metodi:
- un metodo che restituisca l'età (in anni) della persona (usando come anno di riferimento il 2018);
- un metodo che determini se una persona è più vecchia di una persona data;
- un metodo che determini se una persona è nata nella stessa città di una persona data (le città sono due stringhe, e vanno considerate uguali sse le due stringhe coincidono).
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: James
Cognome: Dean
Luogo di nascita: Marion
Anno di nascita: 1931
Nome: Michael
Cognome: Stipe
Luogo di nascita: Athens
Anno di nascita: 1959
James Dean (Marion 1931), 87 anni
Michael Stipe (Athens 1959), 45 anni
Persone non più vecchie di James Dean (Marion 1931): James Dean (Marion 1931), Michael Stipe (Athens 1959)
Persone che sono nate dove è nato James Dean (Marion 1931): James Dean (Marion 1931)- [Classe Punto] Scrivete una classe Punto le cui istanze rappresentino punti sul piano cartesiano. La classe deve avere i seguenti metodi e costruttori pubblici:
- Punto(double x, double y): costruisce il punto di coordinate (x,y)
- Punto(double x): costruisce il punto di coordinate (x,x)
- Punto(): costruisce il punto (0,0)
- double getX(): restituisce l'ascissa del punto
- double getY(): restituisce l'ordinata del punto
- void setX(double x): modifica l'ascissa del punto (rendendola uguale a x)
- void setY(double y): modifica l'ordinata del punto (rendendola uguale a y)
- void setXY(double x, double y): modifica le coordinate del punto, rendendolo uguale a (x,y)
- double getRho(): restituisce il modulo (=distanza dall'origine) del punto
- double getTheta(): restituisce la fase (in radianti) del punto (NB: consultate la documentazione del metodo atan2(double y,double x) della classe Math)
- String toString(): restituisce una versione "stringa" del punto
- boolean equals(Punto p): restituisce true sse i due punti coincidono (cioè, sse hanno le stesse coordinate)
- Punto medio(Punto p): restituisce il punto medio fra il target e p
- boolean collineari(Punto p, Punto q): restituisce true sse i tre punti target, p, q sono collineari; decidede come comportarvi se i tre punti non sono distinti.
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.