Ciao , sono un programmatore alle primissime armi , questi sono due programmi sono stai presi da un power-point della mia professoressa ,
e dovrebbero servire a esplicare meglio il concetto di legame per valore e il passaggio di parametri di tipo riferimento ( i quali credo di aver compreso) , non ho infatti dubbi su cosa il programma mi darà poi in uscita . Il mio problema è che i programmi non girano, quando compilo incontro una serie di errori che non riesco a risolvere , o meglio risolto uno ne esce fuori un altro ... Ho vari dubbi a questo punto : java legge Numero e Quadrato come fossero Number e Square ? ( o va scritto esclusivamente in inglese?) getValore o getValue funzionano su un oggetto Numero ? devo importare qualcosa ? (ho provato java.lang.Object.* per il quadrato per esempio ma cmq non riconosce in nessun modo ne la classe Quadrato o Square che sia nè il getLato o getSide o .side ) . Gli errori di compilazione sono sempre del tipo " cannot find symbol" riferiti appunto a Numero,Quadrato,.getValore e getLato... e un "Number is abstract cannot be instanciated ". Forse sono semplicemente scritti per non essere fatti girare e servono solo per farti visualizzare meglio la cosa ? . Se riusciste a farli andare senza cambiarne la struttura ve ne sarei grato , magari spiegando il perchè andava fatto in quel modo e come utilizzare queste classi senza cadere in cascate di errori anche al di fuori di questi esempi. Spero le mie incertezze non siano del tutto idiozie e vi ringrazio in anticipo per il tempo dedicatomi.
Primo:
class DemoNumeroPassPar{
public static void alfa(Numero n){
// viene creato un nuovo oggetto referenziato da n
n = new Numero(50);
System.out.println("n1 in alfa = " + n.getValore());}
public static void beta(Numero n){
// viene modificato lo stato dell'oggetto referenziato da n
n.setValore(50);
System.out.println("n1 in beta = " + n.getValore());}
public static void main(String[] args) {
Numero n1;
n1 = new Numero(10); //crea il numero
System.out.println("n1 nel main = " + n1.getValore());
alfa(n1);
System.out.println("n1 nel main dopo alfa = “ +n1.getValore());
beta(n1);
System.out.println("n1 nel main dopo beta= " + n1.getValore());
}
}
Secondo:
class LegamePerValore5 {
public static void alfa(Quadrato q) {
System.out.println(q.getLato()); // sicuramente 5
q = new Quadrato(6);
System.out.println(q.getLato()); // sicuramente 6
}
public static void main(String[] args) {
Quadrato k = new Quadrato(5);
System.out.println(k.getLato()); // sicuramente 5
alfa(k);
System.out.println(k.getLato()); // 5 oppure 6?
}
}