Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883

    (java) Scelta dei package

    Ho un'applicazione swing composta da molti interfacce utente
    Queste interfacce estendono una jdialog o un jpanel e implementano ActionListeners. Volevo sapere qual è, secondo voi il modo migliore (in termini di manutenzione e leggibilità di codice) per sviluppare queste classi

    Supponiamo di voler realizzare un pannello di opzioni

    First solution
    Per ogni interfaccia utente realizzo due classi,
    La prima classe extends jpanel:

    package com.myapp.graphics.OptionPanel (com.myapp.graphics.InfoPanel ecc.. )
    public class OptionPanel extends JPanel {
    //code
    }

    La seconda classe implements Actionlisteners:

    package com.myapp.listeners.OptionListener (com.myapp.graphics.InfoListener ecc.. )
    public class OptionListener implements ActionListeners{
    //code
    }

    Second solution
    Realizzo una sola classe che rappresenta il mio pannello di opzioni nel seguente modo:

    package com.myapp.gui.OptionMenu
    public class OptionMenu extends JPanel implements ActionListeners{
    //code
    }


    Vantaggi della prima soluzione
    Tengo separata la logica funzionale dalla rappresentazione grafica,
    Svantaggi
    Più codice da scrivere perchè devo far dialogare tra loro le due classi e quindi peggior leggibilità del codice


    Secondo soluzione
    Vantaggi: semplicità nella scrittura del codice da parte del programmatore
    Svantaggi: non separo la logica funzionale dall'aspetto grafico


    Delle due soluzioni secondo voi qual è la migliore? ci sono altre soluzioni?

  2. #2
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Io direi la seconda soluzione, meno cervellotica e più chiara.
    Ciao
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    altri consigli?

  4. #4
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Io preferisco la seconda soluzione, + adatta soprattutto nel caso in cui puoi raccogliere le varie funzionalità del programma in delle classi completamente svincolate dall'interfaccia (diciamo "classi funzionali"), e che offrono dei metodi per eseguire determinate azioni; queste classi non dovrebbero neanche implementare ActionListener. Le classi che realizzano l'interfaccia dovrebbero implementare ActionListener e invocare gli opportuni metodi delle classi funzionali quando ricevono un evento dell'utente. Una stessa funzionalità potrebbe ad esempio essere richiesta dall'utente per mezzo di un altro componente grafico che non genera ActionEvent, ma un altro tipo di evento; in questo modo le classi funzionali non devono preoccuparsi di come avviene l'interazione con l'utente, ma si limitano ad offrire dei metodi che possono essere invocati all'occorrenza. Ovviamente non c'è una regola migliore di un'altra, da preferire in assoluto; questa linea di progettazione aumenta la flessibilità dell'applicazione e nel caso di grosse applicazioni ne aumenta la leggibilità ancorchè diminuirla, ed è da preferire se l'spetto della progettazione è fondamentale nello sviluppo dell'applicazione. Viceversa nel caso di piccole applicazioni in cui non ci siano delle classi che offrono le funzionalità richieste dall'interfaccaia, e non sia necessario separarle dalla grafica, può essere convenitente la seconda soluzione.

    Ciao.

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.