Biblioteca per la 4E

Progetto Eclipse: Biblioteca-Vers3
Progetto aggiornato alla lezione del 3 febbraio 2017. Studiare il progetto prestando attenzione ai metodi di lettura e scrittura degli oggetti Libro sul file Biblioteca.dat; il compito da svolgere è sul quaderno elettronico.

Progetto Eclipse: Biblioteca-Vers2
Progetto aggiornato alla lezione del 30 gennaio 2017. Studiare il progetto prestando attenzione all’utilizzo della classe ArrayList in associazione con i generics. Studiare la struttura della finestra di dialogo modale JInputLibro per l’input dei dati.

Progetto Eclipse: Biblioteca-Vers1
Prima versione del progetto Biblioteca senza l’utilizzo dei generics e mediante la classe Vector; l’input dei dati avviene mediante una sequenza di richieste di un dato alla volta.

File di esempio sull’utilizzo dei generics: Il tipo Generics in Java.pdf

Compito di informatica per lunedì 12/12/16

Classe JSemaforo realizzata in classe:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;

import javax.swing.JComponent;

public class JSemaforo extends JComponent {

	public final int ROSSO = 0, VERDE = 1, GIALLO = 2;

	private boolean acceso = false;
	private int stato = ROSSO;

	public JSemaforo() {
		this.setPreferredSize(new Dimension(50, 150));

	}

	public void paintComponent(Graphics g) {
		super.paintComponent(g);

		g.setColor(Color.GRAY);
		g.fillRoundRect(0, 0, 50, 150, 10, 10);

		if (acceso) {
			switch (stato) {
			case ROSSO:
				g.setColor(Color.RED);
				g.fillOval(5, 5, 40, 40);
				break;
			case VERDE:
				g.setColor(Color.GREEN);
				g.fillOval(5, 105, 40, 40);
				break;
			case GIALLO:
				g.setColor(Color.YELLOW);
				g.fillOval(5, 55, 40, 40);
				break;
			}
		} else {
			g.setColor(Color.YELLOW);
			g.fillOval(5, 55, 40, 40);
		}
	}

	public void successivo() {
		stato++;
		if (stato > GIALLO)
			stato = ROSSO;
		repaint();
	}

	public int getStato() {
		return stato;
	}

	public void setStato(int stato) {
		this.stato = stato;
	}

	public boolean isAcceso() {
		return acceso;
	}

	public void setAcceso(boolean acceso) {
		this.acceso = acceso;
	}

}

Esercizio di informatica per venerdì 09/12/2016

graficoxyCreare JDati (sottoclasse di JOxy) che permetta l’inserimento e la memorizzazione di un insieme di punti sul piano cartesiano: cliccando con il mouse in un punto, la coppia di coordinare reali deve essere memorizzata in un array e visualizzata sul grafico. Sul grafico i punti inseriti devono essere rappresentati da un quadratino con a fianco le coordinate reali e i punti devono essere uniti tra di loro. Vedi figura a destra (clicca per ingrandire).

Facoltativo: cliccando su un punto già inserito, il punto deve sparire dal grafico e le linee devono aggiornarsi di conseguenza.

Esercizio di informatica per lunedì 5/12/2016

Realizzare un programma Java con layout BorderLayout avente sulla finestra principale nel centro un oggetto simile a JFunzioni e in alto un pannello con la possibilità di inserire un polinomio di 5 grado (al massimo). I coefficienti del polinomio devono potersi inserire in 6 caselle di testo intervallate dalle label ” x5 + “, “x4 + “, “x3 + “, “x2 + “, “x + “; deve essere presente sulla destra un bottone “Inserisci” che inserisce nell’array della classe suddetta il polinomio in quel momento presente e lo visualizza con un colore scelto a caso.

Progetto Eclipse aggiornato a venerdì 02/12/2016: Grafica.zip

Esercizio di informatica per la 4E

Progetto Eclipse: grafica.zip

Studiare il progetto in dettaglio e inserire altre funzioni sullo stesso grafico:

y = -2 x^2 + x – 3

y = x^3 – x

y = cos x

