Quadrato

Quadrato

package geometria;

public class Quadrato {

	private double lato;

	public Quadrato(double lato) {
		setLato(lato);
	}

	public double getLato() {
		return lato;
	}

	public void setLato(double lato) {
		if (lato >= 0.0)
			this.lato = lato;
	}

	public double perimetro() {
		return getLato() * 4.0;
	}

	public double area() {
		return getLato() * getLato();
	}

}

Parallelepipedo

package geometria;

public class Parallelepipedo extends Quadrato {

	private double altezza;

	public Parallelepipedo(double lato, double altezza) {
		super(lato);
		setAltezza(altezza);
	}

	public double getAltezza() {
		return altezza;
	}

	public void setAltezza(double altezza) {
		if (altezza >= 0.0)
			this.altezza = altezza;
	}

	@Override
	public double area() {
		return super.area() * 2.0 + super.perimetro() * getAltezza();
	}

	public double volume() {
		return super.area() * getAltezza();
	}

}

Cerchio e Cilindro per la 3E

Costruire la classe Cerchio avente come attributo privato il raggio e come metodi: circonferenza, area, toString, equals e clone; derivare da Cerchio la sottoclasse Cilindro avente in più l’attributo altezza e in più il metodo volume; eseguire l’override di area (in maniera che fornisca correttamente l’area totale del cilindro), toString, equals e clone.

Paraboloide per la 5E

Modificare il progetto paraboloide (Paraboloide.zip) in modo da poter modificare dal JFrame del Main la posizione dell’osservatore e del punto osservato. A tal fine inserire 3 JTextField per X, Y, Z dell’osservatore e altrettanti per il punto osservato; inserire un bottone Imposta che legge le 6 coordinate suddette e le memorizza in altrettanti attributi di GLRenderer. Spostare in GLRenderer la trasformazione di visualizzazione da reshape a display in maniera tale da aggiornarla immediatamente durante l’animazione appena si preme il tasto Imposta.
In alternativa ai 6 JTextField provare ad utilizzare 6 JSpinner, che automaticamente memorizzano in GLRenderer i nuovi valori delle coordinate non appena si clicca o si modificano i valori in essi contenuti, eliminando così la necessità del tasto Imposta.


paraboloideRappresentare nell’intervallo -2<x<2 e -2<y<2 il paraboloide di equazione f(x,y) = x² + y².
Realizzare un ciclo for su y da -2 a 2 con incrementi dy=0,25 annidato all’interno di un ciclo for su x da -2 a 2 con incrementi dx=0,25 in maniera da realizzare un reticolato da 16×16 quadrilateri.
Ogni quadrilatero avrà come vertici i punti A(x,y,z1), B(x+dx,y,z2), C(x+dx,y+dy,z2), D(x,y+dy,z4) con z1=f(x,y), z2=f(x+dx,y), z3=f(x+dx,y+dy), z4=(x,y+dy).
Il colore del singolo vertice può essere calcolato mediante la formula: R=z/8.0; G=0; B=1.0-z/8.0 ottenendo un colore che sfuma dal rosso per z=0 nel centro del reticolato (x=0 e y=0) ad un blu per z=8 sui 4 vertici (x=±2 e y=±2).
Ruotare di 30° intorno a X e di a variabile intorno a Z.

Scuola per la 3E

Classe.java

public class Classe {

	private int anno;
	private char sezione;
	private int allievi;

	public Classe(int anno, char sezione, int allievi) {
		this.anno = anno;
		this.sezione = sezione;
		if (allievi >= 0) {
			this.allievi = allievi;
		} else {
			this.allievi = 0;
		}

	}

	public Classe(int anno, char sezione) {
		this.anno = anno;
		this.sezione = sezione;
		allievi = 0;
	}

	public String toString() {
		return "Classe: " + anno + sezione + " Numero allievi: " + allievi;
	}

	public int getAnno() {
		return anno;
	}

	public void setAnno(int anno) {
		this.anno = anno;
	}

	public char getSezione() {
		return sezione;
	}

	public void setSezione(char sezione) {
		this.sezione = sezione;
	}

	public int getAllievi() {
		return allievi;
	}

	public void setAllievi(int allievi) {
		if (allievi >= 0) {
			this.allievi = allievi;
		}
	}
	
}

Main.java

public class Main {
	public static void main(String[] args) {
		Classe miaClasse = new Classe(3, 'E', 22);
		miaClasse.setAllievi(-100000);
		System.out.println(miaClasse.toString());
	}

}

Frazione per la 3E

Inserire nei costruttori e nei vari metodi il controllo delle situazioni di errore ovvero quando il risultato è impossibile (denominatore 0). In  tal caso non deve essere eseguito il calcolo sulla frazione e deve essere visualizzato un messaggio di avviso con i valori delle frazioni coinvolte nell’operazione.

Frazione.java

public class Frazione {
	
	public int num, den;
	
	public Frazione(int numVal, int denVal) {
		num = numVal;
		den = denVal;
	}
	
	public Frazione() {
		num = 0;
		den = 1;
	}

	public Frazione(int numero) {
		num = numero;
		den = 1;
	}
	
