Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 15 su 15
  1. #11
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Ciò che non è chiaro è l'utilizzo che tenti di fare dell'oggetto o dell'interfaccia.

    Fermo restando che il supporto alla OOP da parte di VB6 è alquanto limitato, l'uso delle interfacce consente di definire uno scheletro di metodi che saranno implementati da ciascun oggetto che si basa su di essa.

    Se tu dichiari un'interfaccia e ti aspetti di utilizzare, usando una variabile che appartiene proprio al tipo dell'interfaccia, i metodi specifici della classe a cui appartiene l'oggetto che implementa l'interfaccia, significa che c'è qualche problema nel "disegno" delle classi, cioè nella progettazione e nell'organizzazione dello schema OOP delle classi che devi utilizzare.

    La soluzione è semplice: il disegno è sbagliato. Non c'è modo di fare quanto chiedi, perché quanto chiedi non ha senso se si considerano le ragioni per cui sono state create classi e interfacce.

    Eventualmente, descrivi l'architettura che vuoi realizzare o i motivi per cui vuoi disporre gli elementi in quel modo; è possibile, magari, trovare un disegno OOP che rispetti le tue esigenze senza però andare in contro alle regole base della programmazione ad oggetti, per quanto sia difficile usare questo paradigma con Visual Basic 6.

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

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

  2. #12
    no ho riscritto una fregnaccia...

    riassumendo quello che ho cancellato per scrivere una cavolata, che io sappia questo:

    codice:
    dim x as myInterface
    set x = new Object_that_Implements_myInterface
    e questo:

    codice:
    dim x as new Object_that_Implements_myInterface
    dovrebbero consentirmi di usare in entrambi i casi i metodi descritti nell'interfaccia e implementatin Object_that_Implements_myInterface...però non accade,...

    vabbeh pazienza...mo faccio dei test e poi ti faccio sapere

  3. #13
    Ok,


    Se questa è l'interfaccia:

    codice:
    myInterface:
    
    sub add(obj as string)
    '
    end sub
    
    sub stampa()
    '
    end sub
    e questa la classe che la implementa:

    codice:
    class1:
    
    Implements myInterface
    
    Private pippo As String
    
    Public Sub remove()
    pippo = ""
    End Sub
    
    Private Sub Class_Initialize()
    pippo = ""
    End Sub
    
    Private Sub Class_Terminate()
    pippo = ""
    End Sub
    
    
    Private Sub myInterface_add(obj As String)  'implementazione dell'interfaccia
    Me.add obj
    End Sub
    
    Private Sub myInterface_stampa()             'implementazione dell'interfaccia
    Me.stampa
    End Sub
    
    Public Sub add(obj As String)
    pippo = obj
    End Sub
    
    Public Sub stampa()
    MsgBox pippo
    End Sub

    allora questi due codici sono funzionanti:

    codice:
    codice 1:
    
    dim x as myInterface
    set x=new class1
    
    x.add "ciccio"
    x.stampa
    
    
    
    codice 2:
    
    dim x as class1
    set x=new class1
    
    x.add "ciccio"
    x.stampa
    ed è quello che uno si aspetterebbe in una normale POO...in quella di VB6 evidentemente bisogna inventare duplicando un pò di codice...

  4. #14
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Onestamente, non ho ancora capito il problema...
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  5. #15
    Originariamente inviato da alka
    Onestamente, non ho ancora capito il problema...
    la mia domanda era, in soldoni (ammetto di non essere bravo a spiegarmi): sono io che sbaglio e che duplico codice e metodi oppure non ho capito come VB6 gestisce le interfacce? probabilmente duplicare i metodi in modo che lo stesso lavori sia con l'interfaccia che con l'oggetto specifico è l'unico metodo...

    per farti un esempio, ho scritto l'interfaccia....16 proprieta e 10 metodi.... per le 16 proprieta ho dovuto scrivere 64 property get/let, 32 per i metodi propri dell'oggetto e 32 in implementazione a quello dichiarato nell'interfaccia...e 20 metodi...insomma, snervante dal punto di vista di scrittura e poi per rileggere tutto quello che ho scritto ci metto 10 minuti...

    stavo solo cercando di capire se c'è un metodo migliore


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.