Lista Oggetti Condivisa per tipo definito da Interfaccia

di il
4 risposte

Lista Oggetti Condivisa per tipo definito da Interfaccia

Buon pomeriggio,

Vorrei sapere come aggirare il problema dell'impossibilitá di implementare proprietá in una Interface. Vi faccio un esempio semplice del problema e vi descrivo il risultato che voglio ottenere.

Definisco una interfaccia PERSONA.

Definisco due classi che implementano l'interfaccia: UOMO e DONNA. Il construttore di ogn'una di queste due classi aggiorna un ArrayList della classe. In UOMO e DONNA definisco:
Shared Uomini As ArrayList = New ArrayList
Shared Donne As ArrayList = New ArrayList
I due ArrayList immagazzinano tutte le istanze create nelle due classi.

Ora, il problema é che voglio un ArrayList condiviso che immagazzini uomini e donne come Persone, per poi accedere a tutte le istanze, siano esse uomini o donne.

Nella definizione dell'interfaccia PERSONA non lo posso fare.

Come posso aggirare il problema e ottenere il mio ArrayList globale di persone?

Grazie mille,

Daniele

4 Risposte

  • Re: Lista Oggetti Condivisa per tipo definito da Interfaccia

    Devi creare una classe Persona e derivare da questa una classe Uomo e una classe Donna
  • Re: Lista Oggetti Condivisa per tipo definito da Interfaccia

    In quel caso UOMO e DONNA rimarrebbero sottoclassi di PERSONA?

    Perché nell'altra parte di codice ho bisogno di gestire UOMO e DONNA richiamando le stesse Function, che peró al loro interno sono definite diversamente.

    es.

    paolo.etaBiologica(25) = 20
    francesca.etaBiologica(25) = 40

    Perdonate la battuta maschilista, ahahahah...

    L'idea é coumnque questa. Ovviamente quanto mostrato é perché ho poi bisogno di girare una routine sulle persone.

    For each person As persona In ArrayListPersoneCheNonRiescoADefinire
    person.etabiologica()... ecc
  • Re: Lista Oggetti Condivisa per tipo definito da Interfaccia

    Dai un'occhiata e prendi spunto
    
        Public Class Strumento
            Protected valore As Decimal
            Public Overridable Sub Suona(ByVal Nota As Integer, ByVal Durata As Integer)
            End Sub
    
            Public Sub New(v As Decimal)
                valore = v
            End Sub
        End Class
    
        Public Class Violino
            Inherits Strumento
            Public Overrides Sub Suona(ByVal Nota As Integer, ByVal Durata As Integer)
                Console.WriteLine("Suona violino ... valore {0}", valore)
            End Sub
            Public Sub New(v As Decimal)
                MyBase.New(v)
            End Sub
        End Class
    
        Public Class Pianoforte
            Inherits Strumento
            Public Overrides Sub Suona(ByVal Nota As Integer, ByVal Durata As Integer)
                Console.WriteLine("Suona pianoforte ... valore {0}", valore)
            End Sub
            Public Sub New(v As Decimal)
                MyBase.New(v)
            End Sub
        End Class
    
        Sub Main()
            Dim st As List(Of Strumento) = New List(Of Strumento)
    
            st.Add(New Violino(150000))
            st.Add(New Pianoforte(2500000))
    
            st(0).Suona(10, 10)
            st(1).Suona(10, 10)
        End Sub
    
  • Re: Lista Oggetti Condivisa per tipo definito da Interfaccia

    Perfetto,

    Grazie mille. Nei prossimi giorni modificheró il codice eliminando la definizione dell'interfaccia per sostituirla con l'ereditarietá della classe.

    Saluti,

    Daniele
Devi accedere o registrarti per scrivere nel forum
4 risposte