Ho un array bidimensionale di oggetti Object.
Vorrei creare un metodo scambia(Object o) della classe Object in modo tale che eseguendo:
array[i][j].scambia(array[x][y]) i due oggetti venissero scambiati di posizione nell'array.
Come posso fare?
Ho un array bidimensionale di oggetti Object.
Vorrei creare un metodo scambia(Object o) della classe Object in modo tale che eseguendo:
array[i][j].scambia(array[x][y]) i due oggetti venissero scambiati di posizione nell'array.
Come posso fare?
Con un singolo metodo (appartenente ad uno dei due oggetti interessati nell'operazione) quello che vuoi fare è impossibile
devi utilizzare per forza una funzione globale (o comunque non appartenente alla classe Object)
oppure incapsulando gli oggetti in classi che simulano il funzionamento di una matrice e agendo con metodi definiti in quest'ultima classe
Ultima modifica di AlexKidd : 10-08-2009 alle ore 21.10.46
Cosa intendi per incapsulare gli oggetti in classi che simulano il funzionamento di una matrice?
Una cosa del genere (più o meno)
Codice PHP:
class Matrice
{
private $array;
public addObj(Obj $o, $i, $j)
{
$array[$i][$j]=$o;
}
public getObj($i, $j)
{
return $array[$i][$j];
}
public delObj($i, $j)
{
unset($array[$i][$j]);
}
public swapObj($fi,$fj,$ti,$tj)
{
$tmp=$array[$ti][$tj];
$array[$ti][$tj]=$array[$fi][$fj];
$array[$fi][$fj]=$tmp;
}
}
puoi aggiungere, rimuovere, estrarre e scambiare di posizione gli elementi della matrice
Posso richiamare ad esempio il metodo addObj della classe Matrice all'interno di un metodo della classe degli oggetti che formano l'array?
Si se ogni oggetto ha un riferimento, al suo interno, che punta alla matrice che li contiene
puoi scegliere se passare il riferimento al momento in cui viene creato l'oggetto oppure passarlo ogni volta nel metodo che che richiama addObj (questa seconda soluzione è più pulita se hai più di una matrice)