Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => Programmazione 1, 9 CFU => Topic started by: Gam on 30-01-2009, 11:12:14



Title: Esercizio terze prove sui veicoli
Post by: Gam on 30-01-2009, 11:12:14
Altro problema!!!
Può essere che nell'esercizio che si trova nella raccolta di terze prove c'è un caso di ereditarietà multipla?
Quando dice che i camion e le auto sono caratterizzate dalla velocità e poi dice che i camion e le barche sono caratterizzati dal peso di carico.
Mi sbaglio o il prof a lezione ha detto che casi del genere hanno una difficile o quasi impossibile implementazione?
Cioè si può implemaentare quello che ho appena scritto?
Grazie ciao


Title: Re:Esercizio terze prove sui veicoli
Post by: hax on 30-01-2009, 11:19:00
mi accodo alla richiesta soluzione...


Title: Re:Esercizio terze prove sui veicoli
Post by: Fr3d3R!K on 30-01-2009, 11:27:32
ereditarietà multipla in java non esiste (si può aggirare questo problema tramite le interfacce ma nativamente non esiste). L'errore possibilmente è nel testo (solo le auto sono caratterizzate dalla velocità). Infatti nel periodo successivo viene scritto "invece camion e barche [...]" che presuppone che quest'ultimi abbiano caratteristiche del tutto differenti dalle auto.


Title: Re:Esercizio terze prove sui veicoli
Post by: hax on 31-01-2009, 12:09:43
dato che sia barche che camion sono caratterizzati dal peso, metto una variabile peso in entrambe le classi o devo fare in altro modo?
ad esempio con il dato peso in comune? (non static ovviamente)


Title: Re:Esercizio terze prove sui veicoli
Post by: ɹǝǝuıƃuǝsɹǝʌǝɹ on 31-01-2009, 12:26:30
Istintivamente, anche in un linguaggio che prevede l'ereditarietà multipla, mi sento di sfruttare la potenza delle interfacce per questo scopo.

Potete usarla così:
Code:
interface Tachimetrato
{
double velocita = 0;
}

interface Trasportatore
{
double peso = 0;
}

class Camion implements Tachimetrato, Trasportatore
{
double velocita;
double peso;
//...
}

class Auto implements Tachimetrato
{
double velocita;
//...
}

class Barca implements Trasportatore
{
double peso;
//...
}
.ciaociao

EDIT: un secondo, non capisco perché ma devo inserire "= 0" alla fine delle definizioni di variabili nell'interfaccia. Sto avendo un vuoto di memoria su questo aspetto delle interfacce: non è che si usano solo per indicare quali metodi vanno implementati?


Title: Re:Esercizio terze prove sui veicoli
Post by: Fr3d3R!K on 31-01-2009, 12:29:48
si infatti si può risolvere con le interfacce ma dubito che in un compito d'esame ci siano, o perlomeno non ne ho mai visti, di solito in queste prove c'è sempre ereditarietà singola...
EDIT: @hax: puoi mettere la variabile peso in entrambe le classi, fare un superclasse di entrambi per una sola variabile sarebbe uno spreco...
EDIT2: @reverse:
non è che si usano solo per indicare quali metodi vanno implementati?
infatti si usano solo per indicare quali metodi vanno implementati! (io sò così). Per sicurezza però ho ripreso la slide della lezione:
Quote
• Esse non sono tecnicamente classi, ma oggetti pubblici.
• Una interfaccia non ha variabili di istanza.
• Una interfaccia può contenere la dichiarazione di costanti.
• Una interfaccia ha solo dichiarazioni di metodi pubblici senza body (cioè non implementate).
In pratica un’interfaccia contiene le informazioni su cosa è necessario (in termini di metodi) per garantire certe funzionalità.