Originariamente inviato da jaso
Buongiorno e buona pasqua
Altrettanto.
Originariamente inviato da jaso
Secondo la giusta programmazione è corretto riferirsi a oggetti e quindi metodi diversi dalla classe diversa da quella in cui mi trovo in quel momento? È corretto come ho implementato il metodo Moltiplica() ?
L'idea, come ho detto prima, era quella di semplificare la main C.Moltiplica(A,B);
Quello che è, secondo me, discutibile è il fatto che il metodo per la moltiplicazione viene invocato sull'oggetto che poi fa da destinazione del risultato.
Non hai mostrato il costruttore della classe e nell'esempio hai istanziato semplicemente new Matrice(), cioè senza argomenti.
In realtà il costruttore dovrebbe ricevere numero di righe/colonne per istanziare l'array interno .... altrimenti a cosa servirebbe??.
Quindi se facessi es.:
codice:
Matrice A = new Matrice(2, 3);
....riempi A....
Matrice B = new Matrice(4, 2);
....riempi B....
Matrice C = new Matrice(2, 1);
C.Moltiplica(A,B);
Che cosa dovrebbe succedere?? Per il risultato della moltiplicazione mica è detto che la matrice C istanziata inizialmente di 2x1 sia sufficiente e vada bene (nel caso sopra no, infatti). Il metodo di moltiplicazione dovrebbe cambiare tutta la struttura dati di C creando una nuova matrice che sia appropriata, visto che solo l'algoritmo di moltiplicazione "sa" come determinare la giusta dimensione del risultato.
Ma allora a cosa sarebbe servito istanziare comunque una matrice C di una qualche dimensione arbitraria?? A niente.
Il metodo di moltiplicazione potrebbe (e dovrebbe) invece operare con il 'this' (una Matrice su cui è invocato) e su un'altra Matrice ricevuta come argomento. E il risultato restituirlo come una nuova Matrice.
codice:
Matrice matA = new Matrice(2, 3);
Matrice matB = new Matrice(4, 2);
...
Matrice matC = matA.moltiplica(matB);