Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2009
    residenza
    Roma
    Messaggi
    371

    esempio java con interfaccia

    ciao ragazzi, sto studiando java e cercando del materiale ho trovato questa slide con un esempio riguardo la costruzione di una struttura universitaria
    http://www.dsi.uniroma1.it/~parisi/S...ierarchies.pdf

    inizia suddividendo il personale in Docenti(Faculty) e Tecnico Amministrativo(Staff) i quali vanno a diventare sotto-classi di una superclasse UnivEmployee
    nella slide 7 dice che a tutto il personale viene garantito l’uso di posta elettronica perciò inserisce il metodo mailTo in UnivEmployee.

    La cosa che non capisco però è nella slide 9, infatti è scritto:
    • L’accesso alla posta elettronica è una proprietà generale
    • Possiamo concettualizzare questa proprietà:
     una interfaccia
    e detto questo inserisce il metodo nell'interfaccia EmailInt la quale viene implementata da UnivEmployee, a cosa serve usare un'interfaccia in questo caso?

    Spero di essermi spiegato bene, comunque è molto semplice capire la struttura guardando la slide 10

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Un domani potresti dover creare una classe che modella gli studenti dell'università. E' probabile che anche agli studenti possa essere consentito l'invio delle mail... di conseguenza anche gli studenti implementeranno l'interfaccia EmailInt.

    Ora, potresti aver bisogno di implementare un servizio di invio delle mail. A questo servizio non dovrebbe interessare nulla di quale sia l'effettiva classe che effettua l'invio della mail (che sia uno studente o un professore)... a questo servizio dovrebbe solo interessare il fatto che qualunque classe gli venga passata sia in grado di inviare mail. Come si fa, se non esistono le interfaccie? L'unica soluzione possibile sarebbe quella di prevedere tanti metodi quante sono le classi che possono inviare mail. Questo è poco pratico. Se un domani nascesse la necessità di avere una nuova classe, anch'essa in grado di inviare mail dovresti riprendere in mano il servizio, aggiungere un nuovo metodo, implementarlo (probabilmente nello stesso identico modo degli altri)... sarebbe un lavoro ridondante. E' più logico creare un unico metodo che riceva come parametro una qualunque classe che sia in grado di inviare mail... tanto lo sappiamo come si chiama il metodo:

    codice:
    public class EmailService {
       public void sendMailTo(EmailInt mittente, Destinatario dest) {
          mittente.mailTo( dest );
       }
    }
    Questo metodo riceve come parametro qualunque oggetto di qualunque classe che implementi l'interfaccia EmailInt... indipendentemente da quale sia concretamente questa classe e da come sia concretamente implementato il metodo "mailTo()": al servizio non interessa niente; a lui basta che il mittente sia in grado di inviare mail e questa è una "caratteristica" che può essere comune a più tipi di oggetto. Quindi ha senso che sia riflessa da un'interfaccia.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2009
    residenza
    Roma
    Messaggi
    371
    quindi in pratica la scelta di usare un'interfaccia in questo caso è basata sulla previsione di eventuali modifiche o aggiunte al sistema creato...

    grazie mille, ora mi è chiaro

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    No... la previsione la puoi fare in base alle esperienze.

    L'uso o meno di un'interfaccia deriva dal buon senso nella progettazione. Il "poter inviare una mail" è una caratteristica "trasversale": ovvero, può essere una caratteristica di oggetti di tipo diverso (un professore può inviare mail, uno studente può inviare mail, l'impiegato della segreteria può inviare mail). Non è una caratteristica intrinseca dei soli professori, quindi non ha senso renderla parte del contratto previsto dalla classe professore; è una caratteristica trasversale, quindi ha senso che vi sia un'interfaccia (in modo che classi di tipo diverso possano avere tale caratteristica).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2009
    residenza
    Roma
    Messaggi
    371
    ah ok, ora penso di aver capito, diciamo che per intuire quando un metodo conviene inserirlo in un'interfaccia ci vuole abilità e molta esperienza...

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.