Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,584

    [vb.net] capire le interfacce

    salve a tutti
    sto leggendo un libro su asp.net
    il capitolo che sono arrivato parla delle interfacce

    si si,
    funzionano in questo modo...
    hanno l'eredità...
    il polimorfismo...
    le richiami in quest'altro modo.....
    MA A CHE SERVONO????? si insomma...IN MODO PRATICO???
    IN CHE MODO MI AGEVOLA ??

    ma porc!! 47 euro di libro e non sa spiegarmi la cosa più basilare!!!
    si, io lo leggo, ma se poi non capisco a che mi può essere utile ciao ciao

    per favore
    ho speso molto per questo libro, qualcuno mi puo' dire in modo semplice l'utilità?
    grazie
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Con tutta sincerità, visto che l'argomento è specialistico e non proprio semplice, credi davvero che si possa trattare con quattro righe qui? :master: Io ho speso 70€ e da quello che ho capito, comunque, è interessante conoscere le interfacce del framework e imparare ad implementarle.
    Prova per esempio a implementare le interfacce IComparable, IComparer, ICloneable, IDisposable, IEnumerator, IEnumerable... e poi se ne parla
    Pietro

  3. #3
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,584
    ok ascolta

    facciamo un esempio
    io ho diverse classi :"CLS_Clienti" e "CLS_Ordini"
    che gestiscono ogniuna una tabella del database
    sapendoche contengono i seguenti metodi:"lista","insert","update","delete"

    quale vantaggio avrei ad usare le interfacce?

    grazie
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  4. #4
    Facciamo un esempio:

    tu hai la tua classe CLS_Ordini che ha che ne so, la funzione GestisciOrdine. A questo punto crei il tuo programma che funziona solo con la tua classe CLS_Ordini. Domani il tuo cliente arriva e ti dice che lui ha bisogno di un'altra classe CLS_Ordini, che ha la stessa funzione GestisciOrdine, ma che fa una cosa completamente differente. Allora ecco che ti sarebbero venute in aiuto le interfacce, a pensarci prima...

    Tu crei una gerarchia del tipo:
    Interfaccia IOrdini che contiene la definizione della funzione GestisciOrdine. Poi crei due classi, CLS_Ordini_1 e CLS_Ordini_2 che implementano entrambi l'interfaccia IOrdini.

    Ad ogni funzione che prima lavorava solo con CLS_Ordini dici di lavorare con IOrdini, e grazie al polimorfismo, in base all'istanza di CLS_Ordini (1 o 2) con cui lavorerà, lui farà il suo lavoro diversamente.

    Non so se mi sono spiegato...
    Cerco ombrello vecchio, nuovo, moderno o antidiluviano; purché protegga da una pioggia che vien giù come Dio la manda. Fate presto che ho l’acqua alla gola. (Noè)

    C# programming and other stuffs

  5. #5
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,584
    grazie ChipDB
    ora vedo uno spiraglio di luce

    ora vedo di lucidare la situazione:
    si ok, il cliente mi chiede che CLS_Ordini faccia una cosa diversa...quindi tu dici,basta cambiare interfaccia
    ma l'interfaccia non fa altro che darti le definizioni dei metodi da seguire
    per fargli fare qualcosa di diverso ai metodi della classe bisogna per forza di cose cambiare il codice interno :master:


    grazie
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  6. #6
    Prego! Anche se forse allora non mi sono spiegato

    Tu l'interfaccia IOrdini la lasci per l'eternità li dove sta, non la cambi mai... sono le classi che la implementano che cambiano. Faccio un esempio un pò più pratico ma elementare. Tu hai la tua interfaccia IMacchina che ha acceleratore, freno, cambio e frizione. Poi hai la classe Cinquecento e la classe Ferrari F399 (Suchmaker!!) che implementano entrambi l'interfaccia IMacchina, perchè entrambi hanno le funzioni acceleratore, freno, cambio e frizione. Vuoi cambiare macchina, che ne so, ti prendi una Audi TT, ma l'interfaccia è sempre quella: acceleratore, freno, cambio e frizione...

    Sono stato spiegato? :master:
    Cerco ombrello vecchio, nuovo, moderno o antidiluviano; purché protegga da una pioggia che vien giù come Dio la manda. Fate presto che ho l’acqua alla gola. (Noè)

    C# programming and other stuffs

  7. #7
    come dice chipdb, è una questione di organizzazione logica del codice.
    implementare un'interfaccia significa garantire che la classe che la implementa abbia un certo numero di metodi.
    pensa un attimo all'interfaccia IDataReader per esempio.
    metti che tu crei una classe che ha un costruttore che riceve in ingresso un IDataReader e ha dei medoti che sono, che so:
    StampaRecordset
    RiempiDataset
    VattelaPesca

    tu, proprio perché quella tua classe riceve in ingresso un oggetto generico IDataReader, sei sicuro che avrà determinati metodi che puoi usare all'interno (Read, NextResult, ecc) che ti permettono di compiere determinate operazioni.
    Poi alla tua classe potrai comunque passare un SqlDataReader, un OracleDataReader, un ODBCDataReader, ecc, ma il fatto che ognuna di queste classi implementa l'interfaccia IDataReader ti assicura che abbiano i metodi minimi di cui tu hai bisogno nella tua classe e fa si che la tua classe funzioni passandogli ognuno di questi oggetti.

    xxx

  8. #8
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,584
    Originariamente inviato da Alethesnake
    come dice chipdb, è una questione di organizzazione logica del codice.
    implementare un'interfaccia significa garantire che la classe che la implementa abbia un certo numero di metodi.

    bene, mi sono accorto che Pietro09 in un certo senso aveva ragione, sembrerà strano ma 47 euro per un libro sono pochi

    uhm organizzazione del codice, beh in effetti quando si lavora in un team, potrebbe essere molto utile in quanto a chi passo l'interfacia, che deve creare la classe cosi' sono sicuro che utilizza tutti i metodi
    fino ad ora se mi serviva aggiungere un metodo non andavo a dichiarare interfacce o aggiungere nuove dichiarazioni all'interfaccia, mettevo semplicemente il nuovo metodo nella classe e via a buttare giù codice ,infatti come detto, non lavoro in team


    ho buttato giu' un po' di codice, giusto per districarmi
    codice:
    Class ClasseProva
        Implements Audi
        Sub Accelera() Implements Audi.Accelera
            '...codice
        End Sub
        Sub frena() Implements Audi.Frena
    
        End Sub
        Sub AltraSub()
    
        End Sub
    End Class
    Interface Audi
        Sub Accelera()
        Sub Frena()
    End Interface
    Interface Ferrari
        Inherits Audi
        Sub Turbo()
    End Interface
    in effetti, ho provato l'ereditarietà, Ferrari ha i medodi di audi, si penso di aver colto il seme

    mi consigliate di usare le interfacce nonostante io non lavori in team?
    poi avendo delle routine che vanno a leggere nel database, quindi ogni classe va a leggere in una tabella diversa, mi riesce difficile concepire una struttura gerarchica con le interfacce
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  9. #9
    Con il tuo esempio hai colto nel segno!

    Ti dico... io lavoro da solo e le interfacce le uso comunque... Come dice il mio professore di ingegneria del software... dipende. Dipende da quello che devi fare, come lo vuoi/devi fare e altro... Se vedi che in un certo momento ti sarebbe utile una interfaccia, creala. E' utile ad esempio per verificare la correttezza logica in quanto una interfaccia non implementa di per sé i metodi... Poi c'è il discorso delle classi astratte, ma è tutto un altro mondo!

    Se poi posso darti un consiglio, la cosa migliore quando si crea un programma è progettare prima una linea guida, poi dopo passare alla programmazione vera e propria. Questo passo serve proprio per identificare eventuali ereditarietà che possono sopraggiungere con conseguenti polimorfismi, interfacce, classi ecc.

    ciao
    Cerco ombrello vecchio, nuovo, moderno o antidiluviano; purché protegga da una pioggia che vien giù come Dio la manda. Fate presto che ho l’acqua alla gola. (Noè)

    C# programming and other stuffs

  10. #10
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Guarda questo link, spiega in modo abbastanza chiaro, per esempi con il mondo degli animali, cosa sono le classi astratte e poi le interfacce (per una finalità java, ma i concetti sono quelli)

    http://nicchia.ingce.unibo.it/oop/we...t-classes.html

    ps: non credo che c'entri il lavorare in team o meno. Si tratta di organizzazione del codice come si diceva sopra, per la classificazione delle entità che ci sono in gioco...

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.