Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    59

    [VB.NET] realizzare oggetti propri

    Finalmente, sono giunto ad uno degli argomenti -cardine .net:creare le proprie classi e i propri metodi.Dire che "non c'ho capito una mazza" è un eufemismo, anche se ho consultato vari manuali.
    Tutti dicono di pensare ad una classe come ad "un insieme di oggetti" e di pensare ad un oggetto come alla "rappresentazione di qualcosa di reale" (es.: un auto, una stampante,ecc.), al metodo come alle "capacità di quell'oggetto" (es.:stampare, scrivere, cancellare,ecc.), alle proprietà come alle "caratteristiche di quell'oggetto" (es:forma, colore, ecc.)
    Sulla carta, è abbastanza semplice. In pratica, non sono dotato di questa capacità di astrazione.
    Necessiterei - quindi - di un "buon samaritano" che (con parole sue o consigliandomi qualche sito) mi dia una mano ad applicare questo aspetto.
    Grazie.
    n.b.:linguaggio "for very dummies", se possibile, grazie.

  2. #2
    Tutti dicono di pensare ad una classe come ad "un insieme di oggetti"
    No, cercando dei paragoni col mondo reale, la classe è come il progetto di un'automobile, l'oggetto è l'automobile vera e propria. Per creare un'automobile devi prima progettarla, definendone diversi aspetti (proprietà, metodi ed eventi). Una volta che il progetto è completo potrò portarlo in fabbrica e realizzare migliaia di automobili identiche, che varieranno tra loro grazie alle proprietà che ho deciso di implementare (colore, cilindrata, clima si/no, ecc.). Tornando al mondo informatico, quando creo un oggetto da una classe si dice che creo una nuova "istanza" della classe, che rende funzionanti i concetti progettati nella classe.

    Una volta che hai capito questo sistema di ragionamento, diventerà più facile comprendere tutto il resto della programmazione ad oggetti. La tua difficoltà, se non ho capito male, è quella di calare questi concetti alla programmazione reale. Facciamo un esempio reale, immagina di dover scrivere un software che calcoli area e perimetro di alcuni poligoni regolari. Con la programmazione procedurale tradizionale, potrei scrivere:
    codice:
    Function Area(nlati As Integer, lato As Integer) As Integer
        'algoritmo di calcolo dell'area
        '...
    End Function
    
    Function Perimetro(nlati As Integer, lato As Integer) As Integer
        '...
    End Function
    Con la programmazione ad oggetti, mi sforzo di descrivere il poligono regolare con una classe:
    codice:
    Public Class Poligono
        Private nlati As Integer
        Private lato As Integer
    
        Public Property NumeroLati() As Integer
            'legge e scrive nella variabile nlati
        End Property
    
        Public Property LunghezzaLato() As Integer
            'legge e scrive nella variabile lato
        End Property
    
        'costruttore
        Public Sub New(numlati As Integer, lunglato As Integer)
            nlati = numlati
            lato = lunglato
        End Sub
    
        Public Function Area() As Integer
            '....
        End Function
    
        Public Function Perimetro() As Integer
            '....
        End Function
    End Class
    Una volta definita questa classe, per utilizzarla dovrò scrivere:
    codice:
    Dim poligono1 As Poligono
    
    'creo una istanza della classe Poligono - un triangolo lato 10
    poligono1 = New Poligono(3, 10)
    
    'stampo su console l'area e il perimetro
    Console.WriteLine(poligono1.Area())
    Console.WriteLine(poligono1.Perimetro())
    Chi non cerca trova.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    59
    Originariamente inviato da tas
    La tua difficoltà, se non ho capito male, è quella di calare questi concetti alla programmazione reale.
    Tutto chiaro, grazie.
    Hai individuato benissimo il problema: era ciò che intendevo dicendo che “non ho capacità di astrazione”.
    Ne approfitto per fare un mio esempio (banale) per “vedere se questa volta ho capito”: tieni presente che non ho il compilatore sotto mano, quindi trascura eventuali errori di compilazione (mi interessa vedere se ho capito la logica della OOP).
    Diciamo che voglio realizzare una calcolatrice che fa le 4 operazioni: somma, sottrazione, moltiplicazione, divisione. La calcolatrice ha 14 tasti: i numeri da 0 a 9 e i 4 operatori (+,-,x, /)
    Public Class Calcolatrice
    Private nTasti As Integer’ numero di tasti della calcolatrice

    Public Property NumeroTasti() As Integer
    Get
    End get
    ‘dico che la calcolatrice ha un certo numero di tasti, tramite la variabile nTasti
    Set
    End Set
    End Property



    'costruttore
    Public Sub New(TotTasti As Integer,)
    nTasti = TotTasti
    End Sub

    Public Function somma() As Integer
    Risultato = numero1+numero2
    End Function

    Public Function sottrai() As Integer
    Risultato = numero1-numero2
    End Function
    Public Function moltiplica() As Integer
    Risultato = numero1 * numero2
    End Function

    End Class

    A questo punto, posso usare la classe “Calcolatrice” nel metodo Main
    Dim miaCalcolatrice as new calcolatrice
    Console.WriteLine (“….”)

    Se volessi fare una somma, dovrei dichiarare
    miaCalcolatrice.somma()

  4. #4
    Attenzione: hai omesso un pò di cose..

    Innanzitutto: numero1 e numero2 cosa sono? Semplici variabili? Proprietà dell'oggetto? Gli argomenti della funzione Somma?
    Risultato cosa è? Una variabile? Una proprietà dell'oggetto?

    codice:
    Public Sub New(num1 As long, num2 as long)
    numero1 = num1
    numero2 = num2
    end sub
    ovviamente numero1 e numero2 dichiarati nella classe, come nell'esempio postatoti da tas:

    codice:
        Private numero2 As long
                  Private numero1 as long
    Fermo restando che l'esempio di tas è perfettamente adeguato, prova a cercare su internet alcuni esempi, ce ne sono tantissimi..

    Per qualsiasi problema, siamo qua..

    PS: sto scrivendo "a mente", ma dovrebbe andare tutto bene


    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.