Salve a tutti , tra poco avrò l'esonero di java , e molto probabilmente ci sarà un esercizio sul polimorfismo nel compito.
Mi sono imbattuto in un vecchio esercizio che aveva dato il prof. Il testo è il seguente.
Si definisca una gerarchia di classi per rappresentare le case vendute da una agenzia immobiliare.
Le case sono due tipi: appartamenti e ville. Per ogni casa si rappresenti: la superficie ed il numero
di stanze.
Inoltre per gli appartamenti si rappresenti il codice energetico (un intero), mentre per le ville si
rappresenti il fatto che abbiano o no una piscina.
Entrambe le classi contengono un metodo “costo” che restituisce il costo della casa.
Per gli appartamenti il costo è il prodotto fra la superficie e 1500, più il prodotto fra il numero
delle stanze ed il codice energetico; per le ville il costo è il prodotto fra la superficie e 2000, più
20000 se c’è la piscina, più 10000 se ci sono almeno 10 stanze.
Si definisca una classe Archivio che contiene come campo un array V in cui è possibile inserire sia
appartamenti che ville.
Si definisca infine un metodo della classe Archivio che, dato un parametro n, restituisce la media
dei costi di tutte le case presenti in V la cui superficie supera n.
Dopo essermi definito la Sovraclasse Casa e le sottoclassi Villa e Appartamento , ho fatto la classe Archivio.
Soltanto che non riesco a fare proprio l'ultimo metodo. O per lo meno , nella mia testa so come impostarlo ma non riesco a scriverlo sintatticamente.
Io ho pensato cosi. Mi dichiaro una funzione double mediaCosti con paramentro n ( dato che lo da l'esercizio).
Scorro tramite un ciclo l'array e poi faccio un if dichiarando se la superficie è maggiore del paramentro che gli abbiamo passato. Se è maggiore incremento un contatore di 1 che poi mi andrà a servire per calcolare la media.
Dopo if volevo mettere il return scrivendo che il return è uguale a il valore delle case che abbiamo preso in considerazione diviso il contatore.
Ma sintatticamente sono riuscito a buttare giu solo questo scorcio di codice per il metodo.
Chi mi aiutaaaa
public double mediaCosti(int n){
Casa oggetto= new Casa();
int contatore=0;
for (int j=0 ; j<v.length; j++){
if(v[i].superficie>n)
contatore++;
}
return (()/contatore);
}