Visualizzazione dei risultati da 1 a 7 su 7

Discussione: dubbio su una classe

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    16

    dubbio su una classe

    ciao,
    ho scritto una classe che effettua un calcolo sui dati che riceve in input.

    Gli do in pasto x e y mi ritorna il risultato.

    Io x e y li tratto come parametri quindi la chiamata è questa

    miaclasse.calcola(x, y)
    dim ris= miaclasse.risultato

    nella classe per quanto riguarda la restituzione del risultato ho predisposto una var pubblica
    public risultato

    funziona però mica lo so se è corretto come progettazione della classe

    mi chiedo se è corretto passare i parametri tipo miaclasse.calcola(x, y)
    oppure x e y devono essere proprietà (set e get) e non variabili?

    E' la prima volta che utilizzo una classe ho un pò di confusione.

    GRAZIE

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    x ed y dovrebbero essere proprietà pubbliche, che settano proprietà private della classe.
    Chiamando la funzione Calcola (senza passargli i parametri) dovresti poi ottenere il risultato.
    In codice:

    codice:
        Private _x As String
        Public Property x() As Integer
            Get
                Return _x
            End Get
            Set(ByVal Value As Integer)
                _x = Value
            End Set
        End Property
    
        Private _y As Integer
        Public Property y() As Integer
            Get
                Return _y
            End Get
            Set(ByVal Value As Integer)
                _y = Value
            End Set
        End Property
    
    
    Public Sub New()
     Me._x = 0 (o un valore di default)
     Me._y = 0
    End Sub
    
    
    Public Function Calcola() as Integer
         Return _x + _y
    End Function
    e nella pagina:

    codice:
     Dim objClasse as New Classe
     objClasse.x = 10
     objClasse.y = 5
     Dim risultato as Integer = objClasse.Calcola()

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    16
    ti ringrazio tantissimo...avevo proprio bisogno di un chiarimento del genere...
    approfitto ancora della tua disponibilità:
    se oltre al risultato del calcolo volessi passare anche errore=1 o 0 per sapere se ha riportato errore e desc_errore per riportare la descrizione dell'errore, come mi devo comportare?

    Sono altre due proprietà queste? come x e y?

    Grazie

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    le classi sono delicate, non difficili da capire, ma ci vuole un po' di pazienza per impadronirsene.

    Io avrei forse fatto così
    codice:
    Public Class miaclasse
        Public Shared Function calcola(ByVal x As Double, ByVal y As Double) As Double
            Return x + y
        End Function
    
    End Class
    richiamata così:
    codice:
            Dim x As Double = 10
            Dim y As Double = 10
    
            Dim Risultato As Double = miaclasse.calcola(x, y)
    
            Me.Response.Write(Risultato)
    Pietro

  5. #5
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    sottoscrivo cio' che dice Pietro...Ci sono modi e modi di progettare una classe, dipende da tante cose (ad esempio, la dimensione iniziale dell'applicazione da sviluppare, le tipologie di calcoli..etc...etc....c'e' tanta tanta letteratura in merito, per decidere, sempre per esempio, se progettare metodi di istanza o metodi di classe [cioè metodi da richiamare dopo aver istanziato un oggetto di tipo 'tuaclasse' o metodi di classe, cioè shared, richiamabili direttamente].......)

    per quanto riguarda la gestione di un eventuale errore generato all'interno della classe, il framework ti mette a disposizione le eccezioni.

    cioe':
    codice:
    Public Function Calcola() as Integer
    Try
         Return _x + _y
    Catch errore as Exception
         Throw errore
    End Try
    End Function
    e dalla pagina che usa la classe:
    codice:
    Try
     Dim objClasse as New Classe
     objClasse.x = 10
     objClasse.y = 5
     Dim risultato as Integer = objClasse.Calcola()
    Catch ex as Exception
     Response.Write(ex.Message)
    End Try
    Ma è una argomento delicato e dovresti approfondirlo (tipologie di eccezioni, costruzione di eccezioni personalizzate, tracing, sub centralizzate nel global e nelle singole pagine etc)

    Per vedere la lista dei namespace delle eccezioni disponibili nel framework vai sul menu Debug > Eccezioni. Nell'esempio che ti ho scritto ho usato quella generica (la classe Exception), ma ce ne sono tantissime, dipendentemente dal tipo di operazioni che stai tentando di eseguire.

    Spero di esserti stato d'aiuto...

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    16
    Grazie ad entrambi,
    non ci avevo pensato che l'errore lo potevo gestire in questo modo...leggendolo direttamente nella pagina aspx.

    Devo sicuramente colmare la mia lacuna sulle classi, però ogni volta che analizzo il codice scritto dai miei colleghi programmatori, sulle classi, ognuno fa a modo suo e, quindi non capisco quando devo utilizzare la soluzione indicata da pietro e quando quella con indicata da djciko

    Certo a me risulta più semplice la soluzione senza utilizzo di proprietà, ma vorrei sapere quando utilizzare l'una o l'altra


  7. #7
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    ogni gruppo ha il suo modo di sviluppare. esistono gli standard, ma purtroppo è soltanto letteratura. La programmazione è anche filosofia, per certi versi.

    Alla fine, dovresti seguire le linee guida di chi dirige il progetto, o se non c'e' nessuno in queste veci, quelle che tu ritieni più giuste per il tuo livello di padronanza del tutto....

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.