Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - Problemi studio OOP
Forum - Java - Problemi studio OOP

Avatar
crashoverride (Normal User)
Pro


Messaggi: 152
Iscritto: 09/07/2010

Segnala al moderatore
Postato alle 21:26
Mercoledì, 27/10/2010
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!

PM
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Up
3
Down
V
Segnala al moderatore
Postato alle 23:00
Mercoledì, 27/10/2010
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: https://piero.dev
PM
Avatar
paoloricciuti (Ex-Member)
Pro


Messaggi: 137
Iscritto: 27/04/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 1:41
Giovedì, 28/10/2010
Testo quotato

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.

PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
1
Down
V
Segnala al moderatore
Postato alle 7:16
Giovedì, 28/10/2010
come sempre tra la teoria e la pratica c'è un ..........................................

PM
Avatar
crashoverride (Normal User)
Pro


Messaggi: 152
Iscritto: 09/07/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 15:06
Giovedì, 28/10/2010
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

PM