Una delle tecniche utilizzate nei giochi a due avversari in cui uno è una macchina è quella del min-max. Esaminiamola e costruiamone una implementazione object-oriented in C++
Ready for the fame and fortune you deserve? Set yourself up for success and create a marketing plan to share your online portfolio. Gain new clients and grow your career as a creative professional
Una delle tecniche utilizzate nei giochi a due avversari in cui uno è una macchina è quella del min-max. Esaminiamola e costruiamone una implementazione object-oriented in C++
Ready for the fame and fortune you deserve? Set yourself up for success and create a marketing plan to share your online portfolio. Gain new clients and grow your career as a creative professional
1. Metodi
Sono simili alle funzioni del C, sia per dichiarazione, che per uso, ma
nel caso di java sono sempre all’interno di una classe e quindi
possono essere associate:
• alla classe come categoria: metodo statico
• a un particolare oggetto della classe: metodo non statico
2. Dichiarazione e definizione
public class Triangolo
{
//Attributi
private double base;
private double altezza;
….
public double area()
{ //metodo non statico applicato a questo particolare triangolo
return base*altezza/2;
}
public static double calcolaArea(double b, double h)
{//metodo statico applicato a qualsiasi triangolo
return b*h/2;
}
….
3. public static void main(String args[])
{
double x=Triangolo.calcolaArea(4,5); //non esiste alcun triangolo
//come oggetto
//si usa semplicemente una
//funzione
Triangolo tr=new Triangolo(10,3);
//viene usato un costruttore per ora non ancora definito
double a=tr.area(); //Uso del metodo non statico
}
}// class Triangolo
4. Vari tipi di metodi
public int max(int tab[]) //riceve come parametro un array (per riferimento)
{ int m=0;
…..
return m; //ritorna un intero
}
public void stampa() //metodo senza parametri e senza valori di ritorno
{
}
public int[] elabora(String s) //metodo che ritorna un array
{ int tab[]=new int[s.length()];
…..
retrun tab;
}
5. Overloading
All’interno di una classe è possibile definire più metodi con lo stesso
nome, purché abbiano parametri diversi in numero e/o in tipo.
public void stampaMsg()
{
stampaMsg(“C’è stato un errore”);
}
public void stampaMsg(String msg)
{
System.out.println(msg);
}
6. Valore o riferimento
I tipi primitivi vengono sempre passati per valore.
I tipi non primitivi e gli array vengono sempre passati per riferimento.
Nel caso di valori di ritorno non primitivi il garbage collector non distrugge
l’oggetto il cui riferimento viene ritornato:
public int[] resize(int tab[], int inc)
{
int dim=tab.length;
int newTab[]=new int[dim+inc];
for(int i=0;i<dim;i++)
{
newTab[i]=tab[i];
}
return newTab;
}
7. Valore o riferimento
I tipi primitivi vengono sempre passati per valore.
I tipi non primitivi e gli array vengono sempre passati per riferimento.
Nel caso di valori di ritorno non primitivi il garbage collector non distrugge
l’oggetto il cui riferimento viene ritornato:
public int[] resize(int tab[], int inc)
{
int dim=tab.length;
int newTab[]=new int[dim+inc];
for(int i=0;i<dim;i++)
{
newTab[i]=tab[i];
}
return newTab;
}