DOMANDA java.Esempio esercizio già svolto

Marco Aurelio

Utente Attivo
133
11
Salve, ho qualche perplessità nel comprendere la funzione e la sintassi della parte di codice indicata con freccia , se potessi avere qualche delucidazione anche in merito alla "teoria" che mi occorrerebbe rivisionare ve ne sarei grato.

Codice:
    class Docente{
      private String nome;
      private String cognome;
      private int codice;
      private int eta;
      public Docente(String n, String c, int cod, int e)
        {
           nome=n;cognome=c;codice=cod;eta=e;
        }
      public Docente(Docente d){    <-------------
           nome=d.getNome();            <----------------
           cognome=d.getCognome();  <--------------
           codice=d.getCodice();          <--------------
           eta=d.getEta();                     <--------------------
        }
       public String getNome(){
            return nome;
         }
       public String getCognome(){
            return cognome;
         }
       public int getCodice(){
          return codice;
         }
        public int getEta(){
             return eta;
         }
}

class Universita{      <-----------
        private Docente[] docenti;    <-------------
        public Universita(Docente[] d){ <------------
            docenti=new Docente[d.length];    <---------------------
            for(int i=0;i<d.length;i++)            <---------------
                   docenti[i]=new Docente(d[i]);   <-------------
         }
       public int etaMinima(){
              int min=docenti[0].getEta();
               for(int i=1;i<=docenti.length;i++)
                      if(docenti[i].getEta()<min) min=docenti[i].getEta();
               return min;
         }
}
 

BAT

Moderatore
Staff Forum
Utente Èlite
22,923
11,563
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
Il secondo costruttore
public Docente(Docente d)
è completamente sbagliato, devi cancellarlo, hai già un costruttore che inizializza gli attributi di classe
 

Marco Aurelio

Utente Attivo
133
11
Il secondo costruttore
public Docente(Docente d)
è completamente sbagliato, devi cancellarlo, hai già un costruttore che inizializza gli attributi di classe

capito, il guaio è che è una traccia esempio ufficiale, allego ciò che è stato richiesto:

Scrivere una classe Docente che rappresenti le seguenti informazioni relative ad un docente: nome,
cognome, codice ed età, e che contenga il costruttore parametrizzato ed i metodi getCodice, getCognome e
getEta che restituiscono rispettivamente il codice, il cognome e l’età del docente.
Scrivere poi una classe Universita, che rappresenti un insieme di docenti universitari tramite un array di tipo
Docente, e che contenga il costruttore parametrizzato ed un metodo etaMinima che restituisce la minima
età tra i docenti universitari


Cmq grazie per le risposte provvedo a fare un ripasso con più esempi inerenti ai concetti sopra esposti. :ok:
 
M

Mursey

Ospite
Il secondo costruttore
public Docente(Docente d)
è completamente sbagliato, devi cancellarlo, hai già un costruttore che inizializza gli attributi di classe
Ops, non avevo notato che il secondo costruttore aveva come parametro il tipo Docente :asd:
 

Marco Aurelio

Utente Attivo
133
11
Ops, non avevo notato che il secondo costruttore aveva come parametro il tipo Docente :asd:

Qualora fosse giusto quale sarebbe la sua funzione e quella dei suo metodi che "uniscono" le variabili d'esemplare ai metodi, esempio:

nome=d.getNome();

----In secondo luogo nella classe università:

public Universita(Docente[] d)

che io sappia è un costruttore, e all'interno del suo parametro si inserisce il tipo del parametro ed il nome, perchè in questo caso compare un array?

----In ultima istanza:

int min=docenti[0].getEta();

questa costruzione mi è oscura, o almeno mi pare di capire che si deve memorizzare nella variabile min l'età del docente nella posizione 0, ma ancora nn ho la giusta elasticità per comprendere se ciò è vero.
 

rodhellas

Utente Èlite
1,522
427
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
HDD
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
GPU
Gigabyte GTX 960 OC
Audio
Integrata
Monitor
SyncMaster 223BW
PSU
Antec HCG-520M
Case
Meshify C
Net
Gigabit Fastweb
OS
Windows 10 64bit
Qualora fosse giusto quale sarebbe la sua funzione e quella dei suo metodi che "uniscono" le variabili d'esemplare ai metodi, esempio:

nome=d.getNome();

----In secondo luogo nella classe università:

public Universita(Docente[] d)

che io sappia è un costruttore, e all'interno del suo parametro si inserisce il tipo del parametro ed il nome, perchè in questo caso compare un array?

----In ultima istanza:

int min=docenti[0].getEta();

questa costruzione mi è oscura, o almeno mi pare di capire che si deve memorizzare nella variabile min l'età del docente nella posizione 0, ma ancora nn ho la giusta elasticità per comprendere se ciò è vero.

Per il primo, crei un docente con i dati uguali al docente che gli passi al costruttore.
Al secondo, gli passi un array perchè hai dichiarato la variabile Docenti come array ( per dirla terra terra, in università ci sono più docenti. Passarne uno alla volta non avrebbe senso, fai un array e via).
Per il terzo, si, salvi come età minima di partenza l'età del docente 0, poi effetti un ciclo partendo da 1 e se il docente ha meno anni dell'età nella variabile la sostituisce ( altro modo per farlo sarebbe far implementare a Docente l'interfaccia Comparable o Comparator ).
Le prime due domande sono collegate: quando chiami il costruttore dell'università, per ogni posizione dell'array ti fa una new Docenti(d), ecco spiegati i primi due punti
 
Ultima modifica:

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!