Oppure

Loading
27/10/10 19:26
crashoverride
Ciao, nel mio libro di Java "Manuale Java 6 Claudio De Sio Cesari" la OOP è trattata molto bene ma una affermazione mi ha lasciato un po' perplesso perché
Allora, sto leggendo a riguardo del poliformiso...
In un esempio fa una classa Punto
public class Punto {
...
public double distanzaOrigine()
{ //Implementazione
}
}

e poi

public class PuntoTridimensinale extends Punto {
...
//override
public double distanzaOrigine()
{ //Implementazione
}
}

Fin qui ok...
Poi dice: Il lettore è invitato a riflettere sulle discutibili scelte di chiamare una classe che astrae un punto bidimensionale Punto e inserire il metodo distanzaDalllOrigine() nella stessa classe. Non stiamo così violando il paradigma dell'astrazione??

Ok, lo stiamo violando ma se non lo mettiamo li quel metodo dove lo mettiamo?? In che classe si potrebbe metterlo oltre a quella???

Grazie per le risposte!
aaa
27/10/10 21:00
pierotofy
Penso che l'autore voglia far riflettere che "Punto" è un nome generico che non indica per forza un "punto bidimensionale". Forse un design più robusto sarebbe stato quello di creare una classe astratta "Punto" da cui derivano "Punto2D" e "Punto3D", dove entrambe ridefiniscono distanzaOrigine().

Almeno io la vedo così :-|
Il mio blog: piero.dev
27/10/10 23:41
paoloricciuti
Postato originariamente da pierotofy:

Penso che l'autore voglia far riflettere che "Punto" è un nome generico che non indica per forza un "punto bidimensionale". Forse un design più robusto sarebbe stato quello di creare una classe astratta "Punto" da cui derivano "Punto2D" e "Punto3D", dove entrambe ridefiniscono distanzaOrigine().

Almeno io la vedo così :-|

Concordo con piero. C'è da dire però che persino quelli della Sun hanno chiamato una classe Point (e non è astratta). Quindi a mio parere l'autore del libro è stato un poco esagerato.
aaa
28/10/10 5:16
HeDo
come sempre tra la teoria e la pratica c'è un ..........................................
aaa
28/10/10 13:06
crashoverride
Mi sono spiegato male, non considerate la classe PuntoTridimensionale, che non centra..
Considerate solo la classe Punto.
Se per l'astrazione il metodo non ci andrebbe, in che classe lo dovrei mettere se non li??? :D

Bisognerebbe cambiare il nome della classe in Punto 2D, altro "in teoria" non si potrebbe perchè non si potrebbe fare una classe chiamata "DistanzaPunto" perchè non avrebbe senso logico no?? :D

Grazie
aaa