PDA

View Full Version : [Java]Array di oggetti


FortNox
28-06-2014, 14:27
Buon pomeriggio a tutti :)
Volevo chiedere un informazione relativamente a un esercizio di programmazione in Java che non riesco a completare.
L'esercizio mi chiede di creare una classe Docente con i relativi attributi e metodi get, cosa che io ho fatto, successivamente mi viene chiesto di creare una classe Università che rappresenti un insieme di docenti universitari tramite un array di tipo Docente e che contiene il costruttore parametrizzato, inoltre creare un metodo etaMinima che mi restituisca l'età minima tra i docenti università.

la classe Docente l'ho fatta così:

public class Docente {

private int codice;
private int età;

public Docente(int c, int e){

codice = c;
età = e;
}

public int getCodice(){return codice;}
public int getEtà(){return età;}

}

mentre la classe Università ho iniziato a scriverla, ma non sono sicura per quanto riguarda il costruttore paramettrizzato e il metodo etaMinima, vorrei sapere se qualcuno può darmi qualche indicazione su come procedere

public class Università {

private Docente [] docenti;

public Università(Docente [] d){

docenti=d;

}

Chiedo scusa per eventuali errori commessi ma è la prima volta che scrivo in questo forum, ringrazio tutti anticipatamente :)

fally
01-07-2014, 09:20
ma hai provato il codice?

clockover
01-07-2014, 09:40
Ciao, hai il testo dell'esercizio completo?

FortNox
01-07-2014, 12:30
Allora, discutendo con alcuni amici o provato due modi per completare l'esercizio uno di questo tipo, che funziona ma non sono certa che sia corretto

public class Università{

Docente [] docente;

public Università(Docente[]v){
docente=v;
v = new Docente [3];
}


public static int etaMinima(Docente d1, Docente d2, Docente d3){

int [] v2={d1.getEtà(), d2.getEtà(), d3.getEtà()};
int minimo=v2[0];

for(int i = 0;i<v2.length;i++){
if(v2[i]<minimo){
minimo=v2[i];
}
}
return minimo;
}

public static void main(String[] args) {

Docente d1 = new Docente(01,40);
Docente d2 = new Docente(02,25);
Docente d3 = new Docente(03,30);

int minimo = etaMinima(d1, d2, d3);

System.out.println("Il docente più giovane ha età pari a "+minimo);
}
}

mentre provando a scriverlo così

public class Università{

Docente [] docenti;

public Università(Docente [] d){
docenti=d;
docenti=new Docente [3];
}

public int etàMinima(Docente [] doc){

int etàmin=docenti[0].getEtà();
for(int i=1; i<docenti.length;i++){
if(docenti[i].getEtà()<etàmin)
etàmin=docenti[i].getEtà();
}
return etàmin;
}

}

però non so come verificarlo nel main.

Il testo dell'esercizio è completo, ho tralasciato soltanto il punto in cui mi veniva chiesto di creare la classe Docente e creare i vari campi, e i metodi get :)

fally
01-07-2014, 13:55
l'ultima classe ha qualcosina che non va :


docente=v;
v = new Docente [3];


assegni alla variabile di classe il valore dell'argomento v ma dopo assegni a v un nuovo array di 3 elementi (null). Perchè? Dovretsi poi sapere creare un main per testare le tue classi...

FortNox
01-07-2014, 14:10
Quindi nel costruttore della classe Università devo scrivere solamente questo?

public Università(Docente[]v){
docente=v;
}

e poi credo di essere riuscita a testare il metodo nel main, correggendo il parametro di ingresso del metodo etàMinima, è corretto?

public class Università{

Docente [] docente;

public Università(Docente[]v){
docente=v;
}


public static int etàMinima(Docente [] docente){

int etàmin = docente[0].getEtà();
int i;
for(i=1; i<docente.length;i++){
if(docente[i].getEtà()<etàmin)
etàmin=docente[i].getEtà();
}
return etàmin;
}


public static void main(String[] args) {

Docente[] doc = new Docente [3];
doc[0]=new Docente(1,40);
doc[1]=new Docente(2,25);
doc[2]=new Docente(3,30);

int etàmin = etàMinima(doc);

System.out.println("Il docente più giovane ha età pari a "+etàmin);
}
}

fally
01-07-2014, 14:26
è una correzione inutile. Cerca di capire cosa combini nei vari esercizi e passaggi commentando ogni riga. Alla fine i programmi piu' strutturati non sono altro che una moltitudine di passaggi semplici ma ben strutturati...

FortNox
01-07-2014, 14:34
Scusa ma la risposta precedente l'avevo modificata prima di leggere il tuo ultimo messaggio, ho capito cosa intendi soltanto che nell'esercizio mi vine richiesto di creare il costruttore parametrizzato della classe università. E io finora nei costruttori l'unica cosa che ho sempre fatto è stato assegnare un valore quindi non so cosa mettere nel costruttore di questa classe

fally
01-07-2014, 14:53
si funge, ma non hai un compilatore?

FortNox
01-07-2014, 15:16
Si sto usando Eclipse, volevo solo essere sicura che non ci fosse qualcosa di errato comunque. Grazie di tutto :)

wingman87
01-07-2014, 20:09
Dovresti togliere il parametro del metodo etaMinima e togliere il modificatore static

FortNox
01-07-2014, 23:55
Quindi il metodo dovrebbe rimanere così?

public int etàMinima(){

int etàmin = docente[0].getEtà();
int i;
for(i=1; i<docente.length;i++){
if(docente[i].getEtà()<etàmin)
etàmin=docente[i].getEtà();
}
return etàmin;
}

wingman87
02-07-2014, 10:06
Sì esatto, poi ovviamente nel main prima costruirai un oggetto Università, passando al costruttore l'array di docenti e poi sull'oggetto costruito richiamerai il metodo etaMinima.

FortNox
02-07-2014, 10:20
ok, grazie :)

franksisca
02-07-2014, 17:40
scusa ma ti funziona????

cioe` eta` scritto col carattere accentato funziona???

inoltre il for puoi costruirlo cosi`:

for (int i = 0; i < docente.length;i++){
// codice di controllo
}

fally
02-07-2014, 18:02
scusa ma ti funziona????

cioe` eta` scritto col carattere accentato funziona???

inoltre il for puoi costruirlo cosi`:

for (int i = 0; i < docente.length;i++){
// codice di controllo
}


si non è una buona idea ma viene accettato...

Oceans11
02-07-2014, 18:25
scusa ma ti funziona????

cioe` eta` scritto col carattere accentato funziona???

manco controllo io, non ha mai funzionato ;)

inoltre il for puoi costruirlo cosi`:

for (int i = 0; i < docente.length;i++){
// codice di controllo
}

Qui, senza fare ipotesi sull'input, sono d'accordo sul partire da 1 e prendere l'età di docente[0] come primo minimo.

franksisca
02-07-2014, 19:23
Qui, senza fare ipotesi sull'input, sono d'accordo sul partire da 1 e prendere l'età di docente[0] come primo minimo.

si il mio appunto era in realtà sull'inizializzazione di "i"