Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Programmazione ad oggetti, dubbio

0 views
Skip to first unread message

marcelo...@gmail.com

unread,
Jul 18, 2008, 3:39:59 AM7/18/08
to
Ciao a tutti,

Ho fatto un programma stile cad che mi permette di disegnare (tramite
GUI) diverse figure geometriche sullo schermo, la mia appliacazione ha
una classe base che si chiama FIGURA che a sua volta ha alcune cose
che mi servono per tutte le figure che disegno (esempio colore linea).
Altre sottoclassi ereditano figura, esempio:

LINEA, ARCO, QUADRATO, etc... --> Inherits figura

Ho implementato il tutto all'interno di una dll, per utilizzarla devo
dichiarare diversi oggetti:

dim a as new linea
dim b as new arco
dim c as new quadrato

Non è possibile utilizzare (implementandolo) un oggetto che possa
gestire tutte le figure?

esempio:

dim pippo as new figura (non sono sicuro di poter utilizzare la classe
base figura)

pippo.linea(10,10,100,10) (Linea è un metodo
dell'oggetto LINEA)
pippo.arco(10,10,100,100,10,200) (Arco è un metodo
dell'oggetto ARCO)


Posso farla una cosa del genere?

Oppure devo implementare un'altro oggetto che eredita tutte le classi
(ARCO,LINEA,QUADRATO....)?

Grazie per l'attenzione, spero di essere stato abbastanza chiaro,
semmai chiedete e cercherò di esprimermi meglio.
Ciao, Marcelo

Nicola Ottomano

unread,
Jul 18, 2008, 5:49:56 AM7/18/08
to
Io farei un oggetto "Figura" con un metodo "Draw" i cui parametri sono
il tipo di figura e le informazioni necessarie a disegnarla.
Se usi .NET puoi sfruttare l'overload per richiamare lo stesso metodo
con parametri diversi.

Nicola

marcelo...@gmail.com

unread,
Jul 18, 2008, 5:57:54 AM7/18/08
to

Hai ragione, provo così e vedo se mi viene qualcosa...

Luca D

unread,
Jul 18, 2008, 9:00:40 AM7/18/08
to
On 18 Lug, 11:57, "marcelo.scol...@gmail.com"

In effetti non hai nemmeno bisogno di dira al metodo Draw che figura
disegnare; se ogni classe derivata fa l'override del metodo base,
ciascuna istanza sa gia' a che forma corrisponde; per rendere tutto
ancora più generico, anche le coordinate dei vari metodi non trattarle
come parametri singoli, ma raggruppali in una classe base
CoordinateFigura, per esempio può avere solo X e Y rappresentando
quindi un punto e da questa deriverai CoordinateLinea, CoordinateArco
ecc...

A questo punto il tuo metodo base sarà sempre uguali per tutti, da
qualche parte ti serve solo una funzione che restituisce Figura ma
che, sulla base di (immagino) una scelta fatta dall'interfaccia
utente, istanzierà l'oggetto specifico derivato.

Es:

Sub DrawButton_Click (...) Handles DrawButton.Click
Dim f As Figura

f = getFiguraCorrente
f.Draw
End Sub

Function getFiguraCorrente As Figura()
Dim result As Figura

Select Case <una qualche scelta dell'utente>
Case 1
'qui ad esempio passiamo le coordinate al costruttore il quale
'internamente costruisce una istanza derivata da
CoordinateFigura
result = New Linea(<coordinate>)
Case 2
'come sopra
result = New Arco(<coordinate>)
End Select

return result
End Function

0 new messages