Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [VB6] - Interfacce vs [VB.NET] - Interfacce

    Ciao ragazzi, ho qualche difficoltà nella comprensione delle interfacce.
    Mi pare che in VB.NET nell'interfaccia si dichiarino le proprietà e i metodi che verranno utilizzati dalla classe che la implementa, mentre in VB6 all'interno dell'interfaccia bisogna scrivere anche il codice eseguibile.

    Es: VB.NET

    'all'interno interfaccia
    function Inverti(ByVal Nome, ByVal Cognome) as string

    VB6
    function Inverti (ByVal Nome, ByVal Cognome) as string
    Inverti = Cognome & ", " & Nome

    end function

    qualcuno mi sa aiutare?

    GRAZIE CIAO

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Ho abbandonato VB6 da tempo, ma non ricordo fossero presenti le interfacce.

    In ogni caso, se è necessario "farcire" i metodi di un'interfaccia...allora non si tratterebbe più di un'interfaccia, no?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    riusciresti a spiegarmi un po il concetto e magari cosa significa interfaccia per gli oggetti exe active x?
    grazie mille
    ciao

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    In generale, si indica con il termine interfaccia le caratteristiche pubbliche di un oggetto, cioè gli attributi e le operazioni dei quali il programmatore può disporre nell'attività di utilizzo dell'oggetto stesso.

    In riferimento ad un controllo ActiveX, l'interfaccia è la struttura del controllo che vedi quando fai uso del controllo stesso, cioè le proprietà e i metodi che offre.

    Un'altra accezione del termine interfaccia si riferisce alla possibilità, in alcuni linguaggi di programmazione (Delphi, Java, C# e altri ancora) di creare una classe astratta; è un concetto strettamente legato alla programmazione orientata agli oggetti secondo il quale è possibile realizzare classi (come un controllo) che hanno metodi (funzioni e procedure) privi di implementazione; sono in definitiva uno scheletro che può essere implementato da uno o più classi che dichiarano di fornire tale implementazione.

    Vi sono molti vantaggi derivanti dall'uso delle interfacce, quali la possibilità di passare come parametro di una procedura, funzione o metodo il riferimento ad un oggetto che appartenga ad una classe in grado di implementare un'interfaccia; esemplificando, ciascuna classe che implementa un'interfaccia dichiara di essere "in grado di fare qualcosa" implementando i metodi di tale interfaccia; indipendentemente dalla gerarchia di classi alla quale appartiene la classe in esame, qualsiasi punto in cui venga richiesto un oggetto in grado di fare una determinata cosa, se abbiamo a disposizione un oggetto appartenente ad una classe che implementa l'interfaccia richiesta allora possiamo passare tale oggetto come parametro o utilizzarlo in senso generico nel contesto.

    E' più facile da comprendere che da spiegare, per la verità.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    grazie.
    quindi nell'interfaccia io scrivo la dichiarazione dei metododi e delle properietà di una classe?
    es:


    'interfaccia IPRova
    Public function NomeCompleto (Byval Nome as string, Cognome as string) as string

    Public Eta as date

    'nella classe1
    Implements IProva
    Public function NomeCompleto (Byval Nome as string, Cognome as string) as string

    NomeCompleto = Nome & Cognome

    End Function



    'nella classe2
    Implements IProva
    Public function NomeCompleto (Byval Nome as string, Cognome as string) as string

    NomeCompleto = "Sig." & Nome & Cognome

    End Function




    nel seguente modo sarebbe errore?

    'nella classe3
    Implements IProva
    Public function NomeCompleto (Byval Titolo as strin, Byval Nome as string, Cognome as string) as string

    NomeCompleto = titolo & Nome & Cognome

    End Function


    GRAZIE, magari con quelche esempio capisco meglio.
    ciao

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Originariamente inviato da verardoelvis
    quindi nell'interfaccia io scrivo la dichiarazione dei metododi e delle properietà di una classe?
    Esattamente. Soprattutto i metodi, ma qualche linguaggio lascia definire anche le proprietà.

    Originariamente inviato da verardoelvis
    nel seguente modo sarebbe errore? [...]
    Intendi modificare il "prototipo" della funzione (il numero e il tipo di parametri)?
    Non puoi farlo se desideri ridefinire l'interfaccia, a meno che l'interfaccia non includa già un metodo simile nella propria dichiarazione, ma si può fare solo in linguaggi che supportano il meccanismo di overloading (più metodi con lo stesso nome, ma con parametri differenti).

    Originariamente inviato da verardoelvis
    GRAZIE, magari con quelche esempio capisco meglio.
    Fatico un po' a fornire esempi a livello di codice perchè...non programmo in VB6.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    bhè, va bene anche un esempio in qualche altro linguaggio.....conosco sintassi di c e java. C lo conosco meglio, ma non programmando con questo linguaggio....


    Ritornando all'esempio che ho scritto prima...che utilità avrebbe in questo caso l'interfaccia se i prototipi me li devo riscrivere?
    è questo che non capisco, l'utilità.


    grazie mille
    ciao

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Originariamente inviato da verardoelvis
    Ritornando all'esempio che ho scritto prima...che utilità avrebbe in questo caso l'interfaccia se i prototipi me li devo riscrivere?
    è questo che non capisco, l'utilità.
    Le interfacce non servono per scrivere meno, ma hanno una funzionalità specifica nell'OOP (che VB6 non supporta).

    Occorre conoscere i principi dell'OOP per comprendere gli esempi; tuttavia, proviamo a indicarne uno.

    Supponi di aver tanti controlli visuali: le classi dai quali essi derivano sono diverse a seconda della natura del controllo (pulsante, casella di testo e così via).

    E' possibile definire un'interfaccia ICanPaint, ad esempio, che abbia il metodo Paint; tale interfaccia rappresenta un oggetto in grado di tracciarsi sullo schermo.

    Ciascuna classe che rappresenta un controllo, completamente diverso l'uno dall'altro, può implementare tale interfaccia definendo un "corpo" per il metodo Paint e scrivendo al suo interno le istruzioni necessarie per il disegno.

    Supponendo di avere nella gestione del video una routine che permetta di tracciare un controllo sullo schermo passandolo come parametro, che tipo dovrebbe essere utilizzato per riuscire ad identificare tutti i controlli in grado di disegnarsi? Se il tipo fosse un Button, si escluderebbero TextBox e gli altri controlli, non compatibili.

    Basta introdurre un parametro per il metodo Paint di un ipotetico oggetto Screen che sia di tipo ICanPaint: significa che, indipendentemente dall'oggetto che viene passato, tralasciando la classe a cui appartiene, se tale oggetto implementa l'interfaccia richiesta - cioè definisce i metodi appropriati, in questo caso Paint - è possibile chiamare tali metodi.

    Per scriverla in una specie meta codice...
    codice:
    Interface ICanPaint
      Method Paint()
    End Interface
    
    Class Button Implements ICanPaint
      Method Paint()
        ...
      End Method
    End Class
    
    Class TextBox Implements ICanPaint
      Method Paint()
        ...
      End Method
    End Class
    
    ...
    
    Class Screen
      Method PaintControl(APaintableControl: ICanPaint)
        APaintableControl.Paint()
      End Method
    End Class
    Sostanzialmente, un metodo che richieda come parametro un'interfaccia non discrimina gli oggetti in base alle caratteristiche della classe di appartenenza, ma bensì - prescidendo dalla classe - discrimina gli oggetti per quello che sanno fare.

    Se conosci Java è hai utilizzato Swing gestendo gli eventi attraverso le classi "Listener", dovresti essere già a conoscenza di cosa sia un'interfaccia, a cosa serve, quali vantaggi comporta e come si utilizza.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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 © 2026 vBulletin Solutions, Inc. All rights reserved.