Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [JAVA] Interfacce

  1. #1

    [JAVA] Interfacce

    Ho sempre creduto, ingenuamente, che le Interfacce in Java fossero uno strumento per implementare l'ereditarietà multipla.

    In alcune slides che ho letto viene riportata questa definizione:

    Le interfacce possono:
    migliorare la manutenibilità di sistemi software attraverso:
     - Riduzione dell’accoppiamento (“coupling”) fra classi
    - miglioramento della coesione di ciascuna classe
     - Aumento della riusabilità delle classi

    Cosa si intende?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    45
    Ciao volendo un pò interpretare a modo mio penso che per quanto riguarda il coupling effettivamente viene ridotto in quanto la dipendenza di una classe dalla sua interfaccia non è strettissima, l'interfaccia fornisce un involucro di riferimento, da ciò ne consegue che la riusabilità della classe che implementa quell'interfaccia risulta maggiore (in quanto non strettamente dipendente dalle scelte fatte dall'interfaccia), per il punto centrale non riesco a capire il miglioramento della coesione forse un'interfaccia più metodi semplifica il modo di organizzare le classi....

    Spero che qualcosina si sia capita...
    Ciao, ivanet.
    ivanet

  3. #3
    Da quello che so io, molto poco a dire il vero, l'interface, in Java, non serve solo ad implementare l'ereditarietà multipla.

    Mettiamo di avere un database.

    Ho una prima classe (chiamiamola A)nella quale vengono scritti dei metodi che eseguono delle query su tale database.
    C'è un'associazione tra la classe A e una classe B, che esegue FORWARDING (si scrive così???), con navigabilità dalla classe B alla classe A.
    Sia la classe A che la classe B implementano la stessa interface, scrivendo i metodi di query sul database.
    Ma mentre la classe A ha il vero e proprio codice delle query, la classe B si limita a richiamare le funzioni di A.
    Esiste poi una classe, detta business class, chiamata C, la quale ha un associazione con la classe B. E' la classe che è manipolata direttamente dall'utente che intenda accedere al database.
    Quello che ci è stato spiegato è che, aggiornando questo servizio virtuale, il client non si accorge delle modifiche perchè la business class non viene toccata: qualsiasi tipo di modifica opera solo sulle classi A e\o B.

    E l'unico modo di creare tutto questo si effettua con le interfacce.

    E'giusto quello che ho detto o è una clamorosa baggianata???

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    45
    Ciao allora, rappresentando con C il client ed estendendo B che implementa I ed estende A che a sua volta implementa I, si rende del tutto trasparente a C l'implementazione, cioè ciò che deve conoscere è soltanto il servizio messo a disposizione da B che ingloba caratteristiche di A e la cui formazione viene definita (di carattere generale) dall'interfaccia.
    In definitiva C non si deve preoccupare di nulla.
    In Java l'ereditarietà multipla viene gestita per mezzo delle interfacce ma allo stesso tempo l'interfaccia determina (per chi la implementa) quello che è definito come comportamento della classe, la quale lo modellerà a proprio piacimento. Il client si chiederà soltanto: "quali operazioni posso fare?" sicuramente non gli importa nulla di come viene effettuata l'operazione, ciò lo rende non strettamente dipendente dall'implementazione.

    Inoltre se lasciamo inalterata l'interfaccia e modifichiamo solo i comportamenti interni esprimiamo al massimo della semplicità l'adattabilità e la riusabilità di ciò che abbiamo realizzato senza perderci in ulteriori modifiche in altre classi....

    Spero di essere stato chiaro....

    P.S.
    Forwarding ---> Ok

    ciao, ivanet
    ivanet

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.