Classi astratte e interfacce

Inserire all’interno della classe astratta Figura due attributi privati double x e y con relativi getter e setter. Modificare la classe quadrato in maniera tale da utilizzare questi due nuovi attributi per definire la posizione del quadrato; aggiungere un nuovo costruttore che permetta anche inserimento delle coordinate della posizione. Creare analogamente a Quadrato la classe Rettangolo con le stesse funzionalità di quadrato. Scrivere per entrambe le figure i metodi muove e ingrandisce per spostare la posizione (x,y) e modificare le dimensioni.

Soluzione: classiastratte.zip

Ripasso di Java

Progetto Eclipse: cellulare.zip

Creare all’interno delle due classi i metodi clone e equals; creare la sottoclasse di Cellulare di nome CellulareConsumo in cui è presente l’attributo creditoResiduo; devono essere presenti anche i metodi ricarica(double valore) e telefonata(durataInMinuti) che servono per ricaricare il credito e per consumarlo (utilizzare la formula costo telefonata = 0.15 + 0.05 * durataInMinuti).

Calcolatrice goniometrica per la 3E

CalcolatriceGoniometricaCreare l’applicazione rappresentata qui a destra che calcola le 3 funzioni goniometriche dell’angolo inserito in gradi o in radianti.
Se l’angolo è già in radianti è sufficiente calcolare direttamente seno, coseno e tangente con le funzioni Math.sin(a), Math.cos(a), Math.tan(a).
Se l’angolo è in gradi è necessario prima convertirlo in radianti con la formula: a*=Math.PI/180.0

Manipolazione delle immagini

Algoritmo visto in classe per il ribaltamento orizzontale (destra/sinistra) dell’immagine; scrivere quello per il ribaltamento verticale (alto/basso) chiamando il metodo ribalta(). Cercare su internet la documentazione dei metodi getRGB() e setRGB().

public void specchio() {
	int pixelLeft, pixelRight;
	
	int h = immagine.getHeight();
	int w = immagine.getWidth();
	
	for (int y=0; y<h; y++)
		for (int x=0; x<w/2; x++) {
			pixelLeft=immagine.getRGB(x, y);
			pixelRight=immagine.getRGB(w-1-x, y);
			immagine.setRGB(x, y, pixelRight);
			immagine.setRGB(w-1-x, y, pixelLeft);
		}
	lblImmagine.repaint();
}

Sondaggio in preparazione alla verifica per la 5E

Creare un form per un sodaggio on-line con le domande:

  1. Classe (casella combinata con numeri da 1 a 5 e valore iniziale “Seleziona la classe”)
  2. Sezione (casella combinata con i caratteri da A a I e valore iniziale “Seleziona la sezione”)
  3. Domanda “Ti sono piaciuti i 5 anni trascorsi al liceo Peano?” (risposta radio button con valori da 1 a 4)
  • Creare la servlet “memorizza” che memorizza i 3 dati inseriti precedentemente insieme alle domande.
  • Creare la servlet “elenca” che visualizza tutti i dati inseriti.
  • Creare la servlet “statistica” che conteggia per ogni domanda quante sono le risposte 1, 2, 3, 4 eseguendo un select del tipo:
    SELECT * FROM sondaggio WHERE risposta1=1
    SELECT * FROM sondaggio WHERE risposta1=2
    SELECT * FROM sondaggio WHERE risposta1=3
    SELECT * FROM sondaggio WHERE risposta1=4
    e, conteggiando il numero di record estratti, stampa le 4 percentuali.

Progetto NetBeans: Sondaggio.zip

Paint

paint-icon
Icona per Paint

Paint

Main.java

	private JLabel lblImmagine;
	private BufferedImage immagine;
...
        // metodi associati agli eventi
	public void nuovo() {
		immagine = new BufferedImage(800, 600, BufferedImage.TYPE_INT_RGB);
		lblImmagine.setIcon(new ImageIcon(immagine));
	}
	
	public void apri() {
		immagine = BufferedImageIO.read();
		lblImmagine.setIcon(new ImageIcon(immagine));
	}
	
	public void salva() {
		BufferedImageIO.write(immagine);
	}

BufferedImageIO.java

package paint;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileNameExtensionFilter;

public class BufferedImageIO {

	public static BufferedImage read() {
		BufferedImage immagine = null;
		JFileChooser fc = new JFileChooser();
		fc.setAcceptAllFileFilterUsed(false);
		fc.addChoosableFileFilter(new FileNameExtensionFilter("Tutti i file immagine (*.gif; *.jpg; *.jpeg; *.png)", "gif", "jpg", "jpeg", "png"));
		fc.setAcceptAllFileFilterUsed(true);
		if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
			try {
				immagine = ImageIO.read(fc.getSelectedFile());
//				JOptionPane.showMessageDialog(null, "Immagine caricata", "Informazione", JOptionPane.INFORMATION_MESSAGE);
			} catch (FileNotFoundException e) {
				JOptionPane.showMessageDialog(null, "File non trovato", "Errore", JOptionPane.ERROR_MESSAGE);
			} catch (IOException e) {
				JOptionPane.showMessageDialog(null, "Errore di lettura", "Errore", JOptionPane.ERROR_MESSAGE);
			}
		return immagine;
	}

	public static void write(BufferedImage immagine) {
		JFileChooser fc = new JFileChooser();
		fc.setAcceptAllFileFilterUsed(false);
		fc.addChoosableFileFilter(new FileNameExtensionFilter("Formato PNG (*.png)", "png"));
		fc.setAcceptAllFileFilterUsed(true);
		if (fc.showSaveDialog(null) == JFileChooser.APPROVE_OPTION)
			try {
				if (!fc.getSelectedFile().getPath().endsWith(".png"))
					fc.setSelectedFile(new File(fc.getSelectedFile().getPath() + ".png"));
				ImageIO.write(immagine, "png", fc.getSelectedFile());
				JOptionPane.showMessageDialog(null, "Immagine salvata", "Informazione", JOptionPane.INFORMATION_MESSAGE);
			} catch (FileNotFoundException e) {
				JOptionPane.showMessageDialog(null, "File non trovato", "Errore", JOptionPane.ERROR_MESSAGE);
			} catch (IOException e) {
				JOptionPane.showMessageDialog(null, "Errore di scrittura", "Errore", JOptionPane.ERROR_MESSAGE);
			}
	}

}

Calcolatrice

calcolatrice
Icona

Calcolatrice

Progetto Eclipse: Calcolatrice.zip

  • Inserire il tasto π a destra di C, che visualizza il numero π nella casella di testo
  • Inserire i tasti x-1, x2, √, sin, cos, tan
  • Inserire gli eventi per tutti i tasti suddetti
  • Inserire gli eventi sulle voci Base/Scientifica che facciano scomparire o apparire i tasti speciali x-1, x2, √, sin, cos, tan utilizzando il metodo setVisible(true/false) dei bottoni
  • Inserire gli eventi sulle voci Taglia, Copia e Incolla riferiti alla casella di testo