Oppure

Loading
29/09/12 20:02
Ciao a tutti seguendo un esercizio su eredità e polimorfismo, mi è giunto questa richiesta:

Crea una classe derivata da array list che contenga una collezione di classi persona

class Person
'...
End class

class ListPerson
inherits arraylist

'...

End class

e fin qui ci siamo poi mi dice: Applicare il polimorfismo a quest'ultima classe per modificare i seguenti metodi:
Add : in modo che consenta di aggiungere una nuova persona inserendo nome, cognome e
data di nascita direttamente come parametri

Solo che non posso usare il polimorfismo(overrides) in quanto dovrei cambiare i campi della funzione add in questo modo
class Person
'...
End class

class ListPerson
inherits arraylist

public overrides Add(byval Nome as string, byval Cognome as string, Byval Compleanno As string) As integer

      Dim P As New Persona(Nome,Cognome,date.parse(Compleanno))
      return mybase.Add(P)

End function
'...

End class


ma ad avviso del mio cervello e del IDE dovrei usare l'overload, in quanto modifico i parametri ma utilizzo lo stesso identificatore... voi cosa mi consigliate...sono io che faccio pena a programmare o è un errore dell'autore?

Grazie
Ultima modifica effettuata da 29/09/12 20:09
30/09/12 10:04
HeDo
questo esercizio aveva senso in un contesto di .NET 1.1, con la versione 2.0 sono stati introdotti i generics e tutto questo non serve più.

ti consiglio di focalizzarti su esercizi diversi e più utili, come ad esempio approfondire pattern di sviluppo come MVC, MVVM e i conseguenti IOC, ServiceLocator, etc...
aaa
30/09/12 15:43
sinceramente stò usando la guida di totem, con il suo eserciziario...insomma stò imparando....e i generics non sono ancora stati trattati D: sempre che ci siano >.<
30/09/12 17:00
Renny
Certo che ci sono..
E' che magari li stai usando senza saperlo...
Il fatto di usarli renderebbe superfluo creare la classe ListPerson e fare l'overloads del metodo add perché nel momento il cui dichiari una List(of Person) hai un array tipizzato di oggetti person con tutte le funzioni del caso.
In ogni caso, il codice che hai scritto secondo me va bene.
In questo modo tu sai che l'oggetto listperson diventa una lista di oggetti person che tu aggiungi passando alla funzione i parametri necessari per creare un oggetto person (nome, cognome, data nascita). Potresti fare l'overloads del metodo add prevedendo anche una versione che accetta come parametro di ingresso il metodo un oggetto Persona già creato.
Ultima modifica effettuata da Renny 30/09/12 17:05
aaa
30/09/12 17:15
Si probabilmente avete ragione voi sul fatto che usare i generics si più vantaggioso, ma io non avendoli ancora minimamente visti nel mio percorso di studio...voglio seguire l'esercizio con l'overloads, poi se mai più avanti quando arriverò ai generics, modificherò il sorgente con loro, ma al momento mi basterebbe sapere se il procedimento con polimorfismo ed ereditarietà è giusto come lo stavo impostando ;) e a quanto mi hai detto, ronny, lo stò facendo :D si bhe dopo per le minuziose rie si può sempre provvedere....

Grazie mille :D
Ultima modifica effettuata da 30/09/12 17:17
30/09/12 20:26
Renny
Intanto è renny
Ma questo codice.. ti funziona?
return mybase.Add(P)

Hai dichiarato un arraylist al quale aggiungere gli oggetti?
aaa
30/09/12 20:36
xD Scusa si avevo già corretto il problema, poco dopo aver postato


Public Overloads Sub Add(ByVal Nome As String, ByVal Cognome As String,
                                 ByVal Data As String)
            Dim P As New Persona(Nome, Cognome, Date.Parse(Data))
            MyBase.Add(P)
        End Sub