Si definisca una classe Point che descrive un punto nel piano
cartesiano (quindi una coppia di coordinate x,y). Si definiscano,
testandoli via via, i seguenti costruttori e metodi:
un costruttore a partire da due coordinate
un costruttore senza parametri che inizializza il punto
all'origine ((0,0))
un metodo, ridefinizione di toString, che visualizzi in modo
opportuno le informazioni relative al punto
due metodi che spostano il punto rispettivamente orizzontalmente e
verticalmente di una certa distanza
un metodo che calcola la distanza rispetto ad un altro punto
un metodo che calcola la distanza dall'origine
un metodo che stabilisce se il punto e' piu' vicino o no all'origine
rispetto ad un altro punto
un metodo che stabilisce se il punto e' uguale (come coordinate) ad un
altro punto
Si definisca una classe OrientedPoint che estende la precedente. Un punto
orientato e' un punto che in piu' ha una direzione corrente d (che assume
valori N,E,S,W).
Supponiamo inoltre ci sia una direzione "di default" (initD) dei punti
definita come campo di classe, inizialmente N
Si definiscano, testandoli via via, i seguenti costruttori e metodi:
un costruttore senza parametri che inizializzi il punto a "origine con direzione
initD"
un costruttore a partire da due coordinate e una direzione
un costruttore a partire da due coordinate, che assegni come
direzione initD
un metodo, ridefinizione di toString, che visualizzi in modo
opportuno le informazioni relative al punto
un metodo che sposta il punto di una certa distanza nella direzione
corrente
un metodo che "gira" il punto in senso orario
un metodo di classe che "gira" la direzione di default in senso orario
un metodo che stabilisce se il punto e' uguale ad un
altro punto orientato
Si definisca una classe UsePoints in cui, nel metodo
main , si
dichiarino le variabili P di tipo Point e OP di tipo
OrientedPoint.
Si assegni alla variabile OP un oggetto OrientedPoint e alla
variabile P un oggetto che sara' Point od OrientedPoint a seconda
di una scelta effettuata dall'utente, come nel codice seguente:
int cond
= console.readInt(); if (cond > 0) P = new Point(10,
10); else P = new OrientedPoint
(10,10,N);
Si invochino i metodi definiti per le classi su tali oggetti e se
ne osservi il comportamento.
Scrivere una classe Data
per la gestione delle date.
Derivare quindi una classe DataEOra
che permetta di gestire sia la data che l'ora.
Inserire nella classe un esempio di overloading e uno di overriding.
Scrivere quindi un programma per collaudare le classi e i metodi.