Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - delucidazioni riguardo assegnazione tra reference
Forum - Java - delucidazioni riguardo assegnazione tra reference

Avatar
alexrr2iggs (Normal User)
Newbie


Messaggi: 4
Iscritto: 27/09/2017

Segnala al moderatore
Postato alle 17:32
Giovedì, 28/09/2017
salve! volevo chiederevi delle dellucidazioni sull mecanismo dell'assegnazione tra reference.
In particolare ho fatto questa prova qua:

Codice sorgente - presumibilmente Java

  1. public class Madre
  2. {
  3.         public String nomeOgetto="oggetto Madre, ";
  4.         public String stringaDefault="default madre";
  5.        
  6.        
  7.         public Madre(String s)
  8.         {
  9.                 this.nomeOgetto+=" "+s;
  10.                 System.out.println("nuovo ogetto Madre \""+s+"\" istanziato");
  11.         }
  12.        
  13.         public void metodoComune()
  14.         {
  15.                 System.out.println("metodo comune Madre");
  16.         }
  17.        
  18.         public void metodoMadre()
  19.         {
  20.                 System.out.println("metodoMadre");
  21.                 System.out.println(nomeOgetto+'\n'+stringaDefault);
  22.                
  23.         }
  24.        
  25.         public void aStringa()
  26.         {
  27.                 System.out.println(this.toString());
  28.                 System.out.println("nomeOggetto = \""+nomeOgetto+"\"");
  29.                 System.out.println("stringaDefault = \""+stringaDefault+"\"\n");
  30.                
  31.         }
  32. }



Codice sorgente - presumibilmente Java

  1. public class Figlia extends Madre
  2. {
  3.         public String nomeOgetto="oggetto Figlia";
  4.         public String stringaDefault="default figlia";
  5.        
  6.        
  7.         public  Figlia(String s)
  8.         {
  9.                 super(s);
  10.                 System.out.println("nuovo ogetto Figlia \""+s+"\" istanziato");
  11.         }
  12.        
  13.         public void metodoComune()
  14.         {
  15.                 System.out.println("metodo comune Figlia");
  16.         }
  17.        
  18.        
  19.         public void metodoFiglia()
  20.         {
  21.                 System.out.println("metodo Figlia");
  22.         }
  23.        
  24.         public void aStringa()
  25.         {
  26.                 System.out.println(this.toString());
  27.                 System.out.println("nomeOggetto = \""+nomeOgetto+"\"");
  28.                 System.out.println("stringaDefault = \""+stringaDefault+"\"\n");
  29.                
  30.         }
  31. }




Codice sorgente - presumibilmente Java

  1. public class Main
  2. {
  3.         static Madre m=new Madre("mdr");
  4.         static Figlia f=new Figlia("fgl");
  5.        
  6.         static void info()
  7.         {
  8.                 m.aStringa();
  9.                 System.out.println(m.nomeOgetto+'\n'+m.stringaDefault+"\n\n");
  10.                 f.aStringa();
  11.                 System.out.println(f.nomeOgetto+'\n'+f.stringaDefault+"\n\n");
  12.         }
  13.        
  14.         public static void main(String[] args)
  15.         {
  16.                 System.out.print('\n');
  17.                 info();
  18.                
  19.                
  20.                 m.stringaDefault="string M. diversa";
  21.                 f.stringaDefault="stringa F. diversa";
  22.                
  23.                 System.out.println("dopo aver cambiato il vallore delle stringhe \"stringaDefault\" degli ogetti puntati da m ed f \n");
  24.                 info();
  25.                
  26.                 m=f;
  27.                
  28.                 System.out.println("dopo aver assegnato il vallore di f ad m \n");
  29.                 info();
  30.                
  31.                 m.metodoComune();
  32.                 System.out.print('\n');
  33.                 m.metodoMadre();
  34.                 System.out.print('\n');
  35.                 f.metodoMadre();
  36.                
  37.                 //m.metodoFiglia();  The method metodoFiglia() is undefined for the type Madre
  38.         }
  39.        
  40.        
  41. }





output:

nuovo ogetto Madre "mdr" istanziato
nuovo ogetto Madre "fgl" istanziato
nuovo ogetto Figlia "fgl" istanziato

testReference.Madre@33909752
nomeOggetto = "oggetto Madre,  mdr"
stringaDefault = "default madre"

oggetto Madre,  mdr
default madre


testReference.Figlia@55f96302
nomeOggetto = "oggetto Figlia"
stringaDefault = "default figlia"

oggetto Figlia
default figlia


dopo aver cambiato il vallore delle stringhe "stringaDefault" degli ogetti puntati da m ed f

testReference.Madre@33909752
nomeOggetto = "oggetto Madre,  mdr"
stringaDefault = "string M. diversa"

oggetto Madre,  mdr
string M. diversa


testReference.Figlia@55f96302
nomeOggetto = "oggetto Figlia"
stringaDefault = "stringa F. diversa"

oggetto Figlia
stringa F. diversa


dopo aver assegnato il vallore di f ad m

testReference.Figlia@55f96302
nomeOggetto = "oggetto Figlia"
stringaDefault = "stringa F. diversa"

oggetto Madre,  fgl
default madre


testReference.Figlia@55f96302
nomeOggetto = "oggetto Figlia"
stringaDefault = "stringa F. diversa"

oggetto Figlia
stringa F. diversa


metodo comune Figlia

metodoMadre
oggetto Madre,  fgl
default madre

metodoMadre
oggetto Madre,  fgl
default madre




penso di aver capito cosa e sucesso (ma probabilmente no), quello che invecce non capisco e il meccanismo che sta alla base.
quello che ho capito l'ho schemmatizato cosi:





alexrr2iggs ha allegato un file: Page1.jpg (960926 bytes)
Clicca qui per guardare l'immagine

Ultima modifica effettuata da alexrr2iggs il 28/09/2017 alle 17:33
PM Quote
Avatar
alexrr2iggs (Normal User)
Newbie


Messaggi: 4
Iscritto: 27/09/2017

Segnala al moderatore
Postato alle 17:37
Giovedì, 28/09/2017
la schematizazione e concettualmente correta?

penso che il problema sia il fatto che non ho capito molto bene come funzionano i reference, qualli vallori contengono.

ps. sopra ho messo in allegato il primo schema (prima dell assegnazione), il secondo (dopo l'assegnazione) lo allego qua


alexrr2iggs ha allegato un file: Page2.jpg (1018529 bytes)
Clicca qui per guardare l'immagine
PM Quote