Problemi per la lezione del 14/1
- [Classe Parabola] Definite una classe Parabola le cui
istanze rappresentano parabole con retta direttrice orizzontale; la classe deve avere i seguenti costruttori e metodi:
- Parabola(): costruisce la parabola y=x^2;
- Parabola(double a, double b, double c): costruisce la parabola y=ax^2+bx+c;
- Parabola(Punto fuoco, Punto vertice): costruisce la parabola con dati fuoco e vertice (che devono avere la stessa ascissa, altrimenti il costruttore deve sollevare un'eccezione);
- double getA(): restituisce il coefficiente del termine di grado 2;
- double getB(): restituisce il coefficiente del termine di grado 1;
- double getC(): restituisce il coefficiente del termine noto;
- boolean equals(Object x): determina se la parabola è uguale a x;
- Punto getVertice(): restituisce il vertice;
- Punto getFuoco(): restituisce il fuoco;
- Retta getDirettrice(): restituisce la retta direttrice;
- boolean y(double x): restituisce il valore y per cui (x,y) appartiene alla parabola;
- boolean passaPer(Punto p): restituisce true sse la parabola passa per p;
- boolean passaPer(Punto[] p): restituisce true sse la parabola passa per tutti i punti dell'array p.
Suggerimento: per questa classe potrebbe essere utile consultare http://mathworld.wolfram.com/.
- [Classe astratta Curva] Definite una classe astratta di nome Curva
che corrisponda a una curva sul piano cartesiano. Questa classe deve avere:
- un metodo astratto boolean passaPer(Punto p) che dice se la curva passa per un punto dato;
- un metodo concreto boolean passaPer(Punto p[]) che restituisce true sse la curva passa per tutti i punti elencati.
- [Classe Parabola] Fate in modo che le classi Parabola e Retta estendano Curva.
- [Metodo arePipppere] Due curve C e C' sono dette pipppere se e solo se esiste un x intero
compreso fra 1 e 10 tale che i punti (x,x) e (2*x,2*x) appartengono a entrambe le curve e il punto (x+1,1.5*x*x) appartiene ad almeno
una delle due curve.
Aggiungete alla classe Curva un metodo statico boolean arePipppere(Curva c1, Curva c2) che date due curve restituisce true sse le curve sono pipppere. Verificate, usando questo metodo che la retta y=x e la parabola y=-3x^2+19x-24 sono pipppere.
- [Classe Iperbole] Definite una classe Iperbole che estende Curva e le cui istanze rappresentano iperboli i cui semiassi giacciono sugli assi cartesiani. Decidete voi di quali costruttori e metodi dotarla.
- [Altri problemi]Modificate le classi del progetto TeleBue come segue:
- Fate in modo che i metodi equals e compareTo di Orario abbiano le segnature corrette, e indicate esplicitamente che Orario implementa Comparable. Verificate che i metodi implementati funzionano correttamente creando, in un apposito metodo main un array di orari, e ordinandolo mediante il metodo sort di java.util.Arrays.
- Modificate il progetto in modo che esso comprenda la classe Persona (realizzata qualche settimana fa), e fate in modo che Abbonato sia una sottoclasse di Persona (dovete scrivere solo gli attributi e i metodi necessari).
- Modificate la classe Chiamata in modo che il chiamante sia sempre un abbonato, ma il chiamato possa essere una persona qualsiasi.