JAVALAB#005 – Lavorare con le classi

Questo è il codice della classe Vettore come lo avrei scritto io.
Sono commentati i nomi dei metodi e non è presente il main. In questo modo ogniuno di voi può testare questa classe e capire cosa fa ogni metodo.
Ovviamente per quello che è stato fatto fino ad ora in laboratorio mancano molti controlli, e alcune delle cose che si faranno in futuro non sono state nemmeno implementate. In questo modo potrete ritrovarvi meglio con le strutture che conoscete.

//Classe "Vettore"
public class Vettore
{
	//ATTRBUTI
	private double[] arr;
 
	//COSTRUTTORI
 
	//Costruttore vuoto con inizializzazione degli array a zero elementi
	public Vettore()
	{
		arr = null;
	}
 
	//Costruttore con assegnazione di un array di interi
	public Vettore(int[] a)
	{
		arr = new double[a.length];
		setArray(a);
	}
 
	//Costruttore con assegnazione di un array di float
	public Vettore(float[] a)
	{
		arr = new double[a.length];
		setArray(a);
	}
 
	//Costruttore con assegnazione di un array di double
	public Vettore(double[] a)
	{
		arr = a;
	}
 
	//Costruttore con assegnazione della dimensione all'array
	public Vettore(int dim)
	{
		arr = new double[dim];
	}
 
	//METODI
 
	//Metodo per il prelevamento dell'array di tipo double
	public double[] getArray()
	{
		if (arr == null)
			return null;
		return arr;
	}
 
	//Metodo per il prelevamento della dimensione dell'array
	public int getArrayLength()
	{
		return arr.length;
	}
 
	//Metodo per il riempimento dell'array con elementi di tipo intero
	public void setArray(int[] a)
	{
		if (a.length != arr.length)
			arr = new double[a.length];
		for (int i=0; i<a.length; i++)
		{
			arr[i] = a[i];
		}
	}
 
	//Metodo per il riempimento dell'array con elementi di tipo float
	public void setArray(float[] a)
	{
		if (a.length != arr.length)
			arr = new double[a.length];
		for (int i=0; i<a.length; i++)
		{
			arr[i] = a[i];
		}
	}
 
	//Metodo per il riempimento dell'array con elementi di tipo double
	public void setArray(double[] a)
	{
		if (a.length != arr.length)
			arr = null;
		arr = a;
	}
 
	//Metodo per la somma vettoriale con un array di tipo intero
	public void sommaVettoriale(int[] a)
	{
		if (a.length == arr.length)
			for (int i=0; i<a.length; i++)
			{
				arr[i] += a[i];
			}
	}
 
	//Metodo per la somma vettoriale con un array di tipo float
	public void sommaVettoriale(float[] a)
	{
		if (a.length == arr.length)
			for (int i=0; i<a.length; i++)
			{
				arr[i] += a[i];
			}
	}
 
	//Metodo per la somma vettoriale con un array di tipo double
	public void sommaVettoriale(double[] a)
	{
		if (a.length == arr.length)
			for (int i=0; i<a.length; i++)
				arr[i] += a[i];
	}
 
	//Metodo per il prodotto per uno scalare
	public void prodottoPerUnoScalare(double k)
	{
		for (int i=0; i<arr.length; i++)
			arr[i] *= k;
	}
 
	//METODI STATICI
 
	//Metodo statico per la somma vettoriale di due array
	public static double[] sommaVettoriale(double[] a, double[] b)
	{
		double[] app;
		if (a.length == b.length)
		{
			app = new double[a.length];
			for (int i=0; i<a.length; i++)
			{
				app[i] = a[i] + b[i];
			}
			return app;
		}
		return null;
	}
 
	//Metodo statico per il prodotto di un vettore per uno scalare
	public static double[] prodottoPerUnoScalare(double[] a, double k)
	{
		double[] app = new double[a.length];
		for (int i=0; i<a.length; i++)
		{
			app[i] = a[i] * k;
		}
		return app;
	}
}

About the Author

Hello everyone! I'm Andrea Rastelli, a 23 year old programmer, designer, 3D animator and compositor. You may follow me on Twitter and Facebook