Condividi tramite


Creazione di una classe in base a una classe esistente: utilizzo dell'ereditarietà

Aggiornamento: novembre 2007

In questa lezione verrà descritto come utilizzare l'ereditarietà per creare una classe in base a una classe esistente.

Molti oggetti reali hanno attributi e comportamenti comuni, ad esempio tutte le automobili hanno ruote e motori e possono avanzare e fermarsi. Alcune automobili hanno tuttavia anche attributi che non sono comuni, ad esempio una decappottabile ha un tetto rimovibile che può essere abbassato elettronicamente oppure a mano.

Se si crea un oggetto per rappresentare un'automobile, sarà necessario includere proprietà e metodi per tutti gli attributi e i comportamenti comuni, ma non per gli attributi quali il tetto decappottabile che non è presente in tutte le automobili.

Utilizzando l'ereditarietà è possibile creare una classe "decappottabile" derivata dalla classe delle automobili. Questa classe erediterà tutti gli attributi della classe delle automobili e potrà aggiungere attributi e comportamenti specifici di una decappottabile.

Eredità da una classe esistente

L'istruzione Inherits consente di dichiarare una nuova classe, denominata classe derivata, basata su una classe esistente, nota come classe base. Le classi derivate ereditano tutti i metodi, le proprietà, gli eventi, i campi e le costanti definiti nella classe base. Nel codice riportato di seguito viene illustrata la dichiarazione di una classe derivata.

Class DerivedClass
    Inherits BaseClass
End Class

È quindi possibile creare un'istanza della nuova classe DerivedClass, accedere ai relativi metodi e proprietà come per la BaseClass e aggiungere nuovi metodi e proprietà specifici della nuova classe. Per un esempio esaminare la classe Persons creata nelle lezioni precedenti.

Si supponga di voler creare una classe per rappresentare i giocatori di baseball con tutti gli attributi definiti nella classe Persons, più alcuni attributi specifici quali il numero e la posizione. Anziché aggiungere tali proprietà alla classe Persons, verrà creata una nuova classe derivata che eredita da Persons e verranno aggiunte le nuove proprietà a tale classe.

Procedura

Per creare una classe derivata

  1. Aprire il progetto Persons creato nella lezione precedente. Se questo progetto non è stato salvato, tornare alla lezione Test di una classe e completare le procedure indicate.

  2. In Esplora soluzioni selezionare il nodo del progetto Persons.

  3. Scegliere Aggiungi classe dal menu Progetto.

  4. Nella finestra di dialogo Aggiungi nuovo elemento digitare Players nella casella Nome, quindi scegliere Aggiungi.

    Un nuovo modulo di classe verrà aggiunto al progetto.

  5. Nell'editor di codice aggiungere il codice riportato di seguito immediatamente dopo la riga Public Class Players.

    Inherits Persons
    
  6. Aggiungere il codice riportato di seguito per definire due nuove proprietà.

    Private numberValue As Integer
    Private positionValue As String
    Public Property Number() As Integer
        Get
            Number = numberValue
        End Get
        Set(ByVal value As Integer)
            numberValue = value
        End Set
    End Property
    Public Property Position() As String
        Get
            Position = positionValue
        End Get
        Set(ByVal value As String)
            positionValue = value
        End Set
    End Property
    
  7. Scegliere Salva tutto dal menu File.

Test della classe Players

È stata creata una classe Players derivata dalla classe Persons. Nella procedura riportata di seguito verrà creato un nuovo programma per il test della classe Players.

Per creare un progetto di test per la classe

  1. Scegliere Aggiungi dal menu File, quindi fare clic su Nuovo progetto.

  2. Nel riquadro Modelli della finestra di dialogo Aggiungi nuovo progetto scegliere Applicazione Windows.

  3. Digitare PlayerTest nella casella Nome, quindi scegliere OK.

  4. Verrà aggiunto un nuovo progetto Windows Form in Esplora soluzioni e verrà visualizzato un nuovo form.

  5. In Esplora soluzioni, selezionare il progetto PlayerTest, quindi scegliere Imposta come progetto di avvio dal menu Progetto.

  6. In Esplora soluzioni, selezionare il progetto PlayerTest, quindi scegliere Aggiungi riferimento dal menu Progetto.

    Verrà visualizzata la finestra di dialogo Aggiungi riferimento.

  7. Fare clic sulla scheda Progetti, scegliere Persons, quindi OK.

  8. Fare doppio clic sul form per aprire l'editor di codice, quindi immettere la dichiarazione riportata di seguito immediatamente dopo la riga Public Class Form1.

    Dim player1 As New Persons.Players
    Dim player2 As New Persons.Players
    
  9. In questo codice vengono dichiarate due nuove istanze della classe Players.

  10. Scegliere Salva tutto dal menu File.

Per testare la classe derivata

  1. In Esplora soluzioni, selezionare Form1 nel progetto PlayerTest, quindi scegliere Codice dal menu Visualizza.

  2. Nell'editor di codice aggiungere alla routine evento Form1_Load il codice riportato di seguito.

    With player1
        .FirstName = "Andrew"
        .LastName = "Cencini"
        .Number = 43
        .Position = "Shortstop"
    End With
    With player2
        .FirstName = "Robert"
        .LastName = "Lyon"
        .Number = 11
        .Position = "Catcher"
    End With
    
  3. In Esplora soluzioni, selezionare Form1 nel progetto PlayerTest, quindi scegliere Finestra di progettazione dal menu Visualizza.

  4. Dalla Casella degli strumenti trascinare due controlli Button nel form.

  5. Selezionare il primo controllo Button, quindi nella finestra Proprietà impostare la relativa proprietà Text su At Bat.

  6. Selezionare il secondo controllo Button, quindi nella finestra Proprietà impostare la relativa proprietà Text su On Deck.

  7. Fare doppio clic sul primo pulsante (At Bat) per aprire l'editor di codice, quindi immettere il codice riportato di seguito nel gestore eventi Button1_Click.

    MsgBox(player1.Position & " " & player1.FullName & ", #" & _
      CStr(player1.Number) & " is now at bat.")
    

    Notare che si sta utilizzando il metodo FullName ereditato dalla classe base Persons.

  8. Nel gestore eventi Button2_Click aggiungere il codice riportato di seguito.

    MsgBox(player2.Position & " " & player2.FullName & ", #" & _
      CStr(player2.Number) & " is on deck.")
    
  9. Premere F5 per eseguire il programma. Fare clic su ogni pulsante per visualizzare i risultati.

  10. Scegliere Salva tutto dal menu File.

Passaggi successivi

In questa lezione è stato descritto come ereditare da una classe esistente e come estendere la classe derivata. A questo punto è possibile leggere ulteriori informazioni sull'ereditarietà in Informazioni dettagliate: override dei membri oppure proseguire con la lezione successiva riguardante gli insiemi.

Lezione successiva: Utilizzo degli insiemi per gestire più oggetti

Vedere anche

Concetti

Nozioni fondamentali sull'ereditarietà