y = log x

y = rad.quad(16 – x^2)

NB Negli ultimi 2 casi è necessario apportare le dovute modifiche al metodo paintComponent di JFunzioni per controllare le eccezioni che possono presentarsi nel calcolo di f(x).

Classe da completare a casa: JRetta

Creare JRetta sottoclasse di JOxy avente i due attributi “m” e “q” che disegna all’interno di un sistema di riferimento il grafico della retta in forma esplicita.

package it.liceocuneo.math;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.io.Serializable;

import javax.swing.JPanel;

public class JOxy extends JPanel implements Serializable {

	private String titleX = "X", titleY = "Y";
	private int scaleX = 40, scaleY = 40;
	private int traslX = 10, traslY = 10;

	public JOxy() {
		this.setPreferredSize(new Dimension(200, 200));
		this.setBackground(Color.WHITE);
	}

	public int xg(double xr) {
		return (int) Math.round(this.getWidth() * traslX / 100 + xr * scaleX);
	}

	public int yg(double yr) {
		return (int) Math.round(this.getHeight() * (100 - traslY) / 100 - yr * scaleY);
	}

	public double xr(int xg) {
		return (xg - this.getWidth() * traslX / 100) / (double) scaleX;
	}

	public double yr(int yg) {
		return (this.getHeight() * (100 - traslY) / 100 - yg) / (double) scaleY;
	}

	public double getMinX() {
		return xr(0);
	}

	public double getMaxX() {
		return xr(this.getWidth());
	}

	public double getMinY() {
		return yr(this.getHeight());
	}

	public double getMaxY() {
		return yr(0);
	}

	@Override
	protected void paintComponent(Graphics g) {
		super.paintComponent(g);

		int w = this.getWidth(), h = this.getHeight();

		// asse X
		g.drawLine(0, yg(0), w, yg(0));
		for (int i = (int) getMinX(); i <= (int) getMaxX(); i++) {
			g.drawLine(xg(i), yg(0) - 5, xg(i), yg(0) + 5);
			g.drawString(i + "", xg(i) - g.getFontMetrics().stringWidth(i + "") / 2, yg(0) + 5 + g.getFontMetrics().getAscent());
		}
		g.drawString(titleX, w - 5 - g.getFontMetrics().stringWidth(titleX), yg(0) - 10);

		// asse Y
		g.drawLine(xg(0), 0, xg(0), h);
		for (int i = (int) getMinY(); i <= (int) getMaxY(); i++) {
			g.drawLine(xg(0) - 5, yg(i), xg(0) + 5, yg(i));
			g.drawString(i + "", xg(0) - 7 - g.getFontMetrics().stringWidth(i + ""), yg(i) - 1 + g.getFontMetrics().getAscent() / 2);
		}
		g.drawString(titleY, xg(0) + 10, 15);
	}

	public String getTitleX() {
		return titleX;
	}

	public void setTitleX(String titleX) {
		this.titleX = titleX;
	}

	public String getTitleY() {
		return titleY;
	}

	public void setTitleY(String titleY) {
		this.titleY = titleY;
	}

	public int getScaleX() {
		return scaleX;
	}

	public void setScaleX(int scaleX) {
		if (scaleX >= 20)
			this.scaleX = scaleX;
	}

	public int getScaleY() {
		return scaleY;
	}

	public void setScaleY(int scaleY) {
		if (scaleY >= 20)
			this.scaleY = scaleY;
	}

	public int getTraslX() {
		return traslX;
	}

	public void setTraslX(int traslX) {
		this.traslX = traslX;
	}

	public int getTraslY() {
		return traslY;
	}

	public void setTraslY(int traslY) {
		this.traslY = traslY;
	}

}

UFO

Progetto Eclipse: UFO.zip

Creare un semplice programma con pannello JPrato (verde) che possa contenere vari oggetti JFiore (tipo margherita). Le margherite vengono inserite con il click del mouse. In JPrato deve esserci una JLabel in alto a sinistra che tenga il conteggio delle margherite presenti. Cliccando con il mouse su una margherita deve diventare invisibile.