	public void add(Frazione f) {
		int denComune = den * f.den;
		num = num * f.den + f.num * den;
		den = denComune;
		int d = Int.mcd(num, den); 
		num /= d;
		den /= d;
	}
	
	public void sot(Frazione f) {
		int denComune = den * f.den;
		num = num * f.den - f.num * den;
		den = denComune;
		int d = Int.mcd(num, den); 
		num /= d;
		den /= d;
	}
	
	public void mol(Frazione f) {
		num *= f.num;
		den *= f.den;
		int d = Int.mcd(num, den); 
		num /= d;
		den /= d;
	}
	
	public void div(Frazione f) {
		num *= f.den;
		den *= f.num;
		int d = Int.mcd(num, den); 
		num /= d;
		den /= d;
	}
	
	@Override
	public String toString() {
		return num + "/" + den;
	}

}

Int.java

public class Int {

	// Algoritmo di Euclide per la ricerca del MCD
	public static int mcd(int a, int b) {
		int t;
		while (b != 0) {
			t = b;
			b = a % b;
			a = t;
		}
		return a;
	}

}

Veicoli

Veicolo

package veicoli;

public class Veicolo {
	
	public int cilindrata;
	public String targa;
	public int serbatoio;
	
	// overloading dei costruttori
	
	// costruttore completo
	public Veicolo(int cilindrataVal, String targaVal, int serbatoioVal) {
		cilindrata = cilindrataVal;
		targa = targaVal;
		serbatoio = serbatoioVal;
	}
	
	// costruttore con serbatoio vuoto 
	public Veicolo(int cilindrataVal, String targaVal) {
		cilindrata = cilindrataVal;
		targa = targaVal;
		serbatoio = 0;
	}

	// costruttore senza targa
	public Veicolo(int cilindrataVal, int serbatoioVal) {
		cilindrata = cilindrataVal;
		targa = "";
		serbatoio = serbatoioVal;
	}
	
	@Override
	public String toString() {
		return "Veicolo (cilindrata = " + cilindrata + ", targa = " + targa + ", serbatoio = " + serbatoio + ")";
	}

	public boolean inRiserva() {
		return serbatoio<5;
	}
	
	public void riempieSerbatoio(int benzina) {
		serbatoio += benzina;
	}
	
}

Main

package veicoli;

public class Main {

	public static void main(String[] args) {
		
		Veicolo auto1 = new Veicolo(1600, "AP 327 IL", 10);
		Veicolo auto2 = new Veicolo(1800, 5);
		Veicolo auto3 = new Veicolo(1400, "CN 234578");
		
		System.out.println("Auto 1: " + auto1.toString());
		System.out.println("Auto 2: " + auto2.toString());
		System.out.println("Auto 3: " + auto3.toString());
		
		System.out.println("Auto 1 in riserva? " + auto1.inRiserva());
		System.out.println("Auto 2 in riserva? " + auto2.inRiserva());
		System.out.println("Auto 3 in riserva? " + auto3.inRiserva());
		
		auto1.riempieSerbatoio(35);
		auto2.riempieSerbatoio(10);
		auto3.riempieSerbatoio(30);
		
		System.out.println("Auto 1: " + auto1.toString());
		System.out.println("Auto 2: " + auto2.toString());
		System.out.println("Auto 3: " + auto3.toString());
	}

}

Gioco di riflessi

Creare un videogioco che fa comparire ad intervalli regolari su un pannello bianco dei cerchi rossi di raggio variabile da 10 a 50 pixel per un tempo di 0,5 secondi. L’utente deve cliccarci sopra in tempo prima che scompaiano; in tal caso il raggio del cerchio va ad accumularsi ad un punteggio totale visualizzato su un pannello in alto. Sul pannello in basso devono esserci i pulsanti Start e Stop.

Progetto Eclipse: GiocoDiRiflessi.zip

Classe Punto

Creare una classe Punto con i due parametri double x e y. Devono esserci 2 costruttori:

  • Punto(double xVal, double yVal)
  • Punto()

Devono esserci i metodi:

  • getX() che restituisce l’ascissa
  • getY() che restituisce l’ordinata
  • distanza() che restituisce la distanza dall’origine
  • isO() che fornisce vero o falso se il punto si trova in O oppure no
  • isAsseX() che fornisce vero o falso se il punto si trova sull’asse X
  • isAsseY() che fornisce vero o falso se il punto si trova sull’asse Y
  • toString() che visualizza le coordinate del punto nel formato (x,y)

Orologio digitale

Creare JOra sottoclasse di JPanel con lo scopo di visualizzare l’ora di sistema con una scritta grande gialla su sfondo blu. L’ora deve essere aggiornata 100 volte al secondo e deve visualizzare l’ora nel formato hh:mm:ss.cc fino ai centesimi di secondo. Utilizzando un’interfaccia fare in modo che cliccando con il mouse una volta l’orologio si fermi mostrando 00:00:00.00 e cliccando una seconda volta riparta mostrando nuovamente l’ora di sistema. Leggere la documentazione sul metodo currentTimeMillis della classe System.

Esempio:   Ora: 08:52:31